fix: enemy play walk animation
This commit is contained in:
		
							parent
							
								
									1726ba3653
								
							
						
					
					
						commit
						94da5fef26
					
				| 
						 | 
					@ -54,7 +54,7 @@
 | 
				
			||||||
         ]
 | 
					         ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
         "name": "walk",
 | 
					         "name": "WALK",
 | 
				
			||||||
         "repeat": true,
 | 
					         "repeat": true,
 | 
				
			||||||
         "frames": [
 | 
					         "frames": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,12 +4,11 @@ import Vec2 from "../../Wolfie2D/DataTypes/Vec2";
 | 
				
			||||||
import GameNode from "../../Wolfie2D/Nodes/GameNode";
 | 
					import GameNode from "../../Wolfie2D/Nodes/GameNode";
 | 
				
			||||||
import AnimatedSprite from "../../Wolfie2D/Nodes/Sprites/AnimatedSprite";
 | 
					import AnimatedSprite from "../../Wolfie2D/Nodes/Sprites/AnimatedSprite";
 | 
				
			||||||
import OrthogonalTilemap from "../../Wolfie2D/Nodes/Tilemaps/OrthogonalTilemap";
 | 
					import OrthogonalTilemap from "../../Wolfie2D/Nodes/Tilemaps/OrthogonalTilemap";
 | 
				
			||||||
import NavigationPath from "../../Wolfie2D/Pathfinding/NavigationPath";
 | 
					 | 
				
			||||||
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 Alert from "./EnemyStates/Alert";
 | 
				
			||||||
 | 
					import Attack from "./EnemyStates/Attack";
 | 
				
			||||||
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";
 | 
				
			||||||
| 
						 | 
					@ -35,24 +34,12 @@ export default class EnemyAI extends StateMachineAI implements BattlerAI {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    maxSpeed: number = 40;
 | 
					    maxSpeed: number = 40;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** The weapon this AI has */
 | 
					 | 
				
			||||||
    weapon: Weapon;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /** A reference to the player object */
 | 
					    /** A reference to the player object */
 | 
				
			||||||
    player: GameNode;
 | 
					    player: GameNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The current known position of the player
 | 
					    // The current known position of the player
 | 
				
			||||||
    playerPos: Vec2;
 | 
					    playerPos: Vec2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // The last known position of the player
 | 
					 | 
				
			||||||
    lastPlayerPos: Vec2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Path to player
 | 
					 | 
				
			||||||
    //path: NavigationPath;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Path away from player
 | 
					 | 
				
			||||||
    retreatPath: NavigationPath;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    tilemap: OrthogonalTilemap;
 | 
					    tilemap: OrthogonalTilemap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    velocity: Vec2 = Vec2.ZERO;
 | 
					    velocity: Vec2 = Vec2.ZERO;
 | 
				
			||||||
| 
						 | 
					@ -85,13 +72,12 @@ export default class EnemyAI extends StateMachineAI implements BattlerAI {
 | 
				
			||||||
         // Patrol mode
 | 
					         // Patrol mode
 | 
				
			||||||
        this.addState(EnemyStates.PATROL, new Patrol(this, owner));
 | 
					        this.addState(EnemyStates.PATROL, new Patrol(this, owner));
 | 
				
			||||||
        this.addState(EnemyStates.ALERT, new Alert(this, owner));
 | 
					        this.addState(EnemyStates.ALERT, new Alert(this, owner));
 | 
				
			||||||
 | 
					        this.addState(EnemyStates.ATTACK, new Attack(this, owner));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        this.maxHealth = options.health;
 | 
					        this.maxHealth = options.health;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.CURRENT_HP = options.health;
 | 
					        this.CURRENT_HP = options.health;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.weapon = options.weapon;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.player = options.player;
 | 
					        this.player = options.player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //TODO - get correct tilemap
 | 
					        //TODO - get correct tilemap
 | 
				
			||||||
| 
						 | 
					@ -190,7 +176,6 @@ export default class EnemyAI extends StateMachineAI implements BattlerAI {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return pos;
 | 
					        return pos;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,13 +5,16 @@ import AnimatedSprite from "../../../Wolfie2D/Nodes/Sprites/AnimatedSprite";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class Alert extends EnemyState {
 | 
					export default class Alert extends EnemyState {
 | 
				
			||||||
    onEnter(options: Record<string, any>): void {
 | 
					    onEnter(options: Record<string, any>): void {
 | 
				
			||||||
        (<AnimatedSprite>this.owner).animation.playIfNotAlready("IDLE", true);
 | 
					        (<AnimatedSprite>this.owner).animation.playIfNotAlready("WALK", true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    update(deltaT: number): void {
 | 
					    update(deltaT: number): void {
 | 
				
			||||||
        let position = this.parent.getPlayerPosition();
 | 
					        let position = this.parent.getPlayerPosition();
 | 
				
			||||||
        if (position) {
 | 
					        if (position) {
 | 
				
			||||||
            this.parent.velocity.x = this.parent.maxSpeed * Math.sign(position.x - this.owner.position.x);
 | 
					            this.parent.velocity.x = this.parent.maxSpeed * Math.sign(position.x - this.owner.position.x);
 | 
				
			||||||
 | 
					            if (this.parent.attackTimer.isStopped()) {
 | 
				
			||||||
 | 
					                this.finished(EnemyStates.ATTACK);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            this.parent.velocity.x = 0;
 | 
					            this.parent.velocity.x = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								src/shattered_sword/AI/EnemyStates/Attack.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/shattered_sword/AI/EnemyStates/Attack.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					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("WALK", true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    update(deltaT: number): void {
 | 
				
			||||||
 | 
					        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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.parent.direction = this.parent.velocity.x >= 0 ? 1 : -1;
 | 
				
			||||||
 | 
					        if (!this.canWalk()) {
 | 
				
			||||||
 | 
					            this.parent.velocity.x = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        (<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
 | 
				
			||||||
 | 
					        super.update(deltaT);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    onExit(): Record<string, any> {
 | 
				
			||||||
 | 
					        (<AnimatedSprite>this.owner).animation.stop();
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user