-
Notifications
You must be signed in to change notification settings - Fork 0
/
adminProyectiles.wlk
56 lines (48 loc) · 2.03 KB
/
adminProyectiles.wlk
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
// ===============================
// Revisado
// ===============================
import game.*
import proyectil.*
// ===============================
// Administrador de Proyectiles: Controla la creación y gestión de proyectiles
// ===============================
class MiException inherits wollok.lang.Exception {}
object administradorDeProyectiles {
// Propiedades
var nombreProyectil = 20000 // Identificador único para cada proyectil creado
var property proyectiles = #{} // Almacena los proyectiles creados
method nombre() = nombreProyectil // Obtiene el último nombre usado
// Incrementa el contador de nombreProyectil para nombrar proyectiles de manera única
method sumarProyectil() { nombreProyectil += 1 }
// Genera un nuevo proyectil en la posición y tipo especificado
method generarProyectil(posicion, tipoProyectil) {
var nombreParaProyectil = self.nombre()
nombreParaProyectil = new Proyectil(position = posicion, proyectil = tipoProyectil)
proyectiles.add(nombreParaProyectil)
self.sumarProyectil()
game.addVisual(nombreParaProyectil)
game.schedule(10, {nombreParaProyectil.combinar()})
try nombreParaProyectil.colisionar() catch e "YA NO EXISTE PROYECTIL"
}
// Mueve cada proyectil en la lista
method moverProyectiles() {
proyectiles.forEach({ proyectil => proyectil.mover() })
}
// Activa la colisión para cada proyectil en la lista
method impactarProyectiles() {
proyectiles.forEach({ proyectil => proyectil.colisionar() })
}
// Elimina un proyectil de la lista
method destruirProyectil(proyectil) {
proyectiles.remove(proyectil)
}
method cambiarFrame(){
proyectiles.forEach({proyectil=> proyectil.cambiarFrame()})
}
// Restablece el administrador, eliminando todos los proyectiles y reiniciando el contador de nombres
method reset() {
proyectiles.forEach({ proyectil => proyectil.eliminar() })
nombreProyectil = 0
proyectiles = []
}
}