Files
rogue/src/core/config/GameConfig.ts

218 lines
6.0 KiB
TypeScript

export interface AnimationConfig {
key: string;
textureKey: string;
frames: number[];
frameRate: number;
repeat: number;
}
export const GAME_CONFIG = {
player: {
initialStats: {
maxHp: 20,
hp: 20,
maxMana: 20,
mana: 20,
attack: 5,
defense: 2,
level: 1,
exp: 0,
expToNextLevel: 10,
statPoints: 0,
skillPoints: 0,
strength: 10,
dexterity: 10,
intelligence: 10,
// Offensive
critChance: 5,
critMultiplier: 150,
accuracy: 90,
lifesteal: 0,
// Defensive
evasion: 5,
blockChance: 0,
// Utility
luck: 0,
passiveNodes: [] as string[]
},
speed: 100,
viewRadius: 8,
reloadDuration: 3,
},
map: {
width: 60,
height: 40,
minRooms: 8,
maxRooms: 13,
roomMinWidth: 5,
roomMaxWidth: 12,
roomMinHeight: 4,
roomMaxHeight: 10
},
enemies: {
rat: {
baseHp: 8,
baseAttack: 3,
baseDefense: 0,
minSpeed: 80,
maxSpeed: 110,
expValue: 5
},
bat: {
baseHp: 6,
baseAttack: 4,
baseDefense: 0,
minSpeed: 110,
maxSpeed: 140,
expValue: 8
}
},
enemyScaling: {
baseCount: 0,
baseCountPerFloor: 0,
hpPerFloor: 5,
attackPerTwoFloors: 1,
expMultiplier: 1.2
},
trapScaling: {
baseCount: 0,
baseCountPerFloor: 0.5
},
leveling: {
baseExpToNextLevel: 10,
expMultiplier: 1.5,
hpGainPerLevel: 5,
manaGainPerLevel: 3,
attackGainPerLevel: 1,
statPointsPerLevel: 5,
skillPointsPerLevel: 1
},
mana: {
regenPerTurn: 2,
regenInterval: 3 // Regenerate every 3 turns
},
rendering: {
tileSize: 16,
cameraZoom: 2,
minZoom: 0.5,
maxZoom: 4,
zoomStep: 0.1,
wallColor: 0x2b2b2b,
floorColor: 0x161616,
exitColor: 0xffd166,
playerColor: 0x66ff66,
enemyColor: 0xff6666,
pathPreviewColor: 0x3355ff,
expOrbColor: 0x33ccff,
expTextColor: 0x33ccff,
levelUpColor: 0xffff00,
fogAlphaFloor: 0.15,
fogAlphaWall: 0.35,
visibleMinAlpha: 0.35,
visibleMaxAlpha: 1.0,
visibleStrengthFactor: 0.65,
tracks: {
endTop: 67,
endBottom: 68,
cornerNE: 93,
horizontal: 70,
cornerSE: 69,
endLeft: 79,
endRight: 80,
vertical: 81,
cornerSW: 71,
cornerNW: 95
},
mineCarts: {
horizontal: 54,
vertical: 55,
turning: 56
},
moveDuration: 62 // Visual duration for movement in ms
},
ui: {
// ... rest of content ...
minimapPanelWidth: 340,
minimapPanelHeight: 220,
minimapPadding: 20,
menuPanelWidth: 340,
menuPanelHeight: 220,
// Targeting
targetingLineColor: 0xff0000,
targetingLineWidth: 2,
targetingLineAlpha: 0.7,
targetingLineDash: 6,
targetingLineGap: 4,
targetingLineShorten: 8
},
gameplay: {
energyThreshold: 100,
actionCost: 100,
ceramicDragonHead: {
range: 4,
initialDamage: 7,
burnDamage: 3,
burnDuration: 5,
rechargeTurns: 20,
maxCharges: 3
}
},
assets: {
spritesheets: [
{ key: "warrior", path: "assets/sprites/actors/player/warrior.png", frameConfig: { frameWidth: 12, frameHeight: 15 } },
{ key: "rat", path: "assets/sprites/actors/enemies/rat.png", frameConfig: { frameWidth: 16, frameHeight: 15 } },
{ key: "bat", path: "assets/sprites/actors/enemies/bat.png", frameConfig: { frameWidth: 15, frameHeight: 15 } },
{ key: "dungeon", path: "assets/tilesets/dungeon.png", frameConfig: { frameWidth: 16, frameHeight: 16 } },
{ key: "kennys_dungeon", path: "assets/tilesets/kennys_dungeon.png", frameConfig: { frameWidth: 16, frameHeight: 16 } },
{ key: "items", path: "assets/sprites/items/items.png", frameConfig: { frameWidth: 16, frameHeight: 16 } },
{ key: "weapons", path: "assets/sprites/items/weapons.png", frameConfig: { frameWidth: 24, frameHeight: 24 } }
],
images: [
{ key: "splash_bg", path: "assets/ui/splash_bg.png" },
{ key: "character_outline", path: "assets/ui/character_outline.png" },
{ key: "ceramic_dragon_head", path: "assets/sprites/items/ceramic_dragon_head.png" },
{ key: "PriestessNorth", path: "assets/sprites/priestess/PriestessNorth.png" },
{ key: "PriestessSouth", path: "assets/sprites/priestess/PriestessSouth.png" },
{ key: "PriestessEast", path: "assets/sprites/priestess/PriestessEast.png" },
{ key: "PriestessWest", path: "assets/sprites/priestess/PriestessWest.png" },
{ key: "mine_cart", path: "assets/sprites/items/mine_cart.png" },
{ key: "track_straight", path: "assets/sprites/items/track_straight.png" },
{ key: "track_corner", path: "assets/sprites/items/track_corner.png" },
{ key: "track_vertical", path: "assets/sprites/items/track_vertical.png" }
]
},
animations: [
// Warrior
{ key: "warrior-idle", textureKey: "warrior", frames: [0, 0, 0, 1, 0, 0, 1, 1], frameRate: 2, repeat: -1 },
{ key: "warrior-run", textureKey: "warrior", frames: [2, 3, 4, 5, 6, 7], frameRate: 15, repeat: -1 },
{ key: "warrior-die", textureKey: "warrior", frames: [8, 9, 10, 11, 12], frameRate: 10, repeat: 0 },
// Rat
{ key: "rat-idle", textureKey: "rat", frames: [0, 0, 0, 1], frameRate: 4, repeat: -1 },
{ key: "rat-run", textureKey: "rat", frames: [6, 7, 8, 9, 10], frameRate: 10, repeat: -1 },
{ key: "rat-die", textureKey: "rat", frames: [11, 12, 13, 14], frameRate: 10, repeat: 0 },
// Bat
{ key: "bat-idle", textureKey: "bat", frames: [0, 1], frameRate: 8, repeat: -1 },
{ key: "bat-run", textureKey: "bat", frames: [0, 1], frameRate: 12, repeat: -1 },
{ key: "bat-die", textureKey: "bat", frames: [4, 5, 6], frameRate: 10, repeat: 0 },
]
} as const;
export type GameConfig = typeof GAME_CONFIG;