Acceso al loop principal de pilas

Hola a todos,

Esta es mi primera consulta en el foro y estoy un poco perdido.

Quería saber si existe tal como cosa como un método “loop” o similar donde pueda comprobar si está sucediendo algo externo a pilas. Por ejemplo, hubo un cambio en un archivo.

En particular yo estoy haciendo un juego que se controla por red, entonces, cuando un jugador se conecta debo poder decirle a pilas que cree un personaje con un determinado nombre y propiedades.

Entonces, ¿cómo me comunico con pilas para que haga eso una vez que hice pilas.ejecutar()?

Hola @humitos, se me ocurren dos formas de encarar lo que nos estás comentando.

Una opción es hacer comprobaciones rápidas. El loop de pilas se ejecuta 60 veces por segundo, si las comprobaciones que buscas realizar son inmediatas, podrías codificarlas en el método actualizar de un actor personalizado.

Por ejemplo, un actor invisible, que acceda a una lista de datos a procesar y los consuma. Algo así:

datos_a_procesar = []

class Procesador(pilasengine.actores.Actor):

    def iniciar(self):
        self.imagen = "invisible.png"

    def actualizar(self):      # Se llamará 60 veces por segundo
        global datos_para_procesar

        if datos_para_procesar:
            dato = datos_para_procesar.pop()
            # hacer algo con "dato"


pilas.actores.vincular(Procesador)
pilas.actores.Procesador()

Algo así se hace cuando se quiere mover un actor por la pantalla con el teclado, se lee el estado del teclado muchas veces por segundo en el método actualizar:

class UnActorPersonalizado(...

    def actualizar(self):
        if pilas.control.izquierda:
            self.x -= 5
            self.espejado = True
        if pilas.control.derecha:
            self.x += 5
            self.espejado = False

La otra opción es crear un evento personalizado. Los eventos son más convenientes para generar una respuesta a algo que podría llegar ocasionalmente. Por ejemplo: una conexión de red, la modificación de un archivo, la conexión de un dispositivo etc… es decir, cosas que no sería muy eficiente chequearlas 60 veces por segundo o simplemente son lentas de verificar o externas.

Fijate que en el manual hay un par de ejemplos sobre eventos, creo que viendo esta página vas a verlo como una opción viable para el control de red que estás haciendo:

http://manual.pilas-engine.com.ar/eventos/#creando-tus-propios-eventos

PD: hay un ejemplo de eventos personalizados acá por si te sirve de referencia.

¡Abrazo!