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 boolean
Indica se il nemico è attivo.private boolean
Indica se il nemico ha già eseguito il movimento parabolico.protected boolean
Indica se il nemico è arrabbiato.protected float
Velocità del nemico quando è in bolla.private boolean
Indica se il nemico sta facendo l'animazione della morte.protected int
Stato attuale del nemico.protected boolean
Indica se il cibo è stato generato.protected boolean
Indica se il nemico sta salendo.protected boolean
Indica se il nemico è intrappolato in una bolla.protected int
Tempo in cui il nemico rimane intrappolato nella bolla.private boolean
Indica se il movimento di morte deve essere invertito.private int
Indice del movimento parabolico, che determina quale movimento parabolico eseguire.private float[][]
Array bidimensionale che rappresenta i movimenti parabolici del nemico.private int
Tick per il movimento parabolico.protected int
Durata del percorso del nemico in bolla.protected int
Tick del percorso del nemico in bolla.protected boolean
Indica se il contatore dell'animazione deve essere azzerato.protected int
Tick per il timer di tiro, utilizzato per monitorare il tempo trascorso tra i tiri.protected int
Timer per il tiro del nemico, utilizzato per controllare la frequenza di sparo.protected boolean
Indica se il nemico ha sparato.protected boolean
Indica se il nemico è fermo.protected int
Tick per il timer fermo, utilizzato per tenere traccia del tempo in cui il nemico rimane fermo.protected int
Timer per il nemico che rimane fermo, utilizzato per gestire le azioni di attacco.protected boolean
Indica se la bolla è nell'area in cui può iniziare a fluttuare.protected int
Obiettivo verticale del nemico, rappresentato come indice di tile.protected int
Direzione di camminata del nemico.protected float
Velocità 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 boolean
Controlla se il nemico può muoversi nella posizione attuale.protected void
Controlla la direzione di movimento del nemico nella bolla.private void
Controlla e aggiorna la posizione del nemico in base alla possibilità di movimento.private void
checkIfEnemyHitASideBorder
(EnemyModel enemyModel) Controlla se il nemico ha colpito il bordo laterale.private boolean
checkIfEnemyIsOnTheFloorBorder
(EnemyModel enemyModel) Controlla se il nemico si trova al bordo del pavimento.protected boolean
checkThreeYTilesSolid
(int yTile, int xTile, int[][] lvldata) Controlla se ci sono tre tile solide in una certa posizione verticale.protected boolean
checkUpSolid
(int[][] lvlData) Controlla se sopra il nemico ci sono tre tile solidi.void
doDeathMovement
(EnemyModel enemyModel, int direction) Gestisce il movimento del nemico alla morte.private void
doParableMovement
(EnemyModel enemyModel, int direction) Esegue il movimento parabolico.int
protected int
protected int
protected int
protected int
int
protected void
Gestisce il movimento del nemico intrappolato in una bolla.boolean
isActive()
protected boolean
Verifica se la bolla si trova nell'intervallo orizzontale corretto per iniziare a fluttuare.boolean
protected boolean
boolean
boolean
protected boolean
protected boolean
protected boolean
boolean
private void
parableMovement
(EnemyModel enemyModel, int direction) Esegue il movimento parabolico alla morte del nemico.protected boolean
void
setActive
(boolean active) void
setEnemyState
(int enemyState) void
setFoodSpawned
(boolean foodSpawned) void
setInBubble
(boolean inBubble) void
setResetAniTick
(boolean resetAniTick) protected void
Inizia il movimento fluttuante del nemico intrappolato in una bolla.protected void
Avvia il timer di tiro del nemico.protected void
Avvia il timer per rimanere fermo.void
update()
Aggiorna lo stato del nemico.void
Aggiorna lo stato del nemico in base alla sua condizione attuale (es. intrappolato nella bolla, arrabbiato).protected void
Metodo per aggiornare la posizione del nemico.void
updateXPos
(float walkSpeed) Aggiorna la posizione orizzontale del nemico in base alla velocità di camminata.protected void
Gestisce il movimento del nemico quando si trova su una riga diversa rispetto al giocatore.protected void
Gestisce 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 comeRIGHT
oLEFT
. -
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:
updateXPos
in interfaceFallable
- Specified by:
updateXPos
in 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)
-