1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
const Config = {
colors: {
BACKGROUND: 'rgba(135, 207, 235, 1)',
GRID: 'rgba(0, 0, 0, 0.25)',
PLAYER: 'red',
HEX_FILL: '#ffffff',
FOG: {
HIDDEN: 'rgba(0, 0, 0, 1)',
REVEALED: 'rgba(0, 0, 0, 0.25)',
GRID_DIM: 'rgba(0, 0, 0, 0.0)'
},
UI: {
INVENTORY: {
BACKGROUND: 'rgba(0, 0, 0, 0.7)',
WINDOW: '#ffffff',
TEXT: '#000000'
}
},
ITEMS: {
COIN: '#FFD700',
GEM: '#50C878'
}
},
hex: {
SIZE: 40, // Size of a single hex
GRID_SIZE: 30, // Number of hexes in the grid (width/height)
get WIDTH() { // Computed hex width
return this.SIZE * 2;
},
get HEIGHT() { // Computed hex height
return Math.sqrt(3) * this.SIZE;
}
},
game: {
FPS: 60,
get FRAME_TIME() {
return 1000 / this.FPS;
}
},
player: {
MOVE_SPEED: 0.1,
SIZE_RATIO: 1/3,
VISION_RANGE: 3,
SPRITE_SCALE: 0.8,
ANIMATION_SPEED: 500
},
camera: {
FOLLOW_SPEED: 0.1,
DEADZONE_RATIO_X: {
NARROW: 0.1,
WIDE: 0.2
},
DEADZONE_RATIO_Y: 0.2,
MIN_DEADZONE: 30,
MAX_DEADZONE: 200,
NARROW_SCREEN_THRESHOLD: 600
},
ui: {
inventory: {
PADDING: 20,
WIDTH: 300,
HEIGHT: 400,
TITLE_FONT: '20px Arial',
ITEM_FONT: '16px Arial',
ITEM_SPACING: 30,
TITLE_OFFSET: 20,
ITEMS_START_OFFSET: 60
}
},
items: {
SPAWN_COUNT: 10,
types: {
COIN: {
name: 'Coin',
size: 0.2
},
GEM: {
name: 'Gem',
size: 0.25
}
}
},
fog: {
states: {
HIDDEN: { alpha: 1.0 },
REVEALED: { alpha: 0.5 },
VISIBLE: { alpha: 0 }
}
}
};
|