hugoruscitti/pilas

View on GitHub
pilasengine/actores/particula.py

Summary

Maintainability
B
6 hrs
Test Coverage
# -*- encoding: utf-8 -*-
# pilas engine: un motor para hacer videojuegos
#
# Copyright 2010-2014 - Hugo Ruscitti
# License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html)
#
# Website - http://www.pilas-engine.com.ar

from pilasengine.actores.actor import Actor

class Particula(Actor):

    def __init__(self, pilas, emisor, x, y, dx, dy, imagen, vida):
        Actor.__init__(self, pilas, x, y)
        self.emisor = emisor
        self.imagen = imagen
        self.dx = dx
        self.dy = dy

        self.vida = vida * 1000 # expresada en segundos
        self.contador = 0

        self.escala_fin = self.escala
        self.transparencia_fin = self.transparencia
        self.rotacion_fin = self.rotacion
        self.aceleracion_x = 0
        self.aceleracion_y = 0
        self.figura_de_colision = None

        if self.emisor:
            self.z = self.emisor.z

    def definir_escala_fin(self, valor):
        self._incremento_escala = (valor - self.escala) / ((self.vida / 1000.0) * 60.0)

    escala_fin = property(None, definir_escala_fin)

    def definir_transparencia_fin(self, valor):
        self._incremento_transparencia = (valor - self.transparencia) / ((self.vida / 1000.0) * 60.0)

    transparencia_fin = property(None, definir_transparencia_fin)

    def definir_rotacion_fin(self, valor):
        self._incremento_rotacion = (valor - self.rotacion) / ((self.vida / 1000.0) * 60.0)

    rotacion_fin = property(None, definir_rotacion_fin)

    def definir_aceleracion_x(self, valor):
        self._incremento_aceleracion_x = valor / ((self.vida / 1000.0) * 60.0)

    aceleracion_x = property(None, definir_aceleracion_x)

    def definir_aceleracion_y(self, valor):
        self._incremento_aceleracion_y = valor / ((self.vida / 1000.0) * 60.0)

    aceleracion_y = property(None, definir_aceleracion_y)

    def actualizar(self):
        self.contador += 16   # llega a 1000 en un segundo

        self.dx += self._incremento_aceleracion_x
        self.dy += self._incremento_aceleracion_y

        self.x += self.dx
        self.y += self.dy

        self.escala += self._incremento_escala
        self.transparencia += self._incremento_transparencia
        self.rotacion += self._incremento_rotacion

        if self.contador > self.vida:
            # Solo si tiene emisor le avisa que se eliminĂ³.
            if self.emisor:
                self.emisor.se_elimina_particula(self)
            self.eliminar()