Skip to content

Commit

Permalink
quite las clases y objetos inecesarios de
Browse files Browse the repository at this point in the history
administradorDeOleadas
  • Loading branch information
NahuelMarek committed Nov 28, 2024
1 parent 7711ba6 commit 0f9ba78
Showing 1 changed file with 23 additions and 220 deletions.
243 changes: 23 additions & 220 deletions administradorDeOleadas.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -9,77 +9,58 @@ import administradorDeJuego.*
// ===============================
object administradorDeOleadas {
const numOleadaFinal = 3
var oleadaActual = oleadaNormal
var nivelActual = nivelInfinito
var numeroOleada = 1
const property oleadaInicial = game.tick(4000, {self.iniciarOleada() self.frenarTickInicial()},false)
const property oleadaInicial = game.tick(4000, {self.frenarTickInicial() self.iniciarOleada()},false)
method frenarTickInicial()=oleadaInicial.stop()
var property modoNiveles = false
//cosas para funcionamiento con niveles
const niveles = botonNiveles.niveles()
var property numNivel = 1
method nivel() = niveles.get(numNivel-1).nivel()
method actualizarOleada(){if(modoNiveles) oleadaActual= self.nivel()
else oleadaActual=nivelInfinito}
method actualizarOleada(){if(modoNiveles) nivelActual= self.nivel()
else nivelActual=nivelInfinito}
// Métodos de visualización y sonido
method position() = new MutablePosition(x = 9, y = 5)
method text() = "Oleada: " + numeroOleada.toString() + " " + "Slimes Restantes: " + oleadaActual.enemigosRestantes().toString()
method text() = "Oleada: " + numeroOleada.toString() + " " + "Slimes Restantes: " + nivelActual.enemigosRestantes().toString()
method textColor() = "#FA0770"
method enemigosVivos() = oleadaActual.enemigosVivos()
const tickParaGenerarEnemigos=game.tick(oleadaActual.tiempoSpawn(),{self.spawnearOleada()},false)
method enemigosVivos() = nivelActual.enemigosVivos()
const tickParaGenerarEnemigos=game.tick(nivelActual.tiempoSpawn(),{self.spawnearOleada()},false)
method spawnearOleada(){
if (not administradorDeJuego.pausado()){
if (oleadaActual.ejecutando()) {
administradorDeEnemigos.generarEnemigo(oleadaActual.enemigos().anyOne())
} else if(oleadaActual.finalizo()){
if(modoNiveles){
self.siguienteOleadaNivel()
}
else{
self.siguienteOleadaNivel()}
if (nivelActual.ejecutando()) {
administradorDeEnemigos.generarEnemigo(nivelActual.enemigos().anyOne())
} else if(nivelActual.finalizo()){
self.siguienteOleadaNivel()
tickParaGenerarEnemigos.stop()

}
} }
// Inicia la oleada y gestiona enemigos
method iniciarOleada() {
oleadaActual.iniciarOleada()
nivelActual.iniciarOleada()
tickParaGenerarEnemigos.start()
}

// Pasa a la siguiente oleada
method siguienteOleada() {
// por ahora funciona , si intento mejorar la logica se rompe
numeroOleada += 1
if (numeroOleada > numOleadaFinal){
oleadaActual.terminarOleada()
} else {
oleadaActual.terminarOleada()
if (numeroOleada == numOleadaFinal){ oleadaActual = oleadaFinal }
oleadaInicial.interval(10000)
oleadaInicial.start()
/* game.schedule(10000, { self.iniciarOleada() }) */
}
}
method siguienteOleadaNivel(){
if(oleadaActual.noTerminoNivel()){
oleadaActual.siguienteOleada()
if(nivelActual.noTerminoNivel()){
nivelActual.siguienteOleada()
oleadaInicial.start()
}
else{
oleadaActual.reset()
nivelActual.reset()
numNivel+=1
if(numNivel>niveles.size()){
pantalla.nuevoEstado(victoria)
administradorDeJuego.terminarJuego()
}
else{
oleadaActual=self.nivel()
nivelActual=self.nivel()
oleadaInicial.start()}
}
}
// Gestión de contadores de enemigos
method reducirEnemigo() { oleadaActual.seMurioEnemigo()}
method sumarEnemigo() { oleadaActual.seGeneroEnemigo() }
method reducirEnemigo() { nivelActual.seMurioEnemigo()}
method sumarEnemigo() { nivelActual.seGeneroEnemigo() }

// Selecciona un tipo de slime aleatorio en función de la oleada
//method agregarTipo(numero) { return posiblesTipos.get(0.randomUpTo(numero + 4).round())}
Expand All @@ -89,7 +70,7 @@ object administradorDeOleadas {
self.frenarTickInicial()
oleadaInicial.interval(4000)
tickParaGenerarEnemigos.stop()
oleadaActual.reset()
nivelActual.reset()
niveles.forEach({botonNivel=>botonNivel.nivel().resetearOleadas()})
numeroOleada = 1
numNivel=1
Expand All @@ -101,174 +82,7 @@ object administradorDeOleadas {
}


// ===============================
// Oleada Normal: Configuración y gestión de una oleada estándar
// ===============================
object oleadaNormal {
var property enemigos = [slimeAgil]
var property cantidadEnemigos = 10
var property enemigosRestantes = cantidadEnemigos
var property enemigosGenerados = 0
var property tiempoSpawn = 3000
const cantSlimesPosibles = 4

method inicioOleada() = game.sound("m.iOleada.mp3")
method finOleada() = game.sound("m.fOleada.mp3")

method enemigosVivos() = enemigosGenerados - (cantidadEnemigos - enemigosRestantes)
// Verifica si la oleada está en ejecución
method ejecutando() = cantidadEnemigos > enemigosGenerados && enemigosRestantes > 0

// Verifica si la oleada ha finalizado
method finalizo() = enemigosRestantes == 0 && enemigosGenerados == cantidadEnemigos

method seGeneroEnemigo() {enemigosGenerados+=1}

method seMurioEnemigo() {enemigosRestantes-=1}

// Termina la oleada y configura la siguiente
/* method terminarOleada() {
cantidadEnemigos += 5
enemigosGenerados = 0
if (tiempoSpawn > 400) tiempoSpawn -= 400
enemigos = []
game.onTick(100, "agregar slimes posibles", { self.agregarSlimes() })
self.finOleada().volume(0.1)
self.finOleada().play()
} */

method iniciarOleada(){
self.inicioOleada().volume(0)
//self.inicioOleada().play()
enemigosRestantes = cantidadEnemigos
}


// Agrega slimes a la oleada hasta alcanzar el límite
/* method agregarSlimes() {
if (enemigos.size() < cantSlimesPosibles) {
enemigos.add(administradorDeOleadas.agregarTipo(0))
} else {
game.removeTickEvent("agregar slimes posibles")
}
} */

// Resetea la oleada a su configuración inicial
method reset() {
enemigos = [slimeBasico]
cantidadEnemigos = 10
enemigosRestantes = cantidadEnemigos
enemigosGenerados = 0
tiempoSpawn = 3000
}

}


// ===============================
// Oleada Final: Configuración y gestión de la oleada final
// ===============================
object oleadaFinal {
const property enemigos = [slimeBlessed]
const property cantidadEnemigos = 20
var property enemigosRestantes = cantidadEnemigos
var property enemigosGenerados = 0
const property tiempoSpawn = 400

// Verifica si la oleada final está en ejecución
method ejecutando() = cantidadEnemigos > enemigosGenerados && enemigosRestantes > 0

method seGeneroEnemigo() {enemigosGenerados+=1}

method seMurioEnemigo() {enemigosRestantes-=1}

method inicioOleada() = game.sound("m.iOleada.mp3")

method enemigosVivos() = enemigosGenerados - (cantidadEnemigos - enemigosRestantes)

// Termina la oleada final y concluye el juego
method terminarOleada() {
pantalla.nuevoEstado(victoria)
administradorDeJuego.terminarJuego()

}

method iniciarOleada(){
self.inicioOleada().volume(0)
//self.inicioOleada().play()
enemigosRestantes = cantidadEnemigos
}



method cargarSlimesRestantes () {enemigosRestantes = cantidadEnemigos }
// Verifica si la oleada final ha finalizado
method finalizo() = enemigosRestantes == 0 && enemigosGenerados == cantidadEnemigos

// Resetea la oleada final
method reset() {
enemigosGenerados = 0
enemigosRestantes = cantidadEnemigos
}
}

class OleadaDeNivel{
const property enemigos
const property cantidadEnemigos
var property enemigosRestantes = cantidadEnemigos
var property enemigosGenerados = 0
const property tiempoSpawn

method inicioOleada() = game.sound("m.iOleada.mp3")
method finOleada() = game.sound("m.fOleada.mp3")
// Verifica si la oleada final está en ejecución
method ejecutando() = cantidadEnemigos > enemigosGenerados && enemigosRestantes > 0

method seGeneroEnemigo() {enemigosGenerados+=1}

method seMurioEnemigo() {enemigosRestantes-=1}

method enemigosVivos() = enemigosGenerados - (cantidadEnemigos - enemigosRestantes)

// Termina la oleada final y concluye el juego
method terminarOleada() {
self.finOleada().volume(0.1)
self.finOleada().play()

}

method iniciarOleada(){
self.inicioOleada().volume(0)
//self.inicioOleada().play()
enemigosRestantes = cantidadEnemigos
}



method cargarSlimesRestantes () {enemigosRestantes = cantidadEnemigos }
// Verifica si la oleada final ha finalizado
method finalizo() = enemigosRestantes == 0 && enemigosGenerados == cantidadEnemigos

// Resetea la oleada final
method reset() {
enemigosGenerados = 0
enemigosRestantes = cantidadEnemigos
}

}

class Nivel{
const oleadas
var numOleada=0
method oleadaActual()= if (numOleada<oleadas.size())oleadas.get(numOleada) else return oleadaNormal
method noTerminoNivel()=numOleada!=oleadas.size()-1
method siguienteOleada(){numOleada+=1}
method resetearOleadas(){
oleadas.forEach({oleada=> oleada.reset()})
numOleada=0
}
}
class NivelConOleadasIntegradas{
const oleadas
const property cantidadEnemigos
var property enemigosRestantes = cantidadEnemigos
Expand All @@ -277,7 +91,7 @@ class NivelConOleadasIntegradas{

method enemigos()=oleadas.get(numOleada)
var numOleada=0
method oleadaActual()= if (numOleada<oleadas.size()) oleadas.get(numOleada) else return oleadaNormal
method oleadaActual()= oleadas.get(numOleada)
method noTerminoNivel()=numOleada!=oleadas.size()-1
method siguienteOleada(){numOleada+=1 self.reset()}
method resetearOleadas(){
Expand Down Expand Up @@ -320,23 +134,12 @@ class NivelConOleadasIntegradas{
}

}
const oleadaUnoUno = new OleadaDeNivel(enemigos=[slimeBasico,slimeGuerrero,slimeGuerrero],tiempoSpawn=4000,cantidadEnemigos=5)
const oleadaUnoDos = new OleadaDeNivel(enemigos=[slimeLadron,slimeBasico],tiempoSpawn=4000,cantidadEnemigos=6)
const oleadaDosUno = new OleadaDeNivel(enemigos=[slimeBasico,slimeDorado],tiempoSpawn=4000,cantidadEnemigos=3)
const oleadaDosDos = new OleadaDeNivel(enemigos=[slimeAgil,slimeBasico,slimeBasico],tiempoSpawn=4000,cantidadEnemigos=4)

const nivelUno = new Nivel(oleadas=[oleadaUnoUno,oleadaUnoDos])
const nivelDos = new Nivel(oleadas=[oleadaDosUno,oleadaDosDos])
const nivel1 = new NivelConOleadasIntegradas(oleadas=[[slimeDeMedioOriente,slimeBasico,slimeBasico],[slimeBasico,slimeGuerrero,slimeGuerrero],[slimeLadron,slimeBasico]],tiempoSpawn=4000, cantidadEnemigos=5)
const nivel2 = new NivelConOleadasIntegradas(oleadas=[[slimeBasico,slimeDorado],[slimeAgil,slimeBasico,slimeBasico]],tiempoSpawn=4000, cantidadEnemigos=4)
object nivelFinal inherits Nivel (oleadas = [oleadaDosUno]){
const nivel1 = new Nivel(oleadas=[[slimeDeMedioOriente,slimeBasico,slimeBasico],[slimeBasico,slimeGuerrero,slimeGuerrero],[slimeLadron,slimeBasico]],tiempoSpawn=4000, cantidadEnemigos=5)
const nivel2 = new Nivel(oleadas=[[slimeBasico,slimeDorado],[slimeAgil,slimeBasico,slimeBasico]],tiempoSpawn=4000, cantidadEnemigos=4)

override method oleadaActual()= oleadaDosUno

// siguienteoleada oleadafinal socotroco cambia imagen listo :)
}
//algo asi deberia ser nivefinal
object nivelInfinito inherits NivelConOleadasIntegradas (oleadas = [slimeBasico],tiempoSpawn=4000,cantidadEnemigos=3){
object nivelInfinito inherits Nivel(oleadas = [slimeBasico],tiempoSpawn=4000,cantidadEnemigos=3){
const posiblesEnemigos=[slimeBasico, slimeGuerrero, slimeNinja, slimeBlessed,slimeLadron]
const oleadaAleatoria=[slimeBasico]
method cambiarEnemigosOleada(){
Expand Down

0 comments on commit 0f9ba78

Please sign in to comment.