82
src/types/game.ts
Normal file
82
src/types/game.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
import type {TimedBuildBuff} from './build';
|
||||
import type {Character} from './characters';
|
||||
import {
|
||||
AnimationState,
|
||||
type CombatActionMode,
|
||||
type NpcBattleMode,
|
||||
type NpcBattleOutcome,
|
||||
WorldType,
|
||||
} from './core';
|
||||
import type {CustomWorldProfile} from './customWorld';
|
||||
import type {EquipmentLoadout, InventoryItem} from './items';
|
||||
import type {
|
||||
CombatVisualEffect,
|
||||
CompanionState,
|
||||
Encounter,
|
||||
NpcPersistentState,
|
||||
SceneEncounterResult,
|
||||
SceneHostileNpc,
|
||||
ScenePresetInfo,
|
||||
} from './scene';
|
||||
import type {CharacterChatRecord, QuestLogEntry, StoryMoment} from './story';
|
||||
|
||||
export interface GameRuntimeStats {
|
||||
playTimeMs: number;
|
||||
lastPlayTickAt: string | null;
|
||||
hostileNpcsDefeated: number;
|
||||
questsAccepted: number;
|
||||
itemsUsed: number;
|
||||
scenesTraveled: number;
|
||||
}
|
||||
|
||||
export interface GameState {
|
||||
worldType: WorldType | null;
|
||||
customWorldProfile: CustomWorldProfile | null;
|
||||
playerCharacter: Character | null;
|
||||
runtimeStats: GameRuntimeStats;
|
||||
currentScene: string;
|
||||
storyHistory: StoryMoment[];
|
||||
characterChats: Record<string, CharacterChatRecord>;
|
||||
ambientIdleMode?: 'observe_signs';
|
||||
lastObserveSignsSceneId?: string | null;
|
||||
lastObserveSignsReport?: string | null;
|
||||
animationState: AnimationState;
|
||||
currentEncounter: Encounter | null;
|
||||
npcInteractionActive: boolean;
|
||||
currentScenePreset: ScenePresetInfo | null;
|
||||
sceneMonsters: SceneHostileNpc[];
|
||||
sceneHostileNpcs?: SceneHostileNpc[];
|
||||
playerX: number;
|
||||
playerOffsetY: number;
|
||||
playerFacing: 'left' | 'right';
|
||||
playerActionMode: CombatActionMode;
|
||||
scrollWorld: boolean;
|
||||
inBattle: boolean;
|
||||
playerHp: number;
|
||||
playerMaxHp: number;
|
||||
playerMana: number;
|
||||
playerMaxMana: number;
|
||||
playerSkillCooldowns: Record<string, number>;
|
||||
activeBuildBuffs?: TimedBuildBuff[];
|
||||
activeCombatEffects: CombatVisualEffect[];
|
||||
playerCurrency: number;
|
||||
playerInventory: InventoryItem[];
|
||||
playerEquipment: EquipmentLoadout;
|
||||
npcStates: Record<string, NpcPersistentState>;
|
||||
quests: QuestLogEntry[];
|
||||
roster: CompanionState[];
|
||||
companions: CompanionState[];
|
||||
currentBattleNpcId: string | null;
|
||||
currentNpcBattleMode: NpcBattleMode | null;
|
||||
currentNpcBattleOutcome: NpcBattleOutcome | null;
|
||||
sparReturnEncounter: Encounter | null;
|
||||
sparPlayerHpBefore: number | null;
|
||||
sparPlayerMaxHpBefore: number | null;
|
||||
sparStoryHistoryBefore: StoryMoment[] | null;
|
||||
}
|
||||
|
||||
export interface AIResponse {
|
||||
storyText: string;
|
||||
options: StoryMoment['options'];
|
||||
encounter?: SceneEncounterResult;
|
||||
}
|
||||
Reference in New Issue
Block a user