forked from msylvester/Pokemon-Tonail
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglobal_map.py
30 lines (26 loc) · 971 Bytes
/
global_map.py
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
import json
import os
MAP_PATH = os.path.join(os.path.dirname(__file__), "map_data.json")
PAD = 20
GLOBAL_MAP_SHAPE = (444 + PAD * 2, 436 + PAD * 2)
MAP_ROW_OFFSET = PAD
MAP_COL_OFFSET = PAD
with open(MAP_PATH) as map_data:
MAP_DATA = json.load(map_data)["regions"]
MAP_DATA = {int(e["id"]): e for e in MAP_DATA}
# Handle KeyErrors
def local_to_global(r: int, c: int, map_n: int):
try:
(
map_x,
map_y,
) = MAP_DATA[map_n]["coordinates"]
gy = r + map_y + MAP_ROW_OFFSET
gx = c + map_x + MAP_COL_OFFSET
if 0 <= gy < GLOBAL_MAP_SHAPE[0] and 0 <= gx < GLOBAL_MAP_SHAPE[1]:
return gy, gx
print(f"coord out of bounds! global: ({gx}, {gy}) game: ({r}, {c}, {map_n})")
return GLOBAL_MAP_SHAPE[0] // 2, GLOBAL_MAP_SHAPE[1] // 2
except KeyError:
print(f"Map id {map_n} not found in map_data.json.")
return GLOBAL_MAP_SHAPE[0] // 2, GLOBAL_MAP_SHAPE[1] // 2