Package model.entities.enemies
Class EnemyModel
java.lang.Object
model.entities.EntityModel
model.entities.enemies.EnemyModel
- All Implemented Interfaces:
Fallable
- Direct Known Subclasses:
DrunkModel,HidegonsModel,InvaderModel,MaitaModel,MonstaModel,SuperDrunkModel,ZenChanModel
Classe astratta che rappresenta il modello di un nemico nel gioco.
Estende la classe
EntityModel e gestisce le funzionalità e gli stati dei nemici.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanIndica se il nemico è attivo.private booleanIndica se il nemico ha già eseguito il movimento parabolico.protected booleanIndica se il nemico è arrabbiato.protected floatVelocità del nemico quando è in bolla.private booleanIndica se il nemico sta facendo l'animazione della morte.protected intStato attuale del nemico.protected booleanIndica se il cibo è stato generato.protected booleanIndica se il nemico sta salendo.protected booleanIndica se il nemico è intrappolato in una bolla.protected intTempo in cui il nemico rimane intrappolato nella bolla.private booleanIndica se il movimento di morte deve essere invertito.private intIndice del movimento parabolico, che determina quale movimento parabolico eseguire.private float[][]Array bidimensionale che rappresenta i movimenti parabolici del nemico.private intTick per il movimento parabolico.protected intDurata del percorso del nemico in bolla.protected intTick del percorso del nemico in bolla.protected booleanIndica se il contatore dell'animazione deve essere azzerato.protected intTick per il timer di tiro, utilizzato per monitorare il tempo trascorso tra i tiri.protected intTimer per il tiro del nemico, utilizzato per controllare la frequenza di sparo.protected booleanIndica se il nemico ha sparato.protected booleanIndica se il nemico è fermo.protected intTick per il timer fermo, utilizzato per tenere traccia del tempo in cui il nemico rimane fermo.protected intTimer per il nemico che rimane fermo, utilizzato per gestire le azioni di attacco.protected booleanIndica se la bolla è nell'area in cui può iniziare a fluttuare.protected intObiettivo verticale del nemico, rappresentato come indice di tile.protected intDirezione di camminata del nemico.protected floatVelocità di camminata del nemico.Fields inherited from class model.entities.EntityModel
airSpeed, fallingSpeed, fallSpeedAfterCollision, gravity, height, hitbox, inAir, width, x, y -
Constructor Summary
ConstructorsConstructorDescriptionEnemyModel(float x, float y, int width, int height) Costruttore della classe EnemyModel. -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanControlla se il nemico può muoversi nella posizione attuale.protected voidControlla la direzione di movimento del nemico nella bolla.private voidControlla e aggiorna la posizione del nemico in base alla possibilità di movimento.private voidcheckIfEnemyHitASideBorder(EnemyModel enemyModel) Controlla se il nemico ha colpito il bordo laterale.private booleancheckIfEnemyIsOnTheFloorBorder(EnemyModel enemyModel) Controlla se il nemico si trova al bordo del pavimento.protected booleancheckThreeYTilesSolid(int yTile, int xTile, int[][] lvldata) Controlla se ci sono tre tile solide in una certa posizione verticale.protected booleancheckUpSolid(int[][] lvlData) Controlla se sopra il nemico ci sono tre tile solidi.voiddoDeathMovement(EnemyModel enemyModel, int direction) Gestisce il movimento del nemico alla morte.private voiddoParableMovement(EnemyModel enemyModel, int direction) Esegue il movimento parabolico.intprotected intprotected intprotected intprotected intintprotected voidGestisce il movimento del nemico intrappolato in una bolla.booleanisActive()protected booleanVerifica se la bolla si trova nell'intervallo orizzontale corretto per iniziare a fluttuare.booleanprotected booleanbooleanbooleanprotected booleanprotected booleanprotected booleanbooleanprivate voidparableMovement(EnemyModel enemyModel, int direction) Esegue il movimento parabolico alla morte del nemico.protected booleanvoidsetActive(boolean active) voidsetEnemyState(int enemyState) voidsetFoodSpawned(boolean foodSpawned) voidsetInBubble(boolean inBubble) voidsetResetAniTick(boolean resetAniTick) protected voidInizia il movimento fluttuante del nemico intrappolato in una bolla.protected voidAvvia il timer di tiro del nemico.protected voidAvvia il timer per rimanere fermo.voidupdate()Aggiorna lo stato del nemico.voidAggiorna lo stato del nemico in base alla sua condizione attuale (es. intrappolato nella bolla, arrabbiato).protected voidMetodo per aggiornare la posizione del nemico.voidupdateXPos(float walkSpeed) Aggiorna la posizione orizzontale del nemico in base alla velocità di camminata.protected voidGestisce il movimento del nemico quando si trova su una riga diversa rispetto al giocatore.protected voidGestisce il movimento del nemico quando si trova sulla stessa riga del giocatore.Methods inherited from class model.entities.EntityModel
checkOutOfMap, fallingChecks, getHeight, getHitbox, getLevelManager, getWidth, getX, getY, initHitbox, isInAir, isInAirCheck, resetInAir, setFallingSpeed
-
Field Details
-
active
protected boolean activeIndica se il nemico è attivo. -
inBubble
protected boolean inBubbleIndica se il nemico è intrappolato in una bolla. -
angry
protected boolean angryIndica se il nemico è arrabbiato. -
resetAniTick
protected boolean resetAniTickIndica se il contatore dell'animazione deve essere azzerato. -
inBubbleTime
protected int inBubbleTimeTempo in cui il nemico rimane intrappolato nella bolla. -
enemyState
protected int enemyStateStato attuale del nemico. -
walkDir
protected int walkDirDirezione di camminata del nemico. Può assumere valori comeRIGHToLEFT. -
walkSpeed
protected float walkSpeedVelocità di camminata del nemico. -
goingUp
protected boolean goingUpIndica se il nemico sta salendo. Valore predefinito èfalse. -
targetYTile
protected int targetYTileObiettivo verticale del nemico, rappresentato come indice di tile. -
deathMovement
private boolean deathMovementIndica se il nemico sta facendo l'animazione della morte. Valore predefinito èfalse. -
invertDeathMovement
private boolean invertDeathMovementIndica se il movimento di morte deve essere invertito. Valore predefinito èfalse. -
alreadyDidParable
private boolean alreadyDidParableIndica se il nemico ha già eseguito il movimento parabolico. Valore predefinito èfalse. -
parableTick
private int parableTickTick per il movimento parabolico. -
parableMoveIndex
private int parableMoveIndexIndice del movimento parabolico, che determina quale movimento parabolico eseguire. -
parableMoves
private float[][] parableMovesArray bidimensionale che rappresenta i movimenti parabolici del nemico. Ogni riga contiene tre valori: il numero di tick per il movimento, il valore di spostamento orizzontale e il valore di spostamento verticale. -
stillTimer
protected int stillTimerTimer per il nemico che rimane fermo, utilizzato per gestire le azioni di attacco. -
stillTick
protected int stillTickTick per il timer fermo, utilizzato per tenere traccia del tempo in cui il nemico rimane fermo. -
shootingTimer
protected int shootingTimerTimer per il tiro del nemico, utilizzato per controllare la frequenza di sparo. -
shootingTick
protected int shootingTickTick per il timer di tiro, utilizzato per monitorare il tempo trascorso tra i tiri. -
still
protected boolean stillIndica se il nemico è fermo. Valore predefinito èfalse. -
shot
protected boolean shotIndica se il nemico ha sparato. Valore predefinito èfalse. -
foodSpawned
protected boolean foodSpawnedIndica se il cibo è stato generato. -
stuck
protected boolean stuckIndica se la bolla è nell'area in cui può iniziare a fluttuare. -
bubbleSpeed
protected float bubbleSpeedVelocità del nemico quando è in bolla. -
pathDuration
protected int pathDurationDurata del percorso del nemico in bolla. -
pathTick
protected int pathTickTick del percorso del nemico in bolla.
-
-
Constructor Details
-
EnemyModel
public EnemyModel(float x, float y, int width, int height) Costruttore della classe EnemyModel.- Parameters:
x- La posizione x del nemico.y- La posizione y del nemico.width- La larghezza del nemico.height- L'altezza del nemico.
-
-
Method Details
-
update
public void update()Aggiorna lo stato del nemico. Se il nemico è in uno stato di corsa, aggiorna la posizione e lo stato del nemico. -
updatePos
protected void updatePos()Metodo per aggiornare la posizione del nemico. Controlla se il nemico è in aria o nella bolla e aggiorna la posizione di conseguenza. -
inBubbleMovement
protected void inBubbleMovement()Gestisce il movimento del nemico intrappolato in una bolla. Se il nemico non è bloccato, lo sposta verticalmente fino a quando non raggiunge una certa altezza o posizione orizzontale. Una volta bloccato, attiva il movimento fluttuante. -
startFloating
protected void startFloating()Inizia il movimento fluttuante del nemico intrappolato in una bolla. -
checkBubbleDirection
protected void checkBubbleDirection()Controlla la direzione di movimento del nemico nella bolla. Sposta il nemico orizzontalmente a destra o a sinistra a seconda della posizione rispetto all'intervallo centrale. -
isBubbleInXRange
protected boolean isBubbleInXRange()Verifica se la bolla si trova nell'intervallo orizzontale corretto per iniziare a fluttuare.- Returns:
- true se la bolla si trova nell'intervallo, false altrimenti.
-
updateXPos
public void updateXPos(float walkSpeed) Aggiorna la posizione orizzontale del nemico in base alla velocità di camminata.- Specified by:
updateXPosin interfaceFallable- Specified by:
updateXPosin classEntityModel- Parameters:
walkSpeed- La velocità di camminata del nemico.
-
walkwithSameY
protected void walkwithSameY()Gestisce il movimento del nemico quando si trova sulla stessa riga del giocatore. -
walkWithDifferentY
protected void walkWithDifferentY()Gestisce il movimento del nemico quando si trova su una riga diversa rispetto al giocatore. -
checkEnemyMovement
private void checkEnemyMovement()Controlla e aggiorna la posizione del nemico in base alla possibilità di movimento. -
canEnemyMoveHere
private boolean canEnemyMoveHere()Controlla se il nemico può muoversi nella posizione attuale.- Returns:
- true se il nemico può muoversi, false altrimenti.
-
updateEnemyState
public void updateEnemyState()Aggiorna lo stato del nemico in base alla sua condizione attuale (es. intrappolato nella bolla, arrabbiato). -
doDeathMovement
Gestisce il movimento del nemico alla morte.- Parameters:
enemyModel- Il modello del nemico.direction- La direzione del movimento.
-
parableMovement
Esegue il movimento parabolico alla morte del nemico.- Parameters:
enemyModel- Il modello del nemico.direction- La direzione del movimento.
-
checkIfEnemyHitASideBorder
Controlla se il nemico ha colpito il bordo laterale.- Parameters:
enemyModel- Il modello del nemico.
-
doParableMovement
Esegue il movimento parabolico.- Parameters:
enemyModel- Il modello del nemico.direction- La direzione del movimento.
-
checkIfEnemyIsOnTheFloorBorder
Controlla se il nemico si trova al bordo del pavimento.- Parameters:
enemyModel- Il modello del nemico.- Returns:
- true se il nemico è al bordo del pavimento, false altrimenti.
-
checkUpSolid
protected boolean checkUpSolid(int[][] lvlData) Controlla se sopra il nemico ci sono tre tile solidi.- Parameters:
lvlData- Dati di livello per controllare la solidità delle tile.- Returns:
- true se ci sono tre tile solidi sopra il nemico, false altrimenti.
-
checkThreeYTilesSolid
protected boolean checkThreeYTilesSolid(int yTile, int xTile, int[][] lvldata) Controlla se ci sono tre tile solide in una certa posizione verticale.- Parameters:
yTile- La coordinata Y della tile.xTile- La coordinata X della tile.lvldata- Dati di livello per controllare la solidità delle tile.- Returns:
- true se ci sono tre tile solide, false altrimenti.
-
startShootingTimer
protected void startShootingTimer()Avvia il timer di tiro del nemico. -
startStillTimer
protected void startStillTimer()Avvia il timer per rimanere fermo. -
isEnemyOnPlayerY
protected boolean isEnemyOnPlayerY()- Returns:
- true se il nemico è nella stessa y del player
-
isPlayerToRightOfEnemy
protected boolean isPlayerToRightOfEnemy() -
isPlayerToLeftOfEnemy
protected boolean isPlayerToLeftOfEnemy() -
playerAndEnemyAreOnTheSameRow
protected boolean playerAndEnemyAreOnTheSameRow() -
isPlayerOnTopOfTheEnemy
protected boolean isPlayerOnTopOfTheEnemy() -
getPlayerTileY
protected int getPlayerTileY() -
getEnemyTileY
protected int getEnemyTileY() -
getPlayerTileX
protected int getPlayerTileX() -
getEnemyTileX
protected int getEnemyTileX() -
getEnemyState
public int getEnemyState() -
setEnemyState
public void setEnemyState(int enemyState) -
setActive
public void setActive(boolean active) -
setInBubble
public void setInBubble(boolean inBubble) -
getWalkDir
public int getWalkDir() -
isInBubble
public boolean isInBubble() -
isActive
public boolean isActive() -
setResetAniTick
public void setResetAniTick(boolean resetAniTick) -
isResetAniTick
public boolean isResetAniTick() -
isDeathMovement
public boolean isDeathMovement() -
isFoodSpawned
public boolean isFoodSpawned() -
setFoodSpawned
public void setFoodSpawned(boolean foodSpawned)
-