diff --git a/assets_src/sprites.ase b/assets_src/sprites.ase index 7e072d2..75c2062 100644 Binary files a/assets_src/sprites.ase and b/assets_src/sprites.ase differ diff --git a/assets_src/sprites.png b/assets_src/sprites.png index 47d9920..17faea9 100644 Binary files a/assets_src/sprites.png and b/assets_src/sprites.png differ diff --git a/impostor.inc b/impostor.inc index 24e6e84..b84dde6 100644 --- a/impostor.inc +++ b/impostor.inc @@ -18,6 +18,22 @@ audio/audio.manager.lua audio/audio.songs.lua sprite/sprite.manager.lua sprite/sprite.norman.lua +sprite/sprite.sumphore.lua +sprite/sprite.pizza_vendor.lua +sprite/sprite.dev_boy.lua +sprite/sprite.dev_buddy.lua +sprite/sprite.dev_extrovert.lua +sprite/sprite.dev_girl.lua +sprite/sprite.dev_guard.lua +sprite/sprite.dev_guru.lua +sprite/sprite.dev_hr_girl.lua +sprite/sprite.dev_introvert.lua +sprite/sprite.dev_operator.lua +sprite/sprite.dev_project_manager.lua +sprite/sprite.matrix_architect.lua +sprite/sprite.matrix_neo.lua +sprite/sprite.matrix_oraculum.lua +sprite/sprite.matrix_trinity.lua situation/situation.manager.lua situation/situation.drink_coffee.lua decision/decision.manager.lua diff --git a/inc/meta/meta.assets.lua b/inc/meta/meta.assets.lua index 46c243c..55768d1 100644 --- a/inc/meta/meta.assets.lua +++ b/inc/meta/meta.assets.lua @@ -255,24 +255,126 @@ -- 003:0000000000000000441600004242600044241000ff426000fff4100033f26000 -- 004:00000333000035550003655500365555003555ff00356fff00365f3f00355fff -- 005:33000000553000005563000055563000ff553000fff53000f3f63000fff53000 +-- 008:0000005a00005a55000055a50000a55a00005a5700005533000575f30000757f +-- 009:55a50000a55a50005a55a00057555500fff7a5003f335a00fff3f500fffffa00 -- 016:0000000000000000000000000000003000000353000035350003535100353535 -- 017:0000000000000000000000003000000053300000151300005151300015151300 -- 018:004f99ff000fffff0000ff3300000fff00003666000355550035652503163555 -- 019:99f41000fff26000ff600000f600000063300000555330005555530055535530 -- 020:00356f6f003655f60365511f3653122f3531222f363221220532232203322322 -- 021:f6f530006f563000f1156300f2215300f2226300221233002232130022121300 +-- 022:000000000000005100000155000055150000157f0000551300057f3f00017fff +-- 023:00000000555000005155000015515000ff7f5100ff31f200fff3ff0033fff200 +-- 024:0000057f00000005000000050000559900055911005599110055119900551199 +-- 025:f3ff5000fff500005f5000004415100077995100449915007711955044119550 +-- 026:00000000000001330001331300031333001333330031f7f7001133390031999f +-- 027:0000000013310000131330003333130033333100f7f113003337310099975300 +-- 028:000000000000000000000a77000057770005777700577777005775a50077a7ff +-- 029:0000000000000000777a0000777750007777750077777750a5a57750fff7a770 +-- 030:000000000000051500001151000555550001517f000557ff0001ff3f0007ff1f +-- 031:00000000150000005110000055500000f7110000ff750000f3f10000f1f50000 -- 032:0033535100353533003351ff00351f3f0003ff3f0003ffff00003ff3000323ff -- 033:5555530033555300ff155300f3f15300f3ff3000ffff30003ff30000ff323000 -- 034:036135250316355503613525031633110333331103f333330333333300033333 -- 035:55565530555355305556553013335530133333303333ff303333333033330000 -- 036:00322322003223330033331a003ff31a003ff3a1003333a100003a1a00003a1a -- 037:223213003332130011133300111f300011133000111300001113000011130000 +-- 038:000007ff0001117f0016171f0155175501561755155117555f7157555ff15755 +-- 039:fffff700333f2000ffff7100555571105555716155557111555575ff555575ff +-- 040:005599110055991100ff533300fff511007fff110007f5110000311300003113 +-- 041:479915504499155047333f7014113ff011113f70111130003311300003113000 +-- 042:0035777f0001776600005777000000550088885508bbb84508bbb8448bb8b844 +-- 043:77775300677500007750000055880000558b8000548bb800228bbb80428b8b80 +-- 044:005a7f3f0057ff3f07f7ffff07757fdf077a57fd0575357f005a66a70006aa6f +-- 045:ff3f7a50ff3ff750fffff777ffdf7577ddf75a77ff75157577a66a50ff6aa600 +-- 046:0005ffff00005ff3000005ff0017775500242777002121710024277100212171 +-- 047:fff500003f500000f50000005771000077720000171200001772000017120000 -- 048:00323123003231430032314300313339000f3333000033300000333000033330 -- 049:324303003443030034430300933313003333f000033300000333000003333000 -- 050:0003333000033330000333300003333000053530003311300031113000333330 -- 051:3333000033330000333300003333000035350000311330003111300033333000 -- 052:000031a1000031a100003a1a00003a1a00003333000003f3000003f300000330 -- 053:111300001113000011130000111300003333000003f3000003f3000003300000 +-- 054:5ff7646607f59999000991330003993000099130000133300001221000011100 +-- 055:666646ff999993f7339913000039930000991300001333000012210000111000 +-- 056:0000311300003113000031130000311300003113000033330000165100001111 +-- 057:0311300003113000031130000311300003113000033330000165100001111000 +-- 058:8888b8445f78b8445f58884405031330000331300003133000053550000577f0 +-- 059:218b8880428b87f5218885f5031330500331300003133000053550000577f000 +-- 060:0056aa66001f6aaa001fa666007f6aaa00006aaa0000a666000007d7000001d1 +-- 061:666aa650aaaa6f106666af10aaaa6f70aaaa60006666a000007d7000001d1000 +-- 062:0024277700ff611100fff333005f533300003333000033300000333000001110 +-- 063:77720000116f0000335ff000333f000033300000333000003330000001110000 +-- 064:00000000000000000000011100003311000111170003317f000117ff00553333 +-- 065:0000000000000000110000001110000077110000ff710000ff77000013330000 +-- 066:00000000000000330000033300003333000033f7000035ff000535ff0007f333 +-- 067:0000000030000000333300003333000037f30000ffff0000ffff0000f333f000 +-- 068:000000000000000000000000000000000000000000000122000012440001447f +-- 069:00000000000000000000000000000000000000002210000044210000f7441000 +-- 070:000000000000000000000333000038880003888800388881038388310338835f +-- 071:00000000000000003330000088880000883380003355380016665300f7ff7300 +-- 072:0000000000000000000000550000055500005577000057ff00007f55000fff33 +-- 073:0000000000000000555550005555550077777550ffffff507f755f703f333fff +-- 074:0000000000000011000001130000113100011313000131310013137c003131ff +-- 075:000000001110000013110000313110001313100031313100ffff7100fffff100 +-- 076:0000000000000055000005550000055500005577000057ff0007ff55000fff99 +-- 077:0000000055550000555550005555500075775500fffff5005f555f703f993ff0 +-- 078:0000000000000000000000000000000000001111000014440000144400001555 +-- 079:0000000000000000000000000000000011100000441000004410000055100000 +-- 080:0077533f000ff77f0005fff500005ff70000015f0005f315005ff3ff00ff3333 +-- 081:f33f0000f77f00005ff000007f500000f500000053f00000f3f50000333f0000 +-- 082:000fff330005ffff000057f50000007f000333350031313f0031313303113133 +-- 083:ff33f000ffff100055f10000ff70000055330000ff3130003331300033311300 +-- 084:000447ff000fffff0007f33f000ff11f000f7fff0000ff750000042400001142 +-- 085:ff744000ffff1000f33f7000f11f5000fff7f00057ff00004240000044110000 +-- 086:038383390338833b038383130338337f0383835f003838350003838300003333 +-- 087:99539900bb33bb0099513900fffff530ff66f1007fff53001555310033333000 +-- 088:000f7ff300005fff000007ff0000007f0000021f000024410002444400124244 +-- 089:fff3ff7ff1ffff50fffff700111f7000ffff1000111142004244442042442410 +-- 090:005f5733005f1f2300015fff0000077f00011117001244210144414201421444 +-- 091:ff33f500ff23f500fffff00011ff500077710000112410004442410042441410 +-- 092:00005fff000005ff0000001f0000000100000114000018140000181400018114 +-- 093:fffff500111f5000fff500001110000042411000424180004241810042411100 +-- 094:00001fff00001f3f0000cf3f0000cfff00000cf3000023cc000131ff001f1f11 +-- 095:ff1000003f1000003ff00000fff00000fc000000c3200000f13100001f1f1000 +-- 096:00ff33330033133305f333330ff31333033333330f5313330ff1311107f13333 +-- 097:333f0000333f5000333f5000333ff000333330003335f500111ff5003337f000 +-- 098:03113133031131330333313303113131033331320555313107ff313307ff3131 +-- 099:333113003331130033333300213113004233330021317f0033317f5001317500 +-- 100:0002441400244441024444240242442414424424144144241441442414414424 +-- 101:4144210014444200424444204244422042444241424441414244414142444141 +-- 102:000333330033a3530032a353003a332303a23333032a333303a23333032a3333 +-- 103:3333300055353300553533002232323033333130333332303333313333333233 +-- 104:001441440014424400144144001441240017f311001ff133001fff330007f333 +-- 105:4244142042442410424414204244122012113f7031333ff033333ff030333f00 +-- 106:01421444014414440142144431421444011111110fff1a5a0ff755a505755a51 +-- 107:44441410424414104444141042441410111111105a5a55f5a5a5a5f5111a5170 +-- 108:0001181400018114000118140001811300011333005fff33000f773300055333 +-- 109:424181104241181042418110222318101113310033335ff03333f77033335500 +-- 112:0553333300033330000333000033330000333300003333000011110000121200 +-- 113:3330000033300000333000003330000033300000333000001111000012120000 +-- 114:05f5313103003131033311310311113103111131003111300003333000012120 +-- 115:0131130001311300013113000131130001311300003113000033330000121200 +-- 116:0fff242407f72211005544200002442000024420000244200002222000024440 +-- 117:424441f1112227f1024425500244200002442000024420000222200002444000 +-- 118:0333333307ff333307f733330070333000003330000033300000111000001110 +-- 119:33333575333331f1333335750033300000333000003330000011100000111100 +-- 120:0000033300000333000003330000033300000333000003330000033300000111 +-- 121:0033300000333000003330000033300000333000003330000033300010111100 +-- 122:005015a100001a51000015a100001a51000015a1000022510000924900009999 +-- 123:0315a150001a51000015a100001a51000015a100002251000092490000999900 +-- 124:0000033300000333000003330000033300000333000003330000033300000111 +-- 125:0333000003330000033300000333000003330000033300000333000000111000 +-- 129:0000000000000000000000000000000000000000011515101151515151515151 +-- 144:0000000500000015000000150000057f000005ff0000017f0000331700073331 +-- 145:1ffffff7ff0fff0fff1fff1fffffffffff7555fffffffffffff111ff57fffff7 +-- 146:1000000071000000f5000000ff000000ff500000ff5000007513100051333700 +-- 160:0077333303331333333313333331333333313333355133335ff513335ff71111 +-- 161:1111111133333333333337333333373333333733333337333333373311117711 +-- 162:133337003733133077731330333331333333313333333155333337ff1111175f +-- 176:0775333300031333000333130000333300001333000033330000033300000111 +-- 177:3335773333333533333333331313131333333333300000033000000310000001 +-- 178:3333357533331000331300001333000033310000333300003331000011110000 -- -- -- 000:ffffffffff0010201020102010201020102010201020102000ffffffffff40404040404087f3f3f3f397a7b7c7d7a7e7f70818a7b7c7d7a7b7c7d7a70b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b1b2b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/inc/screen/screen.office.lua b/inc/screen/screen.office.lua index 904eb85..51de28e 100644 --- a/inc/screen/screen.office.lua +++ b/inc/screen/screen.office.lua @@ -9,5 +9,19 @@ Screen.register({ situations = { "drink_coffee", }, - background = "office" + background = "office", + draw = function() + if Window.get_current_id() == "game" then + Sprite.draw_at("norman", 13 * 8, 9 * 8) + Sprite.draw_at("dev_buddy", 15 * 8, 9 * 8) + Sprite.draw_at("dev_project_manager", 6 * 8, 4 * 8) + Sprite.draw_at("dev_hr_girl", 12 * 8, 4 * 8) + Sprite.draw_at("dev_introvert", -4 + 5 * 8, 9 * 8) + Sprite.draw_at("dev_extrovert", 20 * 8, 4 * 8) + Sprite.draw_at("dev_girl", 23 * 8, 5 * 8) + Sprite.draw_at("dev_boy", 10 * 8, 11 * 8 + 4) + Sprite.draw_at("dev_guru", 22 * 8, 10 * 8 + 4) + Sprite.draw_at("dev_operator", 27 * 8, 10 * 8 + 4) + end + end }) diff --git a/inc/screen/screen.walking_to_home.lua b/inc/screen/screen.walking_to_home.lua index 5c72af7..6ae9234 100644 --- a/inc/screen/screen.walking_to_home.lua +++ b/inc/screen/screen.walking_to_home.lua @@ -5,5 +5,12 @@ Screen.register({ "go_to_home", "go_to_office", }, - background = "street" + background = "street", + draw = function() + if Window.get_current_id() == "game" then + Sprite.draw_at("norman", 7 * 8, 3 * 8) + Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8) + Sprite.draw_at("dev_guard", 22 * 8, 2 * 8) + end + end }) diff --git a/inc/screen/screen.walking_to_office.lua b/inc/screen/screen.walking_to_office.lua index c77379a..db85336 100644 --- a/inc/screen/screen.walking_to_office.lua +++ b/inc/screen/screen.walking_to_office.lua @@ -6,5 +6,17 @@ Screen.register({ "go_to_office", "start_discussion", }, - background = "street" + background = "street", + draw = function() + if Window.get_current_id() == "game" then + Sprite.draw_at("norman", 7 * 8, 3 * 8) + Sprite.draw_at("sumphore", 9 * 8, 2 * 8) + Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8) + Sprite.draw_at("dev_guard", 22 * 8, 2 * 8) + Sprite.draw_at("matrix_trinity", 5 * 8, 11 * 8) + Sprite.draw_at("matrix_neo", 7 * 8, 11 * 8) + Sprite.draw_at("matrix_oraculum", 9 * 8, 12 * 8) + Sprite.draw_at("matrix_architect", 11 * 8, 11 * 8) + end + end }) diff --git a/inc/sprite/sprite.dev_boy.lua b/inc/sprite/sprite.dev_boy.lua new file mode 100644 index 0000000..a6e783d --- /dev/null +++ b/inc/sprite/sprite.dev_boy.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_boy", + sprites = Sprite.generate_table(2, 3, 278, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_buddy.lua b/inc/sprite/sprite.dev_buddy.lua new file mode 100644 index 0000000..6fa79b4 --- /dev/null +++ b/inc/sprite/sprite.dev_buddy.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_buddy", + sprites = Sprite.generate_table(2, 3, 286, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_extrovert.lua b/inc/sprite/sprite.dev_extrovert.lua new file mode 100644 index 0000000..29e4d00 --- /dev/null +++ b/inc/sprite/sprite.dev_extrovert.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_extrovert", + sprites = Sprite.generate_table(2, 4, 330, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_girl.lua b/inc/sprite/sprite.dev_girl.lua new file mode 100644 index 0000000..056d12b --- /dev/null +++ b/inc/sprite/sprite.dev_girl.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_girl", + sprites = Sprite.generate_table(2, 3, 284, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_guard.lua b/inc/sprite/sprite.dev_guard.lua new file mode 100644 index 0000000..e769af6 --- /dev/null +++ b/inc/sprite/sprite.dev_guard.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_guard", + sprites = Sprite.generate_table(3, 4, 384, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_guru.lua b/inc/sprite/sprite.dev_guru.lua new file mode 100644 index 0000000..7794613 --- /dev/null +++ b/inc/sprite/sprite.dev_guru.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_guru", + sprites = Sprite.generate_table(2, 4, 264, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_hr_girl.lua b/inc/sprite/sprite.dev_hr_girl.lua new file mode 100644 index 0000000..1567c66 --- /dev/null +++ b/inc/sprite/sprite.dev_hr_girl.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_hr_girl", + sprites = Sprite.generate_table(2, 4, 260, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_introvert.lua b/inc/sprite/sprite.dev_introvert.lua new file mode 100644 index 0000000..3768819 --- /dev/null +++ b/inc/sprite/sprite.dev_introvert.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_introvert", + sprites = Sprite.generate_table(2, 4, 332, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_operator.lua b/inc/sprite/sprite.dev_operator.lua new file mode 100644 index 0000000..fa8fb30 --- /dev/null +++ b/inc/sprite/sprite.dev_operator.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_operator", + sprites = Sprite.generate_table(2, 4, 326, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.dev_project_manager.lua b/inc/sprite/sprite.dev_project_manager.lua new file mode 100644 index 0000000..7dbe90b --- /dev/null +++ b/inc/sprite/sprite.dev_project_manager.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "dev_project_manager", + sprites = Sprite.generate_table(2, 4, 328, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.manager.lua b/inc/sprite/sprite.manager.lua index 9754b4f..ad85dce 100644 --- a/inc/sprite/sprite.manager.lua +++ b/inc/sprite/sprite.manager.lua @@ -50,6 +50,29 @@ function Sprite.register(sprite_data) _sprites[sprite_data.id] = sprite_data end +--- Generates a sprites table for a rectangular composite sprite. +--- @within Sprite +--- @param width number The number of sprites wide.
+--- @param height number The number of sprites tall.
+--- @param starting_s number The sprite index of the top-left tile.
+--- @param x_base number The base x-offset for the leftmost column.
+--- @param y_base number The base y-offset for the topmost row.
+--- @param x_step number The x-offset increment per column.
+--- @param y_step number The y-offset increment per row.
+--- @return table The sprites table array. +function Sprite.generate_table(width, height, starting_s, x_base, y_base, x_step, y_step) + local sprites = {} + for row = 0, height - 1 do + for col = 0, width - 1 do + local s = starting_s + row * 16 + col + local x_offset = x_base + col * x_step + local y_offset = y_base + row * y_step + table.insert(sprites, { s = s, x_offset = x_offset, y_offset = y_offset }) + end + end + return sprites +end + --- Schedules a sprite for drawing. --- @within Sprite --- @param id string The unique identifier of the sprite.
diff --git a/inc/sprite/sprite.matrix_architect.lua b/inc/sprite/sprite.matrix_architect.lua new file mode 100644 index 0000000..aa349bd --- /dev/null +++ b/inc/sprite/sprite.matrix_architect.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "matrix_architect", + sprites = Sprite.generate_table(2, 4, 324, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.matrix_neo.lua b/inc/sprite/sprite.matrix_neo.lua new file mode 100644 index 0000000..bf59a87 --- /dev/null +++ b/inc/sprite/sprite.matrix_neo.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "matrix_neo", + sprites = Sprite.generate_table(2, 4, 322, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.matrix_oraculum.lua b/inc/sprite/sprite.matrix_oraculum.lua new file mode 100644 index 0000000..ec14d37 --- /dev/null +++ b/inc/sprite/sprite.matrix_oraculum.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "matrix_oraculum", + sprites = Sprite.generate_table(2, 3, 282, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.matrix_trinity.lua b/inc/sprite/sprite.matrix_trinity.lua new file mode 100644 index 0000000..3cadd5b --- /dev/null +++ b/inc/sprite/sprite.matrix_trinity.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "matrix_trinity", + sprites = Sprite.generate_table(2, 4, 320, -4, -4, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.pizza_vendor.lua b/inc/sprite/sprite.pizza_vendor.lua new file mode 100644 index 0000000..667bdcb --- /dev/null +++ b/inc/sprite/sprite.pizza_vendor.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "pizza_vendor", + sprites = Sprite.generate_table(2, 2, 334, -1, -8, 8, 8) +}) \ No newline at end of file diff --git a/inc/sprite/sprite.sumphore.lua b/inc/sprite/sprite.sumphore.lua new file mode 100644 index 0000000..701ec1c --- /dev/null +++ b/inc/sprite/sprite.sumphore.lua @@ -0,0 +1,4 @@ +Sprite.register({ + id = "sumphore", + sprites = Sprite.generate_table(2, 4, 258, -4, -4, 8, 8) +}) \ No newline at end of file