Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pilas/actores/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'pilas/actores/utils.py')
-rw-r--r--pilas/actores/utils.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/pilas/actores/utils.py b/pilas/actores/utils.py
new file mode 100644
index 0000000..da064dc
--- /dev/null
+++ b/pilas/actores/utils.py
@@ -0,0 +1,70 @@
+# -*- encoding: utf-8 -*-
+# Pilas engine - A video game framework.
+#
+# Copyright 2010 - Hugo Ruscitti
+# License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html)
+#
+# Website - http://www.pilas-engine.com.ar
+
+import random
+import pilas
+
+def ordenar_actores_por_valor_z():
+ "Ordena todos los actores para que se impriman con 'z' como criterio de orden."
+ pilas.actores.todos.sort()
+
+def insertar_como_nuevo_actor(actor):
+ "Coloca a un actor en la lista de actores a imprimir en pantalla."
+ pilas.actores.todos.append(actor)
+
+def eliminar_un_actor(actor):
+ try:
+ pilas.actores.todos.remove(actor)
+ except ValueError:
+ #TODO: quitar este silenciador de excepcion.
+ pass
+
+def eliminar_a_todos():
+ a_eliminar = list(pilas.actores.todos)
+ a_eliminar = a_eliminar[1:] # evita borrar el fondo.
+
+ for x in a_eliminar:
+ x.eliminar()
+
+def destruir_a_todos():
+ "Elimina a los actores inmediatamente (evita que exploten o hagan algo)."
+ a_eliminar = list(pilas.actores.todos)
+
+ for x in a_eliminar:
+ x.destruir()
+
+def obtener_actor_en(x, y):
+ "Intenta obtener el actor mas cerca de la pantalla (z mas pequeño) en la posición (x, y)"
+
+ # Busca el objeto que colisiones ordenando en sentido inverso.
+ for sprite in pilas.actores.todos[::-1]:
+ if sprite.colisiona_con_un_punto(x, y):
+ return sprite
+
+ return None
+
+
+def fabricar(clase, cantidad=1, posiciones_al_azar=True, *k, **kv):
+ "Genera muchas intancias de objetos asignando posiciones aleatorias."
+
+ objetos_creados = []
+
+ for x in range(cantidad):
+ if posiciones_al_azar:
+ x = random.randint(-300, 300)
+ y = random.randint(-200, 200)
+ else:
+ x = 0
+ y = 0
+
+ kv['x'] = x
+ kv['y'] = y
+ nuevo = clase(*k, **kv)
+ objetos_creados.append(nuevo)
+
+ return pilas.grupo.Grupo(objetos_creados)