| import type { PicletType, AttackType } from '../types/picletTypes'; |
| import type { SpecialAbility } from '../battle-engine/types'; |
|
|
| |
| export enum EncounterType { |
| WILD_PICLET = 'wildPiclet', |
| TRAINER_BATTLE = 'trainerBattle', |
| SHOP = 'shop', |
| HEALTH_CENTER = 'healthCenter', |
| FIRST_PICLET = 'firstPiclet' |
| } |
|
|
| |
| export interface BattleMove { |
| name: string; |
| type: AttackType; |
| power: number; |
| accuracy: number; |
| pp: number; |
| currentPp: number; |
| description: string; |
| unlockLevel: number; |
| } |
|
|
| |
| export interface PicletInstance { |
| id?: number; |
| |
| |
| typeId: string; |
| nickname?: string; |
| primaryType: PicletType; |
| secondaryType?: PicletType; |
| |
| |
| currentHp: number; |
| maxHp: number; |
| level: number; |
| xp: number; |
| attack: number; |
| defense: number; |
| fieldAttack: number; |
| fieldDefense: number; |
| speed: number; |
| |
| |
| baseHp: number; |
| baseAttack: number; |
| baseDefense: number; |
| baseFieldAttack: number; |
| baseFieldDefense: number; |
| baseSpeed: number; |
| |
| |
| moves: BattleMove[]; |
| nature: string; |
| specialAbility: SpecialAbility; |
| specialAbilityUnlockLevel: number; |
| |
| |
| isInRoster: boolean; |
| rosterPosition?: number; |
| |
| |
| caught: boolean; |
| caughtAt?: Date; |
| bst: number; |
| tier: string; |
| role: string; |
| variance: number; |
| |
| |
| imageUrl: string; |
| imageData?: string; |
| imageCaption: string; |
| concept: string; |
| description: string; |
| imagePrompt: string; |
| } |
|
|
| |
| export interface Encounter { |
| id?: number; |
| |
| |
| type: EncounterType; |
| |
| |
| title: string; |
| description: string; |
| picletTypeId?: string; |
| picletInstanceId?: number; |
| enemyLevel?: number; |
| |
| |
| createdAt: Date; |
| } |
|
|
| |
| export interface GameState { |
| id?: number; |
| |
| |
| lastEncounterRefresh: Date; |
| lastPlayed: Date; |
| |
| |
| progressPoints: number; |
| trainersDefeated: number; |
| picletsCapured: number; |
| battlesLost: number; |
| } |
|
|
| |
| export enum BattlePhase { |
| INTRO = 'intro', |
| MAIN = 'main', |
| MOVE_SELECT = 'moveSelect', |
| PICLET_SELECT = 'picletSelect', |
| FORCED_SWAP = 'forcedSwap', |
| BATTLE_END = 'battleEnd' |
| } |
|
|
| export enum ActionView { |
| MAIN = 'main', |
| MOVES = 'moves', |
| PICLETS = 'piclets', |
| ITEMS = 'items', |
| FORCED_SWAP = 'forcedSwap' |
| } |
|
|
| export interface BattleState { |
| phase: BattlePhase; |
| currentTurn: number; |
| playerPiclet: PicletInstance; |
| enemyPiclet: PicletInstance; |
| isWildBattle: boolean; |
| processingTurn: boolean; |
| battleEnded: boolean; |
| winner?: 'player' | 'enemy'; |
| capturedPiclet?: PicletInstance; |
| } |
|
|
| |
| export interface TrainerScanProgress { |
| id?: number; |
| |
| |
| imagePath: string; |
| trainerName: string; |
| imageIndex: number; |
| |
| |
| status: 'pending' | 'processing' | 'completed' | 'failed'; |
| |
| |
| picletInstanceId?: number; |
| errorMessage?: string; |
| |
| |
| startedAt?: Date; |
| completedAt?: Date; |
| |
| |
| remoteUrl: string; |
| } |
|
|
|
|