refactor game scene
This commit is contained in:
65
src/scenes/rendering/GameRenderer.ts
Normal file
65
src/scenes/rendering/GameRenderer.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { DungeonRenderer } from "../../rendering/DungeonRenderer";
|
||||
import { renderSimEvents, type EventRenderCallbacks } from "../systems/EventRenderer";
|
||||
import { type SimEvent, type EntityId, type ActorType } from "../../core/types";
|
||||
import { type EntityAccessor } from "../../engine/EntityAccessor";
|
||||
|
||||
export class GameRenderer implements EventRenderCallbacks {
|
||||
private dungeonRenderer: DungeonRenderer;
|
||||
|
||||
constructor(dungeonRenderer: DungeonRenderer) {
|
||||
this.dungeonRenderer = dungeonRenderer;
|
||||
}
|
||||
|
||||
public renderEvents(events: SimEvent[], playerId: EntityId, accessor: EntityAccessor) {
|
||||
renderSimEvents(events, this, {
|
||||
playerId: playerId,
|
||||
getPlayerPos: () => accessor.getPlayerPos()
|
||||
});
|
||||
}
|
||||
|
||||
// Delegation Methods
|
||||
showDamage(x: number, y: number, amount: number, isCrit?: boolean, isBlock?: boolean): void {
|
||||
this.dungeonRenderer.showDamage(x, y, amount, isCrit, isBlock);
|
||||
}
|
||||
|
||||
showDodge(x: number, y: number): void {
|
||||
this.dungeonRenderer.showDodge(x, y);
|
||||
}
|
||||
|
||||
showHeal(x: number, y: number, amount: number): void {
|
||||
this.dungeonRenderer.showHeal(x, y, amount);
|
||||
}
|
||||
|
||||
spawnCorpse(x: number, y: number, type: ActorType): void {
|
||||
this.dungeonRenderer.spawnCorpse(x, y, type);
|
||||
}
|
||||
|
||||
showWait(x: number, y: number): void {
|
||||
this.dungeonRenderer.showWait(x, y);
|
||||
}
|
||||
|
||||
spawnOrb(orbId: EntityId, x: number, y: number): void {
|
||||
this.dungeonRenderer.spawnOrb(orbId, x, y);
|
||||
}
|
||||
|
||||
collectOrb(actorId: EntityId, amount: number, x: number, y: number): void {
|
||||
this.dungeonRenderer.collectOrb(actorId, amount, x, y);
|
||||
}
|
||||
|
||||
showLevelUp(x: number, y: number): void {
|
||||
this.dungeonRenderer.showLevelUp(x, y);
|
||||
}
|
||||
|
||||
showAlert(x: number, y: number): void {
|
||||
this.dungeonRenderer.showAlert(x, y);
|
||||
}
|
||||
|
||||
showFloatingText(x: number, y: number, message: string, color: string): void {
|
||||
this.dungeonRenderer.showFloatingText(x, y, message, color);
|
||||
}
|
||||
|
||||
spawnLoot(x: number, y: number, itemName: string): void {
|
||||
// Optional hook if we wanted to visualize loot spawn specifically here
|
||||
this.dungeonRenderer.showFloatingText(x, y, `${itemName}!`, "#ffd700");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user