Home | Trees | Indices | Help |
---|
|
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 sys 10 import pilas 11 from pilas import pilasversion 12 13 try: 14 import widget_log 15 except ImportError, e: 16 print e 17 pass 18 3537 """Esta clase permite hacer depuraciones visuales. 38 39 La depuracion visual en pilas consiste en poder mostrar informacion 40 que generalmente es invisible a los jugadores. Por ejemplo, donde 41 estan situados los puntos de control, los radios de colision etc. 42 43 Esta clase administra varios modos depuracion, que son los 44 que dibujan figuras geometricas. 45 """ 46183 184 20548 self.modos = [] 49 self.lienzo = lienzo 50 ModoDepurador.grosor_de_lineas = 1 51 self.fps = fps 52 self.posicion_del_mouse = (0, 0)53 57 6163 if self.modos: 64 self._mostrar_cantidad_de_actores(painter) 65 self._mostrar_cuadros_por_segundo(painter) 66 self._mostrar_posicion_del_mouse(painter) 67 self._mostrar_nombres_de_modos(painter) 68 69 for m in self.modos: 70 m.termina_dibujado(motor, painter, self.lienzo)7173 if codigo_tecla == 'F5': 74 self._alternar_modo(ModoWidgetLog) 75 elif codigo_tecla == 'F6': 76 pilas.utils.imprimir_todos_los_eventos() 77 elif codigo_tecla == 'F7': 78 self._alternar_modo(ModoInformacionDeSistema) 79 elif codigo_tecla == 'F8': 80 self._alternar_modo(ModoPuntosDeControl) 81 elif codigo_tecla == 'F9': 82 self._alternar_modo(ModoRadiosDeColision) 83 elif codigo_tecla == 'F10': 84 self._alternar_modo(ModoArea) 85 elif codigo_tecla == 'F11': 86 self._alternar_modo(ModoFisica) 87 elif codigo_tecla == 'F12': 88 self._alternar_modo(ModoPosicion) 89 elif texto_tecla == '+': 90 self._cambiar_grosor_de_bordes(+1) 91 elif texto_tecla == '-': 92 self._cambiar_grosor_de_bordes(-1)93 97 100102 clases_activas = [x.__class__ for x in self.modos] 103 104 if clase_del_modo in clases_activas: 105 self._desactivar_modo(clase_del_modo) 106 else: 107 self._activar_modo(clase_del_modo)108110 instancia_del_modo = clase_del_modo(self) 111 self.modos.append(instancia_del_modo) 112 self.modos.sort(key=lambda x: x.orden_de_tecla())113115 instancia_a_eliminar = [x for x in self.modos 116 if x.__class__ == clase_del_modo] 117 self.modos.remove(instancia_a_eliminar[0]) 118 instancia_a_eliminar[0].sale_del_modo()119121 dy = 0 122 izquierda, derecha, arriba, abajo = pilas.utils.obtener_bordes() 123 124 for modo in self.modos: 125 texto = modo.tecla + " " + modo.__class__.__name__ + " habilitado." 126 self.lienzo.texto_absoluto(painter, texto, izquierda + 10, arriba -20 +dy, color=pilas.colores.blanco) 127 dy -= 20128130 izquierda, derecha, arriba, abajo = pilas.utils.obtener_bordes() 131 x, y = self.posicion_del_mouse 132 texto = u"Posición del mouse: x=%d y=%d " %(x, y) 133 self.lienzo.texto_absoluto(painter, texto, derecha - 230, abajo + 10, color=pilas.colores.blanco)134136 izquierda, derecha, arriba, abajo = pilas.utils.obtener_bordes() 137 rendimiento = self.fps.obtener_cuadros_por_segundo() 138 texto = "Cuadros por segundo: %s" %(rendimiento) 139 self.lienzo.texto_absoluto(painter, texto, izquierda + 10, abajo + 10, color=pilas.colores.blanco)140142 izquierda, derecha, arriba, abajo = pilas.utils.obtener_bordes() 143 total_de_actores = len(pilas.escena_actual().actores) 144 texto = "Cantidad de actores: %s" %(total_de_actores) 145 self.lienzo.texto_absoluto(painter, texto, izquierda + 10, abajo + 30, color=pilas.colores.blanco)146147 - def definir_modos(self, fisica=False, info=False, puntos_de_control=False, 148 radios=False, areas=False, posiciones=False, log=False):149 """Permite habilitar o deshabilitar los modos depuración. 150 151 Cada uno de los argumentos representa un modo depuración, el valor True 152 habilita el modo, False lo deshabilita. 153 """ 154 self._desactivar_todos_los_modos() 155 156 if log: 157 self._alternar_modo(ModoWidgetLog) 158 159 if info: 160 self._alternar_modo(ModoInformacionDeSistema) 161 162 if puntos_de_control: 163 self._alternar_modo(ModoPuntosDeControl) 164 165 if radios: 166 self._alternar_modo(ModoRadiosDeColision) 167 168 if areas: 169 self._alternar_modo(ModoArea) 170 171 if fisica: 172 self._alternar_modo(ModoFisica) 173 174 if posiciones: 175 self._alternar_modo(ModoPosicion)176 177179 clases_activas = [x.__class__ for x in self.modos] 180 181 for clase in clases_activas: 182 self._desactivar_modo(clase)207 tecla = "F5" 208217 218 219210 ModoDepurador.__init__(self, depurador) 211 self.widget = widget_log.WidgetLog() 212 self.widget.show() 213 self.widget.imprimir(locals())214221 tecla = "F7" 222240 241 247 248 254 255 262 263224 ModoDepurador.__init__(self, depurador) 225 226 self.informacion = [ 227 "Usando el motor: " + pilas.mundo.motor.nombre, 228 "Sistema: " + sys.platform, 229 "Version de pilas: " + pilasversion.VERSION, 230 "Version de python: " + sys.subversion[0] + " " + sys.subversion[1], 231 "Version de Box2D: " + pilas.fisica.obtener_version(), 232 ]233265 tecla = "F11" 266270 271268 grosor = ModoDepurador.grosor_de_lineas 269 pilas.escena_actual().fisica.dibujar_figuras_sobre_lienzo(painter, lienzo, grosor)273 tecla = "F12" 274 278286280 if not isinstance(actor, pilas.fondos.Fondo): 281 texto = "(%d, %d)" %(actor.x, actor.y) 282 lienzo.texto(painter, texto, actor.derecha - pilas.escena_actual().camara.x, actor.abajo - pilas.escena_actual().camara.y, color=pilas.colores.blanco)283285 self.eje.eliminar()
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Sun Jan 27 23:57:22 2013 | http://epydoc.sourceforge.net |