Package model.entities.enemies
Class SuperDrunkModel
java.lang.Object
model.entities.EntityModel
model.entities.enemies.EnemyModel
model.entities.enemies.SuperDrunkModel
- All Implemented Interfaces:
Fallable
Rappresenta un nemico chiamato SuperDrunk nel gioco.
Estende il modello di nemico base e gestisce la logica di movimento,
attacco e gestione delle bottiglie.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate float[][]
Posizioni delle bottiglie in relazione alla posizione del nemico.private ArrayList
<DrunkBottleModel> Lista di bottiglie lanciate dal nemico.private boolean
Indica se il nemico è stato colpito.private int
Numero di vite del nemico.private boolean
Indica se il nemico ha già sparato.private float
Coordinate iniziali della bottiglia da lanciare.private float
Fields inherited from class model.entities.enemies.EnemyModel
active, angry, bubbleSpeed, enemyState, foodSpawned, goingUp, inBubble, inBubbleTime, pathDuration, pathTick, resetAniTick, shootingTick, shootingTimer, still, stillTick, stillTimer, stuck, targetYTile, walkDir, walkSpeed
Fields inherited from class model.entities.EntityModel
airSpeed, fallingSpeed, fallSpeedAfterCollision, gravity, height, hitbox, inAir, width, x, y
-
Constructor Summary
ConstructorsConstructorDescriptionSuperDrunkModel
(float x, float y, int width, int height) Costruttore della classe SuperDrunkModel. -
Method Summary
Modifier and TypeMethodDescriptionprivate boolean
Verifica se tutte le bottiglie lanciate sono inattive.private boolean
canSuperDrunkMoveOnThisX
(float nextX) private boolean
canSuperDrunkMoveOnThisY
(float nextY) private void
Controlla se il nemico può sparare bottiglie.private void
Controlla se il nemico ha già sparato le bottiglie.void
int
getLives()
boolean
private void
move
(float xMovement, float yMovement) Muove il nemico di una certa quantità nelle direzioni x e y.void
setHasBeenHit
(boolean hasBeenHit) void
update()
Aggiorna lo stato del nemico in ogni frame.private void
Aggiorna lo stato delle bottiglie lanciate dal nemico.protected void
Aggiorna la posizione del nemico in base alla direzione di movimento.Methods inherited from class model.entities.enemies.EnemyModel
checkBubbleDirection, checkThreeYTilesSolid, checkUpSolid, doDeathMovement, getEnemyState, getEnemyTileX, getEnemyTileY, getPlayerTileX, getPlayerTileY, getWalkDir, inBubbleMovement, isActive, isBubbleInXRange, isDeathMovement, isEnemyOnPlayerY, isFoodSpawned, isInBubble, isPlayerOnTopOfTheEnemy, isPlayerToLeftOfEnemy, isPlayerToRightOfEnemy, isResetAniTick, playerAndEnemyAreOnTheSameRow, setActive, setEnemyState, setFoodSpawned, setInBubble, setResetAniTick, startFloating, startShootingTimer, startStillTimer, updateEnemyState, updateXPos, walkWithDifferentY, walkwithSameY
Methods inherited from class model.entities.EntityModel
checkOutOfMap, fallingChecks, getHeight, getHitbox, getLevelManager, getWidth, getX, getY, initHitbox, isInAir, isInAirCheck, resetInAir, setFallingSpeed
-
Field Details
-
lives
private int livesNumero di vite del nemico. -
hasBeenHit
private boolean hasBeenHitIndica se il nemico è stato colpito. -
shot
private boolean shotIndica se il nemico ha già sparato. -
drunkBottles
Lista di bottiglie lanciate dal nemico. -
startingBottleX
private float startingBottleXCoordinate iniziali della bottiglia da lanciare. -
startingBottleY
private float startingBottleY -
bottlesPositions
private float[][] bottlesPositionsPosizioni delle bottiglie in relazione alla posizione del nemico. Ogni bottiglia ha una posizione (x, y) e una direzione.
-
-
Constructor Details
-
SuperDrunkModel
public SuperDrunkModel(float x, float y, int width, int height) Costruttore della classe SuperDrunkModel.- Parameters:
x
- La coordinata x iniziale del nemico.y
- La coordinata y iniziale del nemico.width
- Larghezza del nemico.height
- Altezza del nemico.
-
-
Method Details
-
update
public void update()Aggiorna lo stato del nemico in ogni frame. Chiama i metodi per controllare le condizioni di attacco e aggiorna le bottiglie lanciate.- Overrides:
update
in classEnemyModel
-
checkShotCondition
private void checkShotCondition()Controlla se il nemico ha già sparato le bottiglie. Se non ci sono bottiglie attive, resetta lo stato di sparo. -
areAllBottlesInactive
private boolean areAllBottlesInactive()Verifica se tutte le bottiglie lanciate sono inattive.- Returns:
- true se tutte le bottiglie sono inattive, false altrimenti.
-
checkShoot
private void checkShoot()Controlla se il nemico può sparare bottiglie. Se ha già sparato, lancia otto bottiglie nella direzione corrente. -
updateDrunkBottles
private void updateDrunkBottles()Aggiorna lo stato delle bottiglie lanciate dal nemico. Se una bottiglia è attiva, chiama il suo metodo di aggiornamento. -
updatePos
protected void updatePos()Aggiorna la posizione del nemico in base alla direzione di movimento. Cambia la direzione se il nemico non può muoversi nella direzione attuale.- Overrides:
updatePos
in classEnemyModel
-
move
private void move(float xMovement, float yMovement) Muove il nemico di una certa quantità nelle direzioni x e y.- Parameters:
xMovement
- Spostamento lungo l'asse x.yMovement
- Spostamento lungo l'asse y.
-
canSuperDrunkMoveOnThisY
private boolean canSuperDrunkMoveOnThisY(float nextY) -
canSuperDrunkMoveOnThisX
private boolean canSuperDrunkMoveOnThisX(float nextX) -
getLives
public int getLives() -
hasBeenHit
public boolean hasBeenHit() -
setHasBeenHit
public void setHasBeenHit(boolean hasBeenHit) -
decreaseLives
public void decreaseLives() -
getDrunkBottles
-