Files
rogue/src/scenes/rendering/GameRenderer.ts
2026-02-07 12:54:25 +11:00

66 lines
2.3 KiB
TypeScript

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, targetId?: EntityId): void {
this.dungeonRenderer.spawnCorpse(x, y, type, targetId);
}
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");
}
}