Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pilas/actores/utils.py
blob: da064dcae37593021f6fd7e3520092547161fc1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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)