feat: implemented alert
This commit is contained in:
		
							parent
							
								
									7c63a7957b
								
							
						
					
					
						commit
						7478f4bb1f
					
				| 
						 | 
					@ -9,6 +9,7 @@ import Weapon from "../GameSystems/items/Weapon";
 | 
				
			||||||
import BattlerAI from "./BattlerAI";
 | 
					import BattlerAI from "./BattlerAI";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Patrol from "./EnemyStates/Patrol";
 | 
					import Patrol from "./EnemyStates/Patrol";
 | 
				
			||||||
 | 
					import Alert from "./EnemyStates/Alert";
 | 
				
			||||||
import { GameState, Statuses } from "../sword_enums";
 | 
					import { GameState, Statuses } from "../sword_enums";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import Sprite from "../../Wolfie2D/Nodes/Sprites/Sprite";
 | 
					import Sprite from "../../Wolfie2D/Nodes/Sprites/Sprite";
 | 
				
			||||||
| 
						 | 
					@ -32,6 +33,8 @@ export default class EnemyAI extends StateMachineAI implements BattlerAI {
 | 
				
			||||||
    /** The default movement speed of this AI */
 | 
					    /** The default movement speed of this AI */
 | 
				
			||||||
    speed: number = 20;
 | 
					    speed: number = 20;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    maxSpeed: number = 40;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** The weapon this AI has */
 | 
					    /** The weapon this AI has */
 | 
				
			||||||
    weapon: Weapon;
 | 
					    weapon: Weapon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,7 +84,7 @@ export default class EnemyAI extends StateMachineAI implements BattlerAI {
 | 
				
			||||||
        //add states
 | 
					        //add states
 | 
				
			||||||
         // Patrol mode
 | 
					         // Patrol mode
 | 
				
			||||||
        this.addState(EnemyStates.PATROL, new Patrol(this, owner));
 | 
					        this.addState(EnemyStates.PATROL, new Patrol(this, owner));
 | 
				
			||||||
        // this.addState(EnemyStates.ALERT,)
 | 
					        this.addState(EnemyStates.ALERT, new Alert(this, owner));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        this.maxHealth = options.health;
 | 
					        this.maxHealth = options.health;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										33
									
								
								src/shattered_sword/AI/EnemyStates/Alert.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/shattered_sword/AI/EnemyStates/Alert.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					import EnemyAI, { EnemyStates } from "../EnemyAI";
 | 
				
			||||||
 | 
					import EnemyState from "./EnemyState";
 | 
				
			||||||
 | 
					import Sprite from "../../../Wolfie2D/Nodes/Sprites/Sprite";
 | 
				
			||||||
 | 
					import AnimatedSprite from "../../../Wolfie2D/Nodes/Sprites/AnimatedSprite";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class Alert extends EnemyState {
 | 
				
			||||||
 | 
					    onEnter(options: Record<string, any>): void {
 | 
				
			||||||
 | 
					        (<AnimatedSprite>this.owner).animation.playIfNotAlready("IDLE", true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    update(deltaT: number): void {
 | 
				
			||||||
 | 
					        if(!this.canWalk()){
 | 
				
			||||||
 | 
					            this.parent.direction *= -1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        let position = this.parent.getPlayerPosition();
 | 
				
			||||||
 | 
					        if (position) {
 | 
				
			||||||
 | 
					            this.parent.velocity.x = this.parent.maxSpeed * Math.sign(position.x - this.owner.position.x);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            this.parent.velocity.x = 0;
 | 
				
			||||||
 | 
					            this.finished(EnemyStates.PATROL);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        (<Sprite>this.owner).invertX = this.parent.velocity.x > 0 ? true : false ;
 | 
				
			||||||
 | 
					        super.update(deltaT);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    onExit(): Record<string, any> {
 | 
				
			||||||
 | 
					        (<AnimatedSprite>this.owner).animation.stop();
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,9 @@ export default class Patrol extends EnemyState {
 | 
				
			||||||
        this.parent.velocity.x = this.parent.direction * this.parent.speed;
 | 
					        this.parent.velocity.x = this.parent.direction * this.parent.speed;
 | 
				
			||||||
        (<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
 | 
					        (<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (this.parent.getPlayerPosition()) {
 | 
				
			||||||
 | 
					            this.finished(EnemyStates.ALERT);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        super.update(deltaT);
 | 
					        super.update(deltaT);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user