Create enemy type

This commit is contained in:
Peter Stockings
2026-01-05 13:00:16 +11:00
parent 161da3a64a
commit e223bf4b40
4 changed files with 10 additions and 8 deletions

View File

@@ -3,6 +3,8 @@ export type EntityId = number;
export type Vec2 = { x: number; y: number }; export type Vec2 = { x: number; y: number };
export type Tile = number; export type Tile = number;
export type EnemyType = "rat" | "bat" | "spider";
export type ActorType = "player" | EnemyType;
export type Action = export type Action =
| { type: "move"; dx: number; dy: number } | { type: "move"; dx: number; dy: number }
@@ -15,7 +17,7 @@ export type SimEvent =
| { type: "damaged"; targetId: EntityId; amount: number; hp: number; x: number; y: number; isCrit?: boolean; isBlock?: boolean } | { type: "damaged"; targetId: EntityId; amount: number; hp: number; x: number; y: number; isCrit?: boolean; isBlock?: boolean }
| { type: "dodged"; targetId: EntityId; x: number; y: number } | { type: "dodged"; targetId: EntityId; x: number; y: number }
| { type: "healed"; actorId: EntityId; amount: number; x: number; y: number } | { type: "healed"; actorId: EntityId; amount: number; x: number; y: number }
| { type: "killed"; targetId: EntityId; killerId: EntityId; x: number; y: number; victimType?: "player" | "rat" | "bat" } | { type: "killed"; targetId: EntityId; killerId: EntityId; x: number; y: number; victimType?: ActorType }
| { type: "waited"; actorId: EntityId } | { type: "waited"; actorId: EntityId }
| { type: "exp-collected"; actorId: EntityId; amount: number; x: number; y: number } | { type: "exp-collected"; actorId: EntityId; amount: number; x: number; y: number }
@@ -107,7 +109,7 @@ export interface BaseActor {
export interface CombatantActor extends BaseActor { export interface CombatantActor extends BaseActor {
category: "combatant"; category: "combatant";
isPlayer: boolean; isPlayer: boolean;
type: "player" | "rat" | "bat"; type: ActorType;
speed: number; speed: number;
energy: number; energy: number;
stats: Stats; stats: Stats;

View File

@@ -1,4 +1,4 @@
import type { World, EntityId, Action, SimEvent, Actor, CombatantActor, CollectibleActor } from "../../core/types"; import type { World, EntityId, Action, SimEvent, Actor, CombatantActor, CollectibleActor, ActorType } from "../../core/types";
import { isBlocked } from "../world/world-logic"; import { isBlocked } from "../world/world-logic";
import { GAME_CONFIG } from "../../core/config/GameConfig"; import { GAME_CONFIG } from "../../core/config/GameConfig";
@@ -181,7 +181,7 @@ function handleAttack(w: World, actor: Actor, action: { targetId: EntityId }): S
killerId: actor.id, killerId: actor.id,
x: target.pos.x, x: target.pos.x,
y: target.pos.y, y: target.pos.y,
victimType: target.type as "player" | "rat" | "bat" victimType: target.type as ActorType
}); });
w.actors.delete(target.id); w.actors.delete(target.id);

View File

@@ -1,5 +1,5 @@
import Phaser from "phaser"; import Phaser from "phaser";
import { type World, type EntityId, type Vec2 } from "../core/types"; import { type World, type EntityId, type Vec2, type ActorType } from "../core/types";
import { TILE_SIZE } from "../core/constants"; import { TILE_SIZE } from "../core/constants";
import { idx, isWall } from "../engine/world/world-logic"; import { idx, isWall } from "../engine/world/world-logic";
import { GAME_CONFIG } from "../core/config/GameConfig"; import { GAME_CONFIG } from "../core/config/GameConfig";
@@ -264,7 +264,7 @@ export class DungeonRenderer {
this.fxRenderer.showHeal(x, y, amount); this.fxRenderer.showHeal(x, y, amount);
} }
spawnCorpse(x: number, y: number, type: "player" | "rat" | "bat") { spawnCorpse(x: number, y: number, type: ActorType) {
this.fxRenderer.spawnCorpse(x, y, type); this.fxRenderer.spawnCorpse(x, y, type);
} }

View File

@@ -1,5 +1,5 @@
import Phaser from "phaser"; import Phaser from "phaser";
import { type EntityId } from "../core/types"; import { type EntityId, type ActorType } from "../core/types";
import { TILE_SIZE } from "../core/constants"; import { TILE_SIZE } from "../core/constants";
import { GAME_CONFIG } from "../core/config/GameConfig"; import { GAME_CONFIG } from "../core/config/GameConfig";
@@ -109,7 +109,7 @@ export class FxRenderer {
}); });
} }
spawnCorpse(x: number, y: number, type: "player" | "rat" | "bat") { spawnCorpse(x: number, y: number, type: ActorType) {
const textureKey = type === "player" ? "warrior" : type; const textureKey = type === "player" ? "warrior" : type;
const corpse = this.scene.add.sprite( const corpse = this.scene.add.sprite(