feat(economy): add types for minigame engine requirements and rewards
This commit is contained in:
51
src/game/minigames/types.ts
Normal file
51
src/game/minigames/types.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
// Tipos para motor de minijuegos (mina, pesca, pelea, plantar).
|
||||
// JSON flexible: estos tipos solo guían el shape esperado en GameAreaLevel.requirements/rewards/mobs.
|
||||
|
||||
export type ToolRequirement = {
|
||||
required?: boolean; // si se requiere herramienta
|
||||
toolType?: string; // 'pickaxe' | 'rod' | 'sword' | ...
|
||||
minTier?: number; // nivel mínimo de herramienta
|
||||
allowedKeys?: string[]; // lista blanca de item keys específicos
|
||||
};
|
||||
|
||||
export type LevelRequirements = {
|
||||
tool?: ToolRequirement;
|
||||
// extensible: stamina, consumibles, roles requeridos, etc.
|
||||
[k: string]: unknown;
|
||||
};
|
||||
|
||||
export type WeightedReward =
|
||||
| { type: 'coins'; amount: number; weight: number }
|
||||
| { type: 'item'; itemKey: string; qty: number; weight: number };
|
||||
|
||||
export type RewardsTable = {
|
||||
draws?: number; // cuántas extracciones realizar (default 1)
|
||||
table: WeightedReward[];
|
||||
};
|
||||
|
||||
export type WeightedMob = { mobKey: string; weight: number };
|
||||
|
||||
export type MobsTable = {
|
||||
draws?: number; // cuántos mobs intentar spawnear (default 0)
|
||||
table: WeightedMob[];
|
||||
};
|
||||
|
||||
export type LevelConfig = {
|
||||
requirements?: LevelRequirements;
|
||||
rewards?: RewardsTable;
|
||||
mobs?: MobsTable;
|
||||
// extensible: multiplicadores, riesgos, etc.
|
||||
[k: string]: unknown;
|
||||
};
|
||||
|
||||
export type RunMinigameOptions = {
|
||||
toolKey?: string; // herramienta elegida por el jugador
|
||||
};
|
||||
|
||||
export type RunResult = {
|
||||
success: boolean;
|
||||
rewards: Array<{ type: 'coins' | 'item'; amount?: number; itemKey?: string; qty?: number }>;
|
||||
mobs: string[]; // keys de mobs spawneados
|
||||
tool?: { key?: string; durabilityDelta?: number; broken?: boolean };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user