Package pilas :: Module fondos
[hide private]
[frames] | no frames]

Source Code for Module pilas.fondos

  1  # -*- encoding: utf-8 -*- 
  2  # Pilas engine - A video game framework. 
  3  # 
  4  # Copyright 2010 - Hugo Ruscitti 
  5  # License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html) 
  6  # 
  7  # Website - http://www.pilas-engine.com.ar 
  8   
  9  import pilas 
 10   
 11   
12 -class Fondo(pilas.actores.Actor):
13
14 - def __init__(self, imagen):
18
20 fondos = [x for x in pilas.escena_actual().actores if x.es_fondo()] 21 a_eliminar = [] 22 for f in fondos: 23 a_eliminar.append(f) 24 25 for fondo in a_eliminar: 26 fondo.eliminar()
27
28 - def es_fondo(self):
29 return True
30
31 -class Volley(Fondo):
32 "Muestra una escena que tiene un fondo de pantalla de paisaje." 33
34 - def __init__(self):
35 Fondo.__init__(self, "fondos/volley.jpg")
36
37 -class Nubes(Fondo):
38 "Muestra un fondo celeste con nubes." 39
40 - def __init__(self):
41 Fondo.__init__(self, "fondos/nubes.png")
42
43 -class Pasto(Fondo):
44 "Muestra una escena que tiene un fondo de pantalla de paisaje." 45
46 - def __init__(self):
47 Fondo.__init__(self, "fondos/pasto.png")
48
49 -class Selva(Fondo):
50 "Muestra una escena que tiene un fondo de pantalla de paisaje." 51
52 - def __init__(self):
53 Fondo.__init__(self, "fondos/selva.jpg")
54 55
56 -class Tarde(Fondo):
57 "Representa una escena de fondo casi naranja." 58
59 - def __init__(self):
60 Fondo.__init__(self, "fondos/tarde.jpg") 61 self.y = 40
62 63
64 -class Espacio(Fondo):
65 "Es un espacio con estrellas." 66
67 - def __init__(self):
68 Fondo.__init__(self, "fondos/espacio.jpg")
69
70 -class Noche(Fondo):
71 "Muestra una escena que tiene un fondo de pantalla de paisaje." 72
73 - def __init__(self):
74 Fondo.__init__(self, "fondos/noche.jpg")
75
76 -class Color(Fondo):
77 "Pinta todo el fondo de un color uniforme." 78
79 - def __init__(self, color):
80 Fondo.__init__(self, "invisible.png") 81 self.color = color 82 self.lienzo = pilas.imagenes.cargar_lienzo()
83
84 - def dibujar(self, motor):
85 if self.color: 86 self.lienzo.pintar(motor, self.color)
87 88
89 -class Desplazamiento(Fondo):
90 """Representa un fondo formado por varias capas (o actores). 91 92 En fondo de este tipo, ayuda a generar un efecto de profundidad, 93 de perspectiva en tres dimensiones. 94 """ 95
96 - def __init__(self, ciclico=True):
97 "Inicia el objeto, dando la opción de simular que el fondo es infinitio" 98 99 Fondo.__init__(self, "invisible.png") 100 self.posicion = 0 101 self.posicion_anterior = 0 102 self.capas = [] 103 self.velocidades = {} 104 self.escena.mueve_camara.conectar(self.cuando_mueve_camara) 105 self.ciclico = True 106 107 if ciclico: 108 self.capas_auxiliares = []
109
110 - def agregar(self, capa, velocidad=1):
111 x, _, _, y = pilas.utils.obtener_bordes() 112 capa.fijo = True 113 capa.izquierda = x 114 115 self.capas.append(capa) 116 self.velocidades[capa] = velocidad 117 118 if self.ciclico: 119 copia = capa.duplicar() 120 copia.y = capa.y 121 copia.z = capa.z 122 copia.fijo = True 123 copia.imagen = capa.imagen 124 self.capas_auxiliares.append(copia) 125 copia.izquierda = capa.derecha 126 self.velocidades[copia] = velocidad
127
128 - def actualizar(self):
129 if self.posicion != self.posicion_anterior: 130 dx = self.posicion - self.posicion_anterior 131 self.mover_capas(dx) 132 self.posicion_anterior = self.posicion
133
134 - def cuando_mueve_camara(self, evento):
135 dx = evento.dx 136 137 # Hace que las capas no se desplacen naturalmente 138 # como todos los actores. 139 #for x in self.capas: 140 # x.x += dx 141 142 # aplica un movimiento respetando las velocidades. 143 self.mover_capas(dx)
144
145 - def mover_capas(self, dx):
146 for capa in self.capas: 147 capa.x -= dx * self.velocidades[capa] 148 149 if self.ciclico: 150 for capa in self.capas_auxiliares: 151 capa.x -= dx * self.velocidades[capa]
152
153 -class Plano(Fondo):
154
155 - def __init__(self, ciclico=True):
156 Fondo.__init__(self, "plano.png")
157
158 - def dibujar(self, painter):
159 painter.save() 160 x = pilas.mundo.motor.camara_x 161 y = -pilas.mundo.motor.camara_y 162 163 ancho, alto = pilas.mundo.motor.obtener_area() 164 painter.drawTiledPixmap(0, 0, ancho, alto, self.imagen._imagen, x % 30, y % 30) 165 166 painter.restore()
167