diff --git a/.luacheckrc b/.luacheckrc
index fa1e0e6..3d329af 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -30,6 +30,8 @@ globals = {
"exit",
"trace",
"index_menu",
+ "MapManager",
+ "map",
}
diff --git a/impostor.inc b/impostor.inc
index d69c758..19e2ee8 100644
--- a/impostor.inc
+++ b/impostor.inc
@@ -12,6 +12,8 @@ desition/desition.go_to_walking_to_home.lua
desition/desition.play_button_mash.lua
desition/desition.play_rhythm.lua
desition/desition.play_ddr.lua
+map/map.manager.lua
+map/map.bedroom.lua
screen/screen.manager.lua
screen/screen.home.lua
screen/screen.toilet.lua
@@ -24,7 +26,6 @@ system/system.print.lua
system/system.input.lua
system/system.audio.lua
system/system.ui.lua
-map/map.bedroom.lua
window/window.splash.lua
window/window.intro.lua
window/window.menu.lua
diff --git a/inc/desition/desition.manager.lua b/inc/desition/desition.manager.lua
index df82ea9..30471a1 100644
--- a/inc/desition/desition.manager.lua
+++ b/inc/desition/desition.manager.lua
@@ -3,29 +3,29 @@ DesitionManager = {}
local _desitions = {} -- Private table to store all desitions
-- Registers a decision object with the manager
--- desition_object: A table containing id, label, handle(), and condition()
-function DesitionManager.register(desition_object)
- if not desition_object or not desition_object.id then
+-- desition: A table containing id, label, handle(), and condition()
+function DesitionManager.register(desition)
+ if not desition or not desition.id then
PopupWindow.show({"Error: Invalid desition object registered (missing id)!"})
return
end
- if not desition_object.label then
+ if not desition.label then
PopupWindow.show({"Error: Invalid desition object registered (missing label)!"})
return
end
-- Ensure handle() and condition() methods exist with defaults if missing
- if not desition_object.condition then
- desition_object.condition = function() return true end
+ if not desition.condition then
+ desition.condition = function() return true end
end
- if not desition_object.handle then
- desition_object.handle = function() end
+ if not desition.handle then
+ desition.handle = function() end
end
- if _desitions[desition_object.id] then
+ if _desitions[desition.id] then
-- Optional: warning if overwriting an existing desition
- trace("Warning: Overwriting desition with id: " .. desition_object.id)
+ trace("Warning: Overwriting desition with id: " .. desition.id)
end
- _desitions[desition_object.id] = desition_object
+ _desitions[desition.id] = desition
end
-- Retrieves a desition by its id
diff --git a/inc/init/init.modules.lua b/inc/init/init.modules.lua
index c2af11c..0620467 100644
--- a/inc/init/init.modules.lua
+++ b/inc/init/init.modules.lua
@@ -10,7 +10,8 @@ local MinigameRhythmWindow = {}
local MinigameDDRWindow = {}
Util = {}
DesitionManager = {}
-ScreenManager = {} -- New declaration
+ScreenManager = {}
+MapManager = {}
UI = {}
Print = {}
Input = {}
diff --git a/inc/map/map.bedroom.lua b/inc/map/map.bedroom.lua
index 23351fd..1628abc 100644
--- a/inc/map/map.bedroom.lua
+++ b/inc/map/map.bedroom.lua
@@ -1,19 +1,9 @@
-MapBedroom = {
- "10101010101010101010101010101010",
- "10141410101010101010101010101010",
- "10141410101010101010101010101010",
- "10101010101010101010101010101010",
- "10101010101010101010101010101010",
- "10101010101010101010101010101010",
- "10101010101010101010101010101010",
- "10101010101010101010101010101010",
- "10101010101010101010101010101010",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111",
- "11111516111213111111111111111111",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111",
- "11111111111111111111111111111111"
-}
+MapManager.register({
+ id = "bedroom",
+ from_x = 0,
+ from_y = 0,
+ width = 30,
+ height = 17,
+ to_x = 0,
+ to_y = 0,
+})
\ No newline at end of file
diff --git a/inc/map/map.manager.lua b/inc/map/map.manager.lua
new file mode 100644
index 0000000..11c942f
--- /dev/null
+++ b/inc/map/map.manager.lua
@@ -0,0 +1,37 @@
+MapManager = {}
+
+local _maps = {}
+
+function MapManager.get_maps_array()
+ local maps_array = {}
+ for _, map_data in pairs(_maps) do
+ table.insert(maps_array, map_data)
+ end
+ return maps_array
+end
+
+function MapManager.register(map_data)
+ if _maps[map_data.id] then
+ trace("Warning: Overwriting map with id: " .. map_data.id)
+ end
+ _maps[map_data.id] = map_data
+end
+
+function MapManager.get_by_id(map_id)
+ return _maps[map_id]
+end
+
+function MapManager.draw(map_id)
+ local map_data = MapManager.get_by_id(map_id)
+ if not map_data then
+ return
+ end
+ map(
+ map_data.from_x,
+ map_data.from_y,
+ map_data.width,
+ map_data.height,
+ map_data.to_x,
+ map_data.to_y
+ )
+end
\ No newline at end of file
diff --git a/inc/meta/meta.assets.lua b/inc/meta/meta.assets.lua
index d102c73..9217649 100644
--- a/inc/meta/meta.assets.lua
+++ b/inc/meta/meta.assets.lua
@@ -1,6 +1,6 @@
--luacheck: ignore max_line_length
--
--- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
+-- 000:ab53375f574f0101017f2553c3c3c71d2b53fff1e929adff83779d3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
--
--
-- 000:060006400600064006000640060006400600060006000600060006000600060006000600060006000600060006000600060006000600060006000600300000000900
@@ -34,3 +34,280 @@
-- 008:0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f
-- 009:fff000fff000fff000fff000fff000ff
--
+--
+-- 000:2222222223333332233232322353533223323232232353322333333222222222
+-- 001:2222222223333333232322322333333323222322233333332355355522222222
+-- 002:2222222233333333223222233333333332232223333333333555535522222222
+-- 003:2222222223333333232322322333333323222322233333332355355522222222
+-- 004:2222222233333333223222233333333332232223333333333555535522222222
+-- 005:2222222223333333232322322333333323222322233333332355355522222222
+-- 006:2222222233333333223222233333333332232223333333333555535522222222
+-- 007:2222222223333333232322322333333323222322233333332355355522222222
+-- 008:2222222233333333223222233333333332232223333333333555535522222222
+-- 009:2222222223333333232322322333333323222322233333332355355522222222
+-- 010:2222222233333333223222233333333332232223333333333555535522222222
+-- 011:2222222223333333232322322333333323222322233333332355355522222222
+-- 012:2222222233333333223222233333333332232223333333333555535522222222
+-- 013:2222222223333333232322322333333323222322233333332355355522222222
+-- 014:2222222233333333223222233333333332232223333333333555535522222222
+-- 015:2222222223333333232322322333333323222322233333332355355522222222
+-- 016:2222222223333332233232322353533223323232232353322333333222222222
+-- 017:1111111111111111111111111111111111111111111111111111111111111111
+-- 018:1111111111111111111111111111111111111111111111111111111122222222
+-- 019:1111111111111111111111111111111111111111111111111111111122222222
+-- 020:1111111111111111111111111111111111111111111111111111111111111111
+-- 021:1111111111111111111111111111111111111111111111111111111111111111
+-- 022:1111111111111111111111111111111111111111111111111111111111111111
+-- 023:1111111111111111111111111111111111111111111111111111111111111111
+-- 024:1111111111111111111111111111111111111111111111111111111111111111
+-- 025:1111111111111111111111111111111111111111111111111111111111111111
+-- 026:1111111111111111111111111111111111111111111111111111111111111111
+-- 027:1111111111111111111111111111111111111111111111111111111111111111
+-- 028:1111111111111111111111111111111111111111111111111111111111111111
+-- 029:1111111111111111111111111111111111111111111111111111111111111111
+-- 030:1111111111111111111111111111111111111111111111111111111111111111
+-- 031:1111111111111111111111111111111111111111111111111111111111111111
+-- 032:2222222223333332233232322353533223323232232353322333333222222222
+-- 033:1111111111111111111111111111111111111111111111111111111111111111
+-- 034:2444444422212212255200212152102325520021215210232552002122222222
+-- 035:4444444221244442321244423221244232421242324421223244421222222222
+-- 036:1111111111111111111111111111111111111111111111111111111111111111
+-- 037:2222222225552555255525552555222225552111255521112555211125552111
+-- 038:2222222255555555555555552222222211122111111221111112211111122111
+-- 039:2222222255525552555255522222555211125552111255521112555211125552
+-- 040:1111111111111111111111111111111111111111111111111111111111111111
+-- 041:1111111111111111111111221111128011112801111210801121010111222222
+-- 042:1111111111111111211111111211111108211111108211110101211122222111
+-- 043:1222222226666666266666662666666626666666266666662666666626666666
+-- 044:2222222166666462666646426666646266664642666664626666464266666462
+-- 045:2222222226466666246666662646622224666666264646462464646422222222
+-- 046:2222222266666642666664622226664266666462464646426464646222222222
+-- 047:2222222226466666246666662646622224666666264646462464646422222222
+-- 048:2222222223333332233232322353533223323232232353322333333222222222
+-- 049:1111111111111111111111111111111111111111111111111111111111111111
+-- 050:2444444422212214200213242102332420021324210233242002132422222222
+-- 051:4444444244441222444425524444215244442552444421524444255222222222
+-- 052:1111111111111111111111111111111111111111111111111111111111111111
+-- 053:2555211125552111255521112555211125552111255522222555211125552111
+-- 054:1112211111122111111221111112211111122111222222221112211111122111
+-- 055:1112555211125552111255521112555211125552222255521112555211125552
+-- 056:1111111111111111111111111111111111111111111111111111111111111111
+-- 057:1111111211111112111111121111111211111112111111121111111211111112
+-- 058:1111111111111111111111111111111111111111111111111111111111111111
+-- 059:2666666626666666266666662666666626666666266266662662666626626666
+-- 060:6666464266666462666646426666646266664642666664626666464266666462
+-- 061:5555111155551111555511115555111111115555111155551111555511115555
+-- 062:5555111155551111555511115555111111115555111155551111555511115555
+-- 063:5555111155551111555511115555111111115555111155551111555511115555
+-- 064:2222222223333332253232322532333223323232253332322532333225323232
+-- 065:1111111111111111111111111111111111111111111111111111111111111111
+-- 066:2444444422212212255255252152152125525525215215212552552522222222
+-- 067:4444444221221442525524425215244252552442521524425255244222222222
+-- 068:1111111111111111111111111111111111111111111111111111111111111111
+-- 069:2555211125552111255521112555211125552111255521112555211122222222
+-- 070:1112211111122111111221111112211111122111111221111112211122222222
+-- 071:1112555211125552111255521112555211125552111255521112555222222222
+-- 072:1111111111111111111111111111111111111111111111111111111111111111
+-- 073:1111111211111112111111121111111211111112111111121111111211111112
+-- 074:1111111111111111111111111111111111111111111111111111111111111111
+-- 075:2662666626626666266266662666666626666666266666662666666626666666
+-- 076:6666464266666462666646426666646266664642666664626666464266666462
+-- 077:2222222224444444244222442421112424211124242111242442224424444444
+-- 078:2222222244444442442224424211124242111242421112424422244244444442
+-- 079:2222222224444444244444442444444424444444244444442444444424444444
+-- 080:2333323225323232253233322533323225323232233232322532323225333332
+-- 081:1111111111111111111111111111111111111111111111111111111111111111
+-- 082:2444444424444444244444442444444424444444222222222221111122211111
+-- 083:4444444244444442444444424444444244444442222222221111122211111222
+-- 084:1111111111111111111111111111111111111111111111111111111111111111
+-- 085:1111111111111111111111111222222224444444244444442444444424444444
+-- 086:1111111111111111111111112222222244444444444444444444444444444444
+-- 087:1111111111111111111111112222122244442666444426664444266644442666
+-- 088:1111111111111111111111111122221122444421244444422444444224444442
+-- 089:1111111211111112111111121111111211111112111111121111111211112222
+-- 090:1111111111111111111111111111111111111111111111111111111122211111
+-- 091:2666666626666666266666662666666626666666266666662666666612222222
+-- 092:6666464266666462666646426666646266664642666664626666464222222221
+-- 093:2444444424444444244222442421112424211124242111242442224424444444
+-- 094:4444444244444442442224424211124242111242421112424422244244444442
+-- 095:2444444424444444244444442444444424444444244444442444444422222222
+-- 096:2222222223333332253232322532333223323232253332322532333225323232
+-- 097:0000000000000000000000003333111100000000000000000000000033313333
+-- 098:0000000000000000000000003333333300001000000010000000300033333311
+-- 099:0000000000000000000000003333111100000000000000000000000033313333
+-- 100:0000000000000000000000003333333300001000000010000000300033333311
+-- 101:2444444424444444244444442444444424444444244444442444444424444444
+-- 102:4444444444444444444444444444444444444444444444444444444444444444
+-- 103:4444266644442666444426664444266644442666444426664444266644442666
+-- 104:2444444224444442242222423244442224444442244444422422224222111122
+-- 105:0000000000000000000000003333111100000000000000000000000033313333
+-- 106:0000000000000000000000003333333300001000000010000000300033333311
+-- 107:0222222226666666266266662662666626626666266266662666666632222222
+-- 108:2222222066666462666646426666646266664642666664626666464222222221
+-- 109:2222222221111111211111112111111121111111211111112111111122222222
+-- 110:2222222211111112111111121111111211111112111111121111111222222222
+-- 111:2222222223333333232322322333333323222322233333332355355522222222
+-- 112:2333323225323232253233322533323225323232233232322532323225333332
+-- 113:0000000000000000000000001111333300000000000000000000000011333111
+-- 114:2222222224444422244442722444277224427772242770722277177227717072
+-- 115:2222222244444442444444424444444244442222444211224414222241444442
+-- 116:0000000000000000000000003311133300000001000000010000000133333111
+-- 117:2222222221111111222222221111333300000000000000000000000011333111
+-- 118:2222222211111111222222223311133300000001000000010000000133333111
+-- 119:2222222211111111222222221111333300000000000000000000000011333111
+-- 120:2222222211111112222222223311133300000001000000010000000133333111
+-- 121:0000000000000000000000001111333300000000000000000000000011333111
+-- 122:0000000000000000000000003311133300000001000000010000000133333111
+-- 123:0000000000000000000000001111333300000000000000000000000011333111
+-- 124:0000000000000000000000003311133300000001000000010000000133333111
+-- 125:0000000000000000000000001111333300000000000000000000000011333111
+-- 126:0000000000000000000000003311133300000001000000010000000133333111
+-- 127:2222222223333332233232322353533223323232232353322333333222222222
+-- 128:2222222223333332253232322532333223323232253332322532333225323232
+-- 129:0000000000000000000000003333111100000000000000000000000033313333
+-- 130:2717177227717724271772422777242427724242272424242242424222222222
+-- 131:2222222224242422424242422422244242224442222444424244444224444442
+-- 132:0000000000000000000000003333333300001000000010000000300033333311
+-- 133:0000000000000200000021203333212100002120000021200000212033312123
+-- 134:0000000000000000000000003333333300001000000010000000300033333311
+-- 135:0000000000000000222222222444444424444444244444442444444424444444
+-- 136:0000000000000000222222224444444244444442444444424444444244444442
+-- 137:0000000000000000000000003333111100000000000000000000000033313333
+-- 138:0000000000000000000000003333333300001000000010000000300033333311
+-- 139:0000222200022442002424423244244224442442244424422444244224442442
+-- 140:0000000000000000000000003333333300001000000010000000300033333311
+-- 141:0000000000000000000000003333111100000000000000000000000033313333
+-- 142:0000000000000000000000003333333300001000000010000000300033333311
+-- 143:1222222112555521125555211255552112555521125555211255552112555521
+-- 144:2333323225323232253233322533323225323232233232322532323225333332
+-- 145:0000000000000000000000001111333300000000000000000000000011333111
+-- 146:2444444424444444244444442444444424444444244444442444444424444444
+-- 147:4444444244444442444444424444444244444442444444424444444244444442
+-- 148:0000002200000244000024443311244400002444000024440000021433333122
+-- 149:2220212044422120444421204444212344442120444421204412020022233111
+-- 150:0000000000000000000000003311133300000001000000010000000133333111
+-- 151:2444444424444444244444442444444424444444244444442444444424444444
+-- 152:4444444244444442444444424444444244444442444444424444444244444442
+-- 153:0000000000000000000000001111333300000000000000000000000011333111
+-- 154:0222222224444444244444442444444424444444244444442444444424444444
+-- 155:2444244224442442244424422444244224442442244424422444244224442442
+-- 156:0000000000000000000000003311133300000001000000010000000133333111
+-- 157:0000000000000000000000001111333300000000000000000000000011333111
+-- 158:0000000000000000000000003311133300000001000000010000000133333111
+-- 159:1255552112555521125555211255552112555521125555211255552112222221
+-- 160:2222222223333332253232322532333223323232253332322532333225323232
+-- 161:0000000000000000000000003333111100000000000000000000000033313333
+-- 162:2222222221111111222222222123333321201000212010002120300022233311
+-- 163:2222222211111112222222223333121200000212000002120000021233313222
+-- 164:0000000000000002000000203333113300002200000022000000300033333311
+-- 165:2000000022000000202000002331111120022000110220002200000022313333
+-- 166:0000000000000000000000003333333300001000000010000000300033333311
+-- 167:2444444424444444244444442222222222222222021200000212000032223333
+-- 168:4444444244444442444444422222222222222222000021200000212033332221
+-- 169:0000000000000000000000003333111100000000000000000000000033313333
+-- 170:2444444424444444244444442444444424444444244444442444444424444444
+-- 171:2444244224442442244424422444244224442442244424422444244214442442
+-- 172:0000000000000000000000003333333300001000000010000000300033333311
+-- 173:0000000000000000000000003333111100000000000000000000000033313333
+-- 174:0000000000000000000000003333333300001000000010000000300033333311
+-- 175:1222222125555552255555522555555225555552255555522555555212222221
+-- 176:2333323225323232253233322533323225323232233232322532323225333332
+-- 177:0000000000000000000000001111333300000000000000000000000011333111
+-- 178:0000000000000000000000003311133300000001000000010000000133333111
+-- 179:0000000000000000000000001111333300000000000000000000000011333111
+-- 180:0000000000000000000000003311133300000001000000010000000133333111
+-- 181:0000000000000000000000001111333300000000000000000000000011333111
+-- 182:0000000000000000000000003311133300000001000000010000000133333111
+-- 183:0000000000000000000000001111333300000000000000000000000011333111
+-- 184:0000000000000000000000003311133300000001000000010000000133333111
+-- 185:0022222202444444244444442444444424444444244444442444444424444444
+-- 186:2444444444444444444444444444444444444444444444444444444444444444
+-- 187:1444222214421112142111121211111221111112211111122111111221111112
+-- 188:0000000000000000000000003311133300000001000000010000000133333111
+-- 189:0000000000000000000000001111333300000000000000000000000011333111
+-- 190:0000000000000000000000003311133300000001000000010000000133333111
+-- 191:2222222223333333232322322333333323222322233333332355355522222222
+-- 192:2222222223333332253232322532333223323232253332322532333225323232
+-- 193:0000000000000000000000003333111100000000000000000000000033313333
+-- 194:2222222224444444244444442444444424444444244444442444444424444444
+-- 195:2222222244444442444444424444444244444442444444424444444244444442
+-- 196:0000000000000000000000003333333300001000000010000000300033333311
+-- 197:0000000000000000000000003333111100000000000000000000000033313333
+-- 198:0000000000000000000000003333333300001000000010000000300033333311
+-- 199:0000000000000000000000003333111100000000000000000000000033313333
+-- 200:0000000000000000000000003333333300001000000010000000300033333311
+-- 201:2222222221111111211111112111111121111111211111110222222233222233
+-- 202:2222222211111111111111111111111111111111111111112222222233333311
+-- 203:1111111211111112111111121111111211111112111111122222222033222233
+-- 204:0000000000000000000000003333333300001000000010000000300033333311
+-- 205:0000000000000000000000003333111100000000000000000000000033313333
+-- 206:0000000000000000000000003333333300001000000010000000300033333311
+-- 207:2222222223333332233232322353533223323232232353322333333222222222
+-- 208:2333323225323232253233322533323225323232233232322532323225333332
+-- 209:0000000000000000000000001111333300000000000000000000000011333111
+-- 210:2444444424444444244444442444444424444444244444442444444424444444
+-- 211:4444444244444442444444424444444244444442444444424444444244444442
+-- 212:0000000000000000000000003311133300000001000000010000000133333111
+-- 213:0000000000000000000000001111333300000000000000000000000011333111
+-- 214:0000000000000000000000003311133300000001000000010000000133333111
+-- 215:0000000000000000000000001111333300000000000000000000000011333111
+-- 216:0000000000000000000000003311133300000001000000010000000133333111
+-- 217:0000000000000000000000001111333300000000000000000000000011333111
+-- 218:0000000000000000000000003311133300000001000000010000000133333111
+-- 219:0000000000000000000000001111333300000000000000000000000011333111
+-- 220:0000000000000000000000003311133300000001000000010000000133333111
+-- 221:0000000000000000000000001111333300000000000000000000000011333111
+-- 222:0000000000000000000000003311133300000001000000010000000133333111
+-- 223:1222222112555521125555211255552112555521125555211255552112555521
+-- 224:2222222223333332253232322532333223323232253332322532333225323232
+-- 225:0000000000000000000000003333111100000000000000000000000033313333
+-- 226:2222222221111111211111112111111121111111211111112111111122222222
+-- 227:2222222211111112111111121111111211111112111111121111111222222222
+-- 228:0000000000000000000000003333333300001000000010000000300033333311
+-- 229:0000000000000000000000003333111100000000000000000000000033313333
+-- 230:0000000000000000000000003333333300001000000010000000300033333311
+-- 231:0000000000000000000000003333111100000000000000000000000033313333
+-- 232:0000000000000000000000003333333300001000000010000000300033333311
+-- 233:0000000000000000000000003333111100000000000000000000000033313333
+-- 234:0000000000000000000000003333333300001000000010000000300033333311
+-- 235:0000000000000000000000003333111100000000000000000000000033313333
+-- 236:0000000000000000000000003333333300001000000010000000300033333311
+-- 237:0000000000000000000000003333111100000000000000000000000033313333
+-- 238:0000000000000000000000003333333300001000000010000000300033333311
+-- 239:1255552112555521125555211255552112555521125555211255552112222221
+-- 240:2333323225323232253233322533323225323232233232322532323225333332
+-- 241:0000000000000000000000001111333300000000000000000000000011333111
+-- 242:0000000000000000000000003311133300000001000000010000000133333111
+-- 243:0000000000000000000000001111333300000000000000000000000011333111
+-- 244:0000000000000000000000003311133300000001000000010000000133333111
+-- 245:0000000000000000000000001111333300000000000000000000000011333111
+-- 246:0000000000000000000000003311133300000001000000010000000133333111
+-- 247:0000000000000000000000001111333300000000000000000000000011333111
+-- 248:0000000000000000000000003311133300000001000000010000000133333111
+-- 249:0000000000000000000000001111333300000000000000000000000011333111
+-- 250:0000000000000000000000003311133300000001000000010000000133333111
+-- 251:0000000000000000000000001111333300000000000000000000000011333111
+-- 252:0000000000000000000000003311133300000001000000010000000133333111
+-- 253:0000000000000000000000001111333300000000000000000000000011333111
+-- 254:0000000000000000000000003311133300000001000000010000000133333111
+-- 255:1222222125555552255555522555555225555552255555522555555212222221
+--
+--
diff --git a/inc/screen/screen.home.lua b/inc/screen/screen.home.lua
index efb059c..5cc7d1c 100644
--- a/inc/screen/screen.home.lua
+++ b/inc/screen/screen.home.lua
@@ -4,5 +4,6 @@ ScreenManager.register({
decisions = {
"go_to_toilet",
"go_to_walking_to_office",
- }
+ },
+ background_map_id = "bedroom",
})
diff --git a/inc/screen/screen.manager.lua b/inc/screen/screen.manager.lua
index 8dd6c49..ee5fd85 100644
--- a/inc/screen/screen.manager.lua
+++ b/inc/screen/screen.manager.lua
@@ -1,8 +1,5 @@
-ScreenManager = {}
+local _screens = {}
-local _screens = {} -- Internal list to hold screen data
-
--- Public property to access the registered screens as an indexed array
function ScreenManager.get_screens_array()
local screens_array = {}
for _, screen_data in pairs(_screens) do
@@ -11,8 +8,6 @@ function ScreenManager.get_screens_array()
return screens_array
end
--- Registers a screen with the manager
--- screen_data: A table containing id, name, and decisions for the screen
function ScreenManager.register(screen_data)
if _screens[screen_data.id] then
-- Optional: warning if overwriting an existing screen
@@ -21,7 +16,6 @@ function ScreenManager.register(screen_data)
_screens[screen_data.id] = screen_data
end
--- Retrieves a screen by its id (if needed directly)
function ScreenManager.get_by_id(screen_id)
return _screens[screen_id]
end
diff --git a/inc/window/window.game.lua b/inc/window/window.game.lua
index c04e455..f4022bd 100644
--- a/inc/window/window.game.lua
+++ b/inc/window/window.game.lua
@@ -1,12 +1,13 @@
function GameWindow.draw()
- local currentScreenData = Context.screens[Context.current_screen]
- UI.draw_top_bar(currentScreenData.name)
- if currentScreenData and currentScreenData.decisions and #currentScreenData.decisions > 0 then
+ local screen = Context.screens[Context.current_screen]
+ MapManager.draw(screen.background_map_id)
+ UI.draw_top_bar(screen.name)
+ if screen and screen.decisions and #screen.decisions > 0 then
local available_desitions = {}
- for _, desition_id in ipairs(currentScreenData.decisions) do
- local desition_obj = DesitionManager.get(desition_id)
- if desition_obj and desition_obj.condition() then -- Check condition directly
- table.insert(available_desitions, desition_obj)
+ for _, desition_id in ipairs(screen.decisions) do
+ local desition = DesitionManager.get(desition_id)
+ if desition and desition.condition() then
+ table.insert(available_desitions, desition)
end
end
-- If no available desitions, display nothing or a message
@@ -38,13 +39,13 @@ function GameWindow.update()
Context.selected_desition_index = 1 -- Reset selected decision on screen change
end
- local currentScreenData = Context.screens[Context.current_screen]
- if currentScreenData and currentScreenData.decisions and #currentScreenData.decisions > 0 then
+ local screen = Context.screens[Context.current_screen]
+ if screen and screen.decisions and #screen.decisions > 0 then
local available_desitions = {}
- for _, desition_id in ipairs(currentScreenData.decisions) do
- local desition_obj = DesitionManager.get(desition_id)
- if desition_obj and desition_obj.condition() then -- Check condition directly
- table.insert(available_desitions, desition_obj)
+ for _, desition_id in ipairs(screen.decisions) do
+ local desition = DesitionManager.get(desition_id)
+ if desition and desition.condition() then -- Check condition directly
+ table.insert(available_desitions, desition)
end
end