From e2bd1711c0658faa1cab58590fc874f530a86db4 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Wed, 18 Feb 2026 19:11:13 +0100 Subject: [PATCH] MapManager --- .luacheckrc | 2 + impostor.inc | 3 +- inc/desition/desition.manager.lua | 22 +-- inc/init/init.modules.lua | 3 +- inc/map/map.bedroom.lua | 28 +-- inc/map/map.manager.lua | 37 ++++ inc/meta/meta.assets.lua | 279 +++++++++++++++++++++++++++++- inc/screen/screen.home.lua | 3 +- inc/screen/screen.manager.lua | 8 +- inc/window/window.game.lua | 27 +-- 10 files changed, 358 insertions(+), 54 deletions(-) create mode 100644 inc/map/map.manager.lua 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 +-- +-- +-- 000:111111001020102010201020102010201020102010201020102000111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 001:111111001111111111111111111111111111111111111111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 002:11111100112232115262721192a2b2c21111111111111111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 003:1111110011233311536373119411b3c31111111111111111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 004:1111110011243411546474119411b4c41111111111111111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 005:11111100112535115565758595a5b5c51111111111111111111100111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 006:1111110016261626566676861626b6c61626162616261626162600111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 007:111111001727372b57677787172b172b172b172b172b172b172b00111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 008:1111110016283826582678881626b8261626162616261626162600111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 009:1111110017293949592b798917a9b92b172b172b172b172b172b00111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 010:11111100162a3a4a5a267a8a16aaba261626162616261626162600111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 011:11111100172b172b172b172b9babbb2b172b172b172b172b172b00111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 012:11111100162c3c26162616269cacbc261626162616261626162600111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 013:11111100172d3d2b172b172b172b172b172b172b172b172b172b00111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 014:11111100162e3e2616261626162616261626162616261626162600111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 015:11111100172b172b172b172b172b172b172b172b172b172b172b00111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 016:111111001020102010201020102010201020102010201020102000111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 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