feat: implemented healthbar for enemies
This commit is contained in:
parent
10238c96df
commit
bee0a4264a
|
@ -25,6 +25,8 @@ import { Player_Events } from "../sword_enums";
|
|||
import InputWrapper from "../Tools/InputWrapper";
|
||||
import Timer from "../../Wolfie2D/Timing/Timer";
|
||||
import PlayerController from "../Player/PlayerController";
|
||||
import Rect from "../../Wolfie2D/Nodes/Graphics/Rect";
|
||||
import Color from "../../Wolfie2D/Utils/Color";
|
||||
export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
||||
/** The owner of this AI */
|
||||
owner: AnimatedSprite;
|
||||
|
@ -76,6 +78,8 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
bleedTimer : Timer;
|
||||
bleedCounter :number = 0;
|
||||
|
||||
healthBar: Rect;
|
||||
|
||||
|
||||
initializeAI(owner: AnimatedSprite, options: Record<string, any>): void {
|
||||
this.owner = owner;
|
||||
|
@ -146,6 +150,7 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
this.owner.setAIActive(false, {});
|
||||
this.owner.isCollidable = false;
|
||||
this.owner.visible = false;
|
||||
this.healthBar.destroy();
|
||||
|
||||
this.emitter.fireEvent(Player_Events.ENEMY_KILLED, {owner: this.owner.id, ai:this});
|
||||
|
||||
|
@ -237,6 +242,18 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
this.bleedTimer.start();
|
||||
this.damage(5 + (<PlayerController>this.player._ai).extraDotDmg + (<PlayerController>this.player._ai).CURRENT_ATK * .08);
|
||||
}
|
||||
|
||||
this.healthBar.position = this.owner.collisionShape.center.clone().add(new Vec2(0, -((<AABB>this.owner.collisionShape).hh+5)));
|
||||
this.healthBar.fillWidth = this.CURRENT_HP/this.maxHealth * this.owner.collisionShape.hw * 3;
|
||||
if (this.CURRENT_HP/this.maxHealth >= 2/3) {
|
||||
this.healthBar.color = Color.GREEN;
|
||||
}
|
||||
else if (this.CURRENT_HP/this.maxHealth >= 1/3) {
|
||||
this.healthBar.color = Color.YELLOW;
|
||||
}
|
||||
else {
|
||||
this.healthBar.color = Color.RED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -739,6 +739,10 @@ export default class GameLevel extends Scene {
|
|||
}
|
||||
|
||||
enemy.addAI(EnemyAI, aiOptions); //TODO - add individual enemy AI
|
||||
(<EnemyAI>enemy._ai).healthBar = <Rect>this.add.graphic(GraphicType.RECT, "primary", {position: enemy.collisionShape.center.clone().add(new Vec2(0, -((<AABB>enemy.collisionShape).hh+5))), size: new Vec2((<AABB>enemy.collisionShape).hw*3, 5)});
|
||||
(<EnemyAI>enemy._ai).healthBar.borderColor = Color.BLACK;
|
||||
(<EnemyAI>enemy._ai).healthBar.borderWidth = 1;
|
||||
(<EnemyAI>enemy._ai).healthBar.color = Color.GREEN;
|
||||
enemy.setGroup("Enemy");
|
||||
enemy.setTrigger("player", Player_Events.PLAYER_COLLIDE, null);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user