From 01d272981e8c89656c009c232b40760e5aa49c4b Mon Sep 17 00:00:00 2001 From: 0x81c Date: Wed, 25 Mar 2015 01:38:53 -0400 Subject: [PATCH] id_ --- TODO | 65 ++- art/{ase_orig => _ase_orig}/cloud.ase | Bin art/{ase_orig => _ase_orig}/crying_moai_r.ase | Bin art/{ase_orig => _ase_orig}/drool.ase | Bin art/{ase_orig => _ase_orig}/eye.ase | Bin art/{ase_orig => _ase_orig}/heart.ase | Bin art/{ase_orig => _ase_orig}/image2_b.ase | Bin art/{ase_orig => _ase_orig}/image_r.ase | Bin art/{ase_orig => _ase_orig}/kiiro.ase | Bin art/{ase_orig => _ase_orig}/palette.png | Bin art/{ase_orig => _ase_orig}/slime_woman.ase | Bin art/{ase_orig => _ase_orig}/wall.ase | Bin art/{ase_orig => _ase_orig}/warai.ase | Bin art/{font => _font}/slime_a.png | Bin art/{font => _font}/slime_c.png | Bin art/{font => _font}/slime_e.png | Bin art/{font => _font}/slime_h.png | Bin art/{font => _font}/slime_i.png | Bin art/{font => _font}/slime_l.png | Bin art/{font => _font}/slime_m.png | Bin art/{font => _font}/slime_o.png | Bin art/{font => _font}/slime_r.png | Bin art/{font => _font}/slime_s.png | Bin art/{font => _font}/slime_t.png | Bin art/{process => _process}/cone.png | Bin art/{process => _process}/kanashi.png | Bin art/{process => _process}/kinoko.png | Bin art/{process => _process}/lisa.png | Bin art/{test_object.png => _ui/bac.png} | Bin 950 -> 881 bytes art/_ui/blue.png | Bin 0 -> 914 bytes art/_ui/cancel.png | Bin 0 -> 917 bytes art/_ui/confirm.png | Bin 0 -> 921 bytes art/_ui/folder.png | Bin 0 -> 912 bytes art/_ui/forward.png | Bin 0 -> 880 bytes art/_ui/green.png | Bin 0 -> 907 bytes art/_ui/red.png | Bin 0 -> 909 bytes art/_ui/save.png | Bin 0 -> 904 bytes art/_ui/white.png | Bin 0 -> 913 bytes art/_ui/world.png | Bin 0 -> 921 bytes art/door_locked.png | Bin 174 -> 0 bytes art/door_locked_W.png | Bin 99 -> 0 bytes art/{ => game/ahhh}/switch_b.png | Bin art/{ => game/ahhh}/switch_g.png | Bin art/{ => game/ahhh}/switch_r.png | Bin art/{ => game}/color_changing_floor_tile.png | Bin .../color_changing_floor_tile_b.png | Bin .../color_changing_floor_tile_g.png | Bin .../color_changing_floor_tile_r.png | Bin art/{ => game}/color_changing_wall.png | Bin art/{ => game}/door_locked_b.png | Bin art/{ => game}/door_locked_g.png | Bin art/{ => game}/door_locked_r.png | Bin art/{ => game}/door_locked_w.png | Bin art/{ => game}/door_unlocked.png | Bin art/{palette => game/palette.png} | Bin art/{ => game}/player.png | Bin art/{ => game}/player_b.png | Bin art/{ => game}/player_g.png | Bin art/{ => game}/player_r.png | Bin art/{ => game}/player_sad.png | Bin art/{ => game}/player_w.png | Bin art/{ => game}/static_wall.png | Bin art/game/switch_b.png | Bin 0 -> 290 bytes art/game/switch_g.png | Bin 0 -> 294 bytes art/{ => game}/switch_pressed.png | Bin art/game/switch_r.png | Bin 0 -> 294 bytes art/game/switch_reduced.png | Bin 0 -> 309 bytes art/{ => game}/wall_b.png | Bin art/{ => game}/wall_g.png | Bin art/{ => game}/wall_r.png | Bin art/game2/processed/switch_reduced.png | Bin 0 -> 333 bytes art/game2/switch.png | Bin 0 -> 899 bytes art/house/books_stack.png | Bin 1731 -> 0 bytes art/house/{processed => }/books_stack_b.png | Bin art/house/{processed => }/books_stack_g.png | Bin art/house/{processed => }/books_stack_r.png | Bin art/house/bookshelf.png | Bin 3027 -> 0 bytes art/house/{processed => }/bookshelf_b.png | Bin art/house/{processed => }/bookshelf_g.png | Bin art/house/{processed => }/bookshelf_r.png | Bin .../books_stack_reduced.png | Bin .../bookshelf_reduced.png | Bin .../{processed => preview}/table_reduced.png | Bin .../{processed => preview}/toilet_reduced.png | Bin art/house/table.png | Bin 784 -> 0 bytes art/house/{processed => }/table_b.png | Bin art/house/{processed => }/table_g.png | Bin art/house/{processed => }/table_r.png | Bin art/house/toilet.png | Bin 1200 -> 0 bytes art/house/{processed => }/toilet_b.png | Bin art/house/{processed => }/toilet_g.png | Bin art/house/{processed => }/toilet_r.png | Bin art/reduce_and_extract.sh | 2 +- art/tech/{processed => }/cd_b.png | Bin art/tech/{processed => }/cd_g.png | Bin art/tech/{processed => }/cd_r.png | Bin art/tech/{processed => }/cd_reduced.png | Bin art/tech/{processed => }/image2_b.png | Bin art/tech/{processed => }/image2_g.png | Bin art/tech/{processed => }/image2_r.png | Bin art/tech/{processed => }/image_b.png | Bin art/tech/{processed => }/image_g.png | Bin art/tech/{processed => }/image_r.png | Bin art/tech/{processed => }/ipod_b.png | Bin art/tech/{processed => }/ipod_g.png | Bin art/tech/{processed => }/ipod_r.png | Bin art/tech/{processed => }/ipod_reduced.png | Bin art/tech/{processed => }/mac_b.png | Bin art/tech/{processed => }/mac_g.png | Bin art/tech/{processed => }/mac_r.png | Bin art/tech/{processed => }/mac_reduced.png | Bin art/tech/{processed => }/mac_smaller_b.png | Bin art/tech/{processed => }/mac_smaller_g.png | Bin art/tech/{processed => }/mac_smaller_r.png | Bin .../{processed => }/mac_smaller_reduced.png | Bin art/tech/{ => orig_smal}/cd.png | Bin art/tech/{ => orig_smal}/ipod.png | Bin art/tech/{ => orig_smal}/mac_smaller.png | Bin art/test.png | Bin 126 -> 0 bytes box.lua | 2 - entity.lua | 11 + font/dog.jpg | Bin 0 -> 64397 bytes font/font_strip66.png | Bin 0 -> 872 bytes generic_moveable.lua | 21 + generic_unmoveable.lua | 21 + level_editor/editor.lua | 389 ++++++++++++++++++ level_editor/gui.lua | 129 ++++++ level_editor/object_attributes.lua | 43 ++ main.lua | 64 ++- room.lua | 100 +++-- sounds/ui/button.wav | Bin 0 -> 5800 bytes sprite_manager.lua | 32 +- switch.lua | 9 +- 133 files changed, 822 insertions(+), 66 deletions(-) rename art/{ase_orig => _ase_orig}/cloud.ase (100%) rename art/{ase_orig => _ase_orig}/crying_moai_r.ase (100%) rename art/{ase_orig => _ase_orig}/drool.ase (100%) rename art/{ase_orig => _ase_orig}/eye.ase (100%) rename art/{ase_orig => _ase_orig}/heart.ase (100%) rename art/{ase_orig => _ase_orig}/image2_b.ase (100%) rename art/{ase_orig => _ase_orig}/image_r.ase (100%) rename art/{ase_orig => _ase_orig}/kiiro.ase (100%) rename art/{ase_orig => _ase_orig}/palette.png (100%) rename art/{ase_orig => _ase_orig}/slime_woman.ase (100%) rename art/{ase_orig => _ase_orig}/wall.ase (100%) rename art/{ase_orig => _ase_orig}/warai.ase (100%) rename art/{font => _font}/slime_a.png (100%) rename art/{font => _font}/slime_c.png (100%) rename art/{font => _font}/slime_e.png (100%) rename art/{font => _font}/slime_h.png (100%) rename art/{font => _font}/slime_i.png (100%) rename art/{font => _font}/slime_l.png (100%) rename art/{font => _font}/slime_m.png (100%) rename art/{font => _font}/slime_o.png (100%) rename art/{font => _font}/slime_r.png (100%) rename art/{font => _font}/slime_s.png (100%) rename art/{font => _font}/slime_t.png (100%) rename art/{process => _process}/cone.png (100%) rename art/{process => _process}/kanashi.png (100%) rename art/{process => _process}/kinoko.png (100%) rename art/{process => _process}/lisa.png (100%) rename art/{test_object.png => _ui/bac.png} (74%) create mode 100644 art/_ui/blue.png create mode 100644 art/_ui/cancel.png create mode 100644 art/_ui/confirm.png create mode 100644 art/_ui/folder.png create mode 100644 art/_ui/forward.png create mode 100644 art/_ui/green.png create mode 100644 art/_ui/red.png create mode 100644 art/_ui/save.png create mode 100644 art/_ui/white.png create mode 100644 art/_ui/world.png delete mode 100644 art/door_locked.png delete mode 100644 art/door_locked_W.png rename art/{ => game/ahhh}/switch_b.png (100%) rename art/{ => game/ahhh}/switch_g.png (100%) rename art/{ => game/ahhh}/switch_r.png (100%) rename art/{ => game}/color_changing_floor_tile.png (100%) rename art/{ => game}/color_changing_floor_tile_b.png (100%) rename art/{ => game}/color_changing_floor_tile_g.png (100%) rename art/{ => game}/color_changing_floor_tile_r.png (100%) rename art/{ => game}/color_changing_wall.png (100%) rename art/{ => game}/door_locked_b.png (100%) rename art/{ => game}/door_locked_g.png (100%) rename art/{ => game}/door_locked_r.png (100%) rename art/{ => game}/door_locked_w.png (100%) rename art/{ => game}/door_unlocked.png (100%) rename art/{palette => game/palette.png} (100%) rename art/{ => game}/player.png (100%) rename art/{ => game}/player_b.png (100%) rename art/{ => game}/player_g.png (100%) rename art/{ => game}/player_r.png (100%) rename art/{ => game}/player_sad.png (100%) rename art/{ => game}/player_w.png (100%) rename art/{ => game}/static_wall.png (100%) create mode 100644 art/game/switch_b.png create mode 100644 art/game/switch_g.png rename art/{ => game}/switch_pressed.png (100%) create mode 100644 art/game/switch_r.png create mode 100644 art/game/switch_reduced.png rename art/{ => game}/wall_b.png (100%) rename art/{ => game}/wall_g.png (100%) rename art/{ => game}/wall_r.png (100%) create mode 100644 art/game2/processed/switch_reduced.png create mode 100644 art/game2/switch.png delete mode 100644 art/house/books_stack.png rename art/house/{processed => }/books_stack_b.png (100%) rename art/house/{processed => }/books_stack_g.png (100%) rename art/house/{processed => }/books_stack_r.png (100%) delete mode 100644 art/house/bookshelf.png rename art/house/{processed => }/bookshelf_b.png (100%) rename art/house/{processed => }/bookshelf_g.png (100%) rename art/house/{processed => }/bookshelf_r.png (100%) rename art/house/{processed => preview}/books_stack_reduced.png (100%) rename art/house/{processed => preview}/bookshelf_reduced.png (100%) rename art/house/{processed => preview}/table_reduced.png (100%) rename art/house/{processed => preview}/toilet_reduced.png (100%) delete mode 100644 art/house/table.png rename art/house/{processed => }/table_b.png (100%) rename art/house/{processed => }/table_g.png (100%) rename art/house/{processed => }/table_r.png (100%) delete mode 100644 art/house/toilet.png rename art/house/{processed => }/toilet_b.png (100%) rename art/house/{processed => }/toilet_g.png (100%) rename art/house/{processed => }/toilet_r.png (100%) rename art/tech/{processed => }/cd_b.png (100%) rename art/tech/{processed => }/cd_g.png (100%) rename art/tech/{processed => }/cd_r.png (100%) rename art/tech/{processed => }/cd_reduced.png (100%) rename art/tech/{processed => }/image2_b.png (100%) rename art/tech/{processed => }/image2_g.png (100%) rename art/tech/{processed => }/image2_r.png (100%) rename art/tech/{processed => }/image_b.png (100%) rename art/tech/{processed => }/image_g.png (100%) rename art/tech/{processed => }/image_r.png (100%) rename art/tech/{processed => }/ipod_b.png (100%) rename art/tech/{processed => }/ipod_g.png (100%) rename art/tech/{processed => }/ipod_r.png (100%) rename art/tech/{processed => }/ipod_reduced.png (100%) rename art/tech/{processed => }/mac_b.png (100%) rename art/tech/{processed => }/mac_g.png (100%) rename art/tech/{processed => }/mac_r.png (100%) rename art/tech/{processed => }/mac_reduced.png (100%) rename art/tech/{processed => }/mac_smaller_b.png (100%) rename art/tech/{processed => }/mac_smaller_g.png (100%) rename art/tech/{processed => }/mac_smaller_r.png (100%) rename art/tech/{processed => }/mac_smaller_reduced.png (100%) rename art/tech/{ => orig_smal}/cd.png (100%) rename art/tech/{ => orig_smal}/ipod.png (100%) rename art/tech/{ => orig_smal}/mac_smaller.png (100%) delete mode 100644 art/test.png create mode 100644 font/dog.jpg create mode 100644 font/font_strip66.png create mode 100644 generic_moveable.lua create mode 100644 generic_unmoveable.lua create mode 100644 level_editor/editor.lua create mode 100644 level_editor/gui.lua create mode 100644 level_editor/object_attributes.lua create mode 100644 sounds/ui/button.wav diff --git a/TODO b/TODO index bda0b2f..a5785bb 100644 --- a/TODO +++ b/TODO @@ -1,13 +1,10 @@ +FAILED lol -write ruby script to output json table for processed art -FAILED -write ruby script to output json table for processed art - -DOnE -fix collision -flesh out full mythos, i.e.: where is the player, why is the player here, what is the player trying to get, who is here, what do they thin_ of the player's presence (are they happy? is the player an old face to them?) -decide on dialog trees YES -should puzzles be sort of secondary to exploration? li_e should most of the game be weird fun and interaction, and then the 'off the rails' parts should be puzzles??? - all of the npcs should be stuc_ in a cycle of whatever they're doing, focused on it, hav always been focused on it, maybe it has to do w/ the fact that they are always doing 'night activities' ma_e sprites static class vars instead of globals (?) @@ -18,4 +15,62 @@ so instead of having the exits be a part of the room save, they should be a sepa } why?? b/c this allows us to visually arrange levels and not have to open every adjacent file (as much as 4!!) and edit them -go for the feeling of the beginning of eternal sunshine w/ joel's narration, maybe a sense of desperation (does this require urgency?? should the game be time-limited li_e majora's mas_? lol) \ No newline at end of file +go for the feeling of the beginning of eternal sunshine w/ joel's narration, maybe a sense of desperation (does this require urgency?? should the game be time-limited li_e majora's mas_? lol) + +LEVEL EDITOR + +VIEWS: + - ROOM VIEW + - color select, red green or blue + - right pane should be sorted by folder i.e. "museum", "nature", "food" + - all pix that don't have an accompanying table entry describing what they are they should go under + "unsorted" + - ASSET EDIT VIEW + - here we can edit attributes such as class and collision and folder + - WORLD VIEW + - this is where we can arrange rooms + - right pane should have room palette, should be divided into a grid + - should be able to right-clic_ edit room?? + +SOOOOO +we are going to reimplement walls and boxes as generic moveable n unmoveable objects +we are going to have a Master Asset File which will be set up like this: + { + entityName = { + propsFile = "path/fo/propsfile.prop" + } + } + + or maybe we should just have one Big Prop File in the art directory, assets.prop, which would look like + + { + entityName = { + class = "class name" --moveable, unmoveable, npc, switch, player + sprite = { + red = "path/to/sprite.png" + } + loadSpriteOnBoot = (boolean) + } + } + + this should do fine tbh + +so then when we boot up the game it should load this table +room save should have entity name only + + + + + + + + + + + + +PUZZLE IDEAS + +so dialogue puzzles will be cool and neat +one of them can be two v similar loo_ing npcs completing one another +so one would have, in red "i o e o " and the other would have " l v y u" or w/e \ No newline at end of file diff --git a/art/ase_orig/cloud.ase b/art/_ase_orig/cloud.ase similarity index 100% rename from art/ase_orig/cloud.ase rename to art/_ase_orig/cloud.ase diff --git a/art/ase_orig/crying_moai_r.ase b/art/_ase_orig/crying_moai_r.ase similarity index 100% rename from art/ase_orig/crying_moai_r.ase rename to art/_ase_orig/crying_moai_r.ase diff --git a/art/ase_orig/drool.ase b/art/_ase_orig/drool.ase similarity index 100% rename from art/ase_orig/drool.ase rename to art/_ase_orig/drool.ase diff --git a/art/ase_orig/eye.ase b/art/_ase_orig/eye.ase similarity index 100% rename from art/ase_orig/eye.ase rename to art/_ase_orig/eye.ase diff --git a/art/ase_orig/heart.ase b/art/_ase_orig/heart.ase similarity index 100% rename from art/ase_orig/heart.ase rename to art/_ase_orig/heart.ase diff --git a/art/ase_orig/image2_b.ase b/art/_ase_orig/image2_b.ase similarity index 100% rename from art/ase_orig/image2_b.ase rename to art/_ase_orig/image2_b.ase diff --git a/art/ase_orig/image_r.ase b/art/_ase_orig/image_r.ase similarity index 100% rename from art/ase_orig/image_r.ase rename to art/_ase_orig/image_r.ase diff --git a/art/ase_orig/kiiro.ase b/art/_ase_orig/kiiro.ase similarity index 100% rename from art/ase_orig/kiiro.ase rename to art/_ase_orig/kiiro.ase diff --git a/art/ase_orig/palette.png b/art/_ase_orig/palette.png similarity index 100% rename from art/ase_orig/palette.png rename to art/_ase_orig/palette.png diff --git a/art/ase_orig/slime_woman.ase b/art/_ase_orig/slime_woman.ase similarity index 100% rename from art/ase_orig/slime_woman.ase rename to art/_ase_orig/slime_woman.ase diff --git a/art/ase_orig/wall.ase b/art/_ase_orig/wall.ase similarity index 100% rename from art/ase_orig/wall.ase rename to art/_ase_orig/wall.ase diff --git a/art/ase_orig/warai.ase b/art/_ase_orig/warai.ase similarity index 100% rename from art/ase_orig/warai.ase rename to art/_ase_orig/warai.ase diff --git a/art/font/slime_a.png b/art/_font/slime_a.png similarity index 100% rename from art/font/slime_a.png rename to art/_font/slime_a.png diff --git a/art/font/slime_c.png b/art/_font/slime_c.png similarity index 100% rename from art/font/slime_c.png rename to art/_font/slime_c.png diff --git a/art/font/slime_e.png b/art/_font/slime_e.png similarity index 100% rename from art/font/slime_e.png rename to art/_font/slime_e.png diff --git a/art/font/slime_h.png b/art/_font/slime_h.png similarity index 100% rename from art/font/slime_h.png rename to art/_font/slime_h.png diff --git a/art/font/slime_i.png b/art/_font/slime_i.png similarity index 100% rename from art/font/slime_i.png rename to art/_font/slime_i.png diff --git a/art/font/slime_l.png b/art/_font/slime_l.png similarity index 100% rename from art/font/slime_l.png rename to art/_font/slime_l.png diff --git a/art/font/slime_m.png b/art/_font/slime_m.png similarity index 100% rename from art/font/slime_m.png rename to art/_font/slime_m.png diff --git a/art/font/slime_o.png b/art/_font/slime_o.png similarity index 100% rename from art/font/slime_o.png rename to art/_font/slime_o.png diff --git a/art/font/slime_r.png b/art/_font/slime_r.png similarity index 100% rename from art/font/slime_r.png rename to art/_font/slime_r.png diff --git a/art/font/slime_s.png b/art/_font/slime_s.png similarity index 100% rename from art/font/slime_s.png rename to art/_font/slime_s.png diff --git a/art/font/slime_t.png b/art/_font/slime_t.png similarity index 100% rename from art/font/slime_t.png rename to art/_font/slime_t.png diff --git a/art/process/cone.png b/art/_process/cone.png similarity index 100% rename from art/process/cone.png rename to art/_process/cone.png diff --git a/art/process/kanashi.png b/art/_process/kanashi.png similarity index 100% rename from art/process/kanashi.png rename to art/_process/kanashi.png diff --git a/art/process/kinoko.png b/art/_process/kinoko.png similarity index 100% rename from art/process/kinoko.png rename to art/_process/kinoko.png diff --git a/art/process/lisa.png b/art/_process/lisa.png similarity index 100% rename from art/process/lisa.png rename to art/_process/lisa.png diff --git a/art/test_object.png b/art/_ui/bac.png similarity index 74% rename from art/test_object.png rename to art/_ui/bac.png index 1eacb380698ddf5ca946d3e3aad4d0f6f1172771..7fb80626e0b5056fa6f3c584296773bd1111e14c 100644 GIT binary patch delta 95 zcmdnS{*g_wGr-TCmrII^fq{Y7)59eQNOOQN2Q!fTe9>>`MnxHB6M0V;#}JO0$q5Mw t0;vrQfq@dbT#FAf9BlAb6mj0l%n%~SBDw-B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDXg;OXKRA~7|!{~#}e0uNK@9UOWw%upnYNMpO>|;zm(c;+~Ij=7V`OnkU&t;uc GLK6Us*I|wT literal 0 HcmV?d00001 diff --git a/art/_ui/cancel.png b/art/_ui/cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4ae7d59d0cd71fbd400b846d0daec9f6260791 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDXg?CIhdA~ChJ|28j!0td6T*W`Em7dvWk3jAJN9w_JF zVqOuLS|ru!({;J&WcZbM~u!Z`{gIWGnyx literal 0 HcmV?d00001 diff --git a/art/_ui/confirm.png b/art/_ui/confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..13febe601aebf56318fe265a1d63488cfd18d72f GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDXg?&;zfA~7|${~#}e0SA+8Yy0o>H#9=lYVs?K^IX(< zqPhFirEe;48&sry`Yo!Mg%>cI`!R+zs3$%NWe#!J`@&)3d*j#lWBA=?%B(Hf5(La^ O3=E#GelF{r5}E)vqhqoF literal 0 HcmV?d00001 diff --git a/art/_ui/folder.png b/art/_ui/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..6debf500b5ea83a03ab78fd2164ea881121417f6 GIT binary patch literal 912 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDV~=jq}YA~ChJFOZMHfW=wX_3r-(%3^`rzF(hi){%2% zVMbq^Q-u3|CReVIRIVpW#3K~W2OVU6-Y!weo$1fU&ihdEz18$=KalS{UHx3vIVCg! E0I#85>i_@% literal 0 HcmV?d00001 diff --git a/art/_ui/forward.png b/art/_ui/forward.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba5a73479ab0c555c086c96c1f1beb8f9aae72e GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^93afW3?x5a^xMh6z|0Wf6XFWwDk+$_YS^S%8uo`- z-!D|VxghP`;aR^wnaz9}khRaid`g~orhbsOijj?_y?u#6LQ{0!!{pij|Yzu7U~ZIL4A7 zzhDN3XE)M-963)H#}JO0$q5WhfovKAqOHa*2U#Q(BnmV`jymu#1YTnDoxy*)1LP-9 LS3j3^P6B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDV~>FMGaA~7{Nfq_|+O=Q8L1xze2YE%S8SsbRZe-6DM z;&3G7!qx>^4v&S?+1l1>D6Q~w7iw6QbbyUv5~Ju@GoBC~kjFe-{an^LB{Ts5LE%~b literal 0 HcmV?d00001 diff --git a/art/_ui/red.png b/art/_ui/red.png new file mode 100644 index 0000000000000000000000000000000000000000..dfeb0e29718cbe8af7d57095caa0054c30beb2e8 GIT binary patch literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDV~?djqeA~7{N;Q-f^gA4~-IW-n*1+;xmU@|a0<-stQ zU(o5Xa6rSlCdS!ZA>|7!L{7dvmGFN-)pW*Xatv&>q7~b7+*?6j^K|udS?83{1OSX0 BUKRiV literal 0 HcmV?d00001 diff --git a/art/_ui/save.png b/art/_ui/save.png new file mode 100644 index 0000000000000000000000000000000000000000..208a57159dd849db5dfcef52bf6837724d7718ad GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDV~=IP=XA~7{Nz?qSUhsPmEgwH{#fKfPjLW7hilUfFo vfb&776=KRKo39$In5n?b+oa{QVi6O=he?XJ-WxwW4DywytDnm{r-UW|pQ2ar literal 0 HcmV?d00001 diff --git a/art/_ui/white.png b/art/_ui/white.png new file mode 100644 index 0000000000000000000000000000000000000000..0f4aa76f46e02c3def51f55f0e90c0fb75dd995f GIT binary patch literal 913 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m>B|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nq$WFd71bHUuuzRWJb^$5;~N z7tG-B>_!@pWAEwW7$Pw>xBnn7g8~Qh?jvvauVNF`zQO;}akfHkV~~&dyy+A2ZgzWY vFxqj2L(D=wB|mLR^7dB?S{#4VyGe!~QVq z`-N&Z7o@#AJnQ!-vzbo=vi2F6Ps#Jn)DQAjF|x6=w=XeBXo}8zm^}M`{Mjd`Z~yuK z|Nrc@+gs||GqbWH!-C43y4DyO-3(8@UcIY-x>r}e0nmIP`2U~bKZt@cf&5W08UlkL z1e(rAC;^?pSQ6wH%;50sMjDXg?&;zfA~Ci0{Ao@G0}kd3Ji-P4d9yG6c)8GWCOa3C z`I5>76Brl0Q|#GNaPoF+S*d~aBj%!0Q3>)5Vpl$A-PL(mu`KoP=@smr$#M&v8ZzBM O-t=_!b6Mw<&;$UTP~c!G_x=C> z>08cZQGuYo6Fve=s+{&o3=E!Sj>&8c9zpI-ldk>TkP^D-ki4Voro-(DlPe4uc6c(E zZ456j+2Fk0ba|7P&CTRg?R5vFBTSAw<_=8UGPhr$$@rwmod+I9{VR*7u3o}g^^wVa XM}pL1_a)1L4q)(f^>bP0l+XkK28TSh diff --git a/art/door_locked_W.png b/art/door_locked_W.png deleted file mode 100644 index 90b0f5819ddb5623667e54a7318a9fb7258f9b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TAnVBAr`&KfBygfU(e>npvnef u*$caFGd3{jkuu0Su!2$GfJbH-8^cz60bY((yBmSJ7(8A5T-G@yGywnyI~`R3 diff --git a/art/switch_b.png b/art/game/ahhh/switch_b.png similarity index 100% rename from art/switch_b.png rename to art/game/ahhh/switch_b.png diff --git a/art/switch_g.png b/art/game/ahhh/switch_g.png similarity index 100% rename from art/switch_g.png rename to art/game/ahhh/switch_g.png diff --git a/art/switch_r.png b/art/game/ahhh/switch_r.png similarity index 100% rename from art/switch_r.png rename to art/game/ahhh/switch_r.png diff --git a/art/color_changing_floor_tile.png b/art/game/color_changing_floor_tile.png similarity index 100% rename from art/color_changing_floor_tile.png rename to art/game/color_changing_floor_tile.png diff --git a/art/color_changing_floor_tile_b.png b/art/game/color_changing_floor_tile_b.png similarity index 100% rename from art/color_changing_floor_tile_b.png rename to art/game/color_changing_floor_tile_b.png diff --git a/art/color_changing_floor_tile_g.png b/art/game/color_changing_floor_tile_g.png similarity index 100% rename from art/color_changing_floor_tile_g.png rename to art/game/color_changing_floor_tile_g.png diff --git a/art/color_changing_floor_tile_r.png b/art/game/color_changing_floor_tile_r.png similarity index 100% rename from art/color_changing_floor_tile_r.png rename to art/game/color_changing_floor_tile_r.png diff --git a/art/color_changing_wall.png b/art/game/color_changing_wall.png similarity index 100% rename from art/color_changing_wall.png rename to art/game/color_changing_wall.png diff --git a/art/door_locked_b.png b/art/game/door_locked_b.png similarity index 100% rename from art/door_locked_b.png rename to art/game/door_locked_b.png diff --git a/art/door_locked_g.png b/art/game/door_locked_g.png similarity index 100% rename from art/door_locked_g.png rename to art/game/door_locked_g.png diff --git a/art/door_locked_r.png b/art/game/door_locked_r.png similarity index 100% rename from art/door_locked_r.png rename to art/game/door_locked_r.png diff --git a/art/door_locked_w.png b/art/game/door_locked_w.png similarity index 100% rename from art/door_locked_w.png rename to art/game/door_locked_w.png diff --git a/art/door_unlocked.png b/art/game/door_unlocked.png similarity index 100% rename from art/door_unlocked.png rename to art/game/door_unlocked.png diff --git a/art/palette b/art/game/palette.png similarity index 100% rename from art/palette rename to art/game/palette.png diff --git a/art/player.png b/art/game/player.png similarity index 100% rename from art/player.png rename to art/game/player.png diff --git a/art/player_b.png b/art/game/player_b.png similarity index 100% rename from art/player_b.png rename to art/game/player_b.png diff --git a/art/player_g.png b/art/game/player_g.png similarity index 100% rename from art/player_g.png rename to art/game/player_g.png diff --git a/art/player_r.png b/art/game/player_r.png similarity index 100% rename from art/player_r.png rename to art/game/player_r.png diff --git a/art/player_sad.png b/art/game/player_sad.png similarity index 100% rename from art/player_sad.png rename to art/game/player_sad.png diff --git a/art/player_w.png b/art/game/player_w.png similarity index 100% rename from art/player_w.png rename to art/game/player_w.png diff --git a/art/static_wall.png b/art/game/static_wall.png similarity index 100% rename from art/static_wall.png rename to art/game/static_wall.png diff --git a/art/game/switch_b.png b/art/game/switch_b.png new file mode 100644 index 0000000000000000000000000000000000000000..c55facb2328b504b45af248965912914b64019a3 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGmsv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN&X+66FhPf3NjLAJa2Gt&2OC7#SFv>KYj98X1Nd7+RScSQ#4X8kkra j7?fXC4M)+Co1c=IR*72!TgTkjKn)C@u6{1-oD!M<11d+f literal 0 HcmV?d00001 diff --git a/art/game/switch_g.png b/art/game/switch_g.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe21efcbd13705a2049ba795a720f42e5109494 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGmsv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN&X+66FhPfI!C8<`)MX5lF!N|bSRM)^**T^u$z|hLnz{=22 o*TBTez@Yr9YB-99-29Zxv`X9>*gEFE25MmNboFyt=akR{0Mk!OIRF3v literal 0 HcmV?d00001 diff --git a/art/switch_pressed.png b/art/game/switch_pressed.png similarity index 100% rename from art/switch_pressed.png rename to art/game/switch_pressed.png diff --git a/art/game/switch_r.png b/art/game/switch_r.png new file mode 100644 index 0000000000000000000000000000000000000000..82f6469b97b1e2fcc3783116ab2838e59dfa458c GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGmsv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN&X+66ISFWc;qBl6f`{KkzkZ` z&aIh?11Vl2ohYqEsNoU}Ruus%v1ZYh)N=U}$A(U}b2i oYhYq!U{HQlH5^4lZhlH;S|x4`Y#no712r&sy85}Sb4q9e06Ne~4gdfE literal 0 HcmV?d00001 diff --git a/art/game/switch_reduced.png b/art/game/switch_reduced.png new file mode 100644 index 0000000000000000000000000000000000000000..285f8bd2f86018da01dad43c9eeb6286c1597574 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8Uop z6XN8S~kox7jeFd11eE1ag8WRNi0dVN-jzTQVd20hNij(#=3@< xAqGZPrbbpK2D%0&Rt5$PUn2ISXvob^$xN%nt)Xz`15j`zR3V-#w2fd7smfgy7zz_&H|6fVj%4S#%?FG?SKp&PZ!4!j_b(@ z2_hm1Kq4pzNQIc02_*;^6&8lEOltB_@nBKn4&=PX%CL-&b!w&THY1=u)e_f;l9a@f zRIB8oR3OD*WMF8jYhbKvWEf&#Xk}t)Went+SQ!}nQTb$yq9HdwB{QuOw}#$IuYRBg N22WQ%mvv4FO#o;3QzZZZ literal 0 HcmV?d00001 diff --git a/art/game2/switch.png b/art/game2/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..5868207d3972fc9c146a1deb6ef50dfe79c8e2e9 GIT binary patch literal 899 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 O0000t5 zZA>Lf`l1gY8e@WQ5THb}%(Ue9Vhraw=SCjwo3cT^wZhgo09SBK) z03ifI2rrNTAxYi_;RO~8>ub8!@L2cbH9$?%G(QAt3S3L2IDO_c-Q97XeBvoW;SgIk zKjZ5(H!|0K`2$GR!6zsBH3Zz4o5LuV8V-Ky%*oogXTzhuPQQr2R_!%}5EOC+N=0Ll z)78nV%L2U6_acVj`Rlr_4-XIPehAbjp#-*TFIw8TZsT1+LZJ}gplKb=D**o_m}#1R zaj>v_@2MkDos`RE{{*bc{S#o}>G@T_!N#(hQ(#dJc&}bG2@AS2ZRx~>a=>$={W?P8Wq zY}>)KOy=h1?w`Qz+-+j97`Ef!U{frVXbrbwS(bNd)5I{0+7;bQ-(=*MvwU>mW8crO zYKt^J@xxD=B1shT1uUyV#jKFe=P48lq|<4}$FDLlFhEyV7pkhVVf}jEeR~fxGc$VX zTFO@es+w4?9gmzptIub0oWF9Gfqh?Si9|v_c<>-Yhlfxk1tAG!Nv<_509gjFU3%wo zu<6hqxT`wL5?E?GUwKLYYUl_6kw^qdl8~hOBwfyy>yiy4$g)g6pU1K+6h-kB9K1ep zUjzb*LNb{ook{x&d@m9WUje}LJNxt_hlhzoA_RlMriuLfI(+H);L4QHf*z_D+>)f~sscl7n~>dU(T`2NS^Jloq#*F$TT-S_k82(wc+=v9U2WZQ4|uZ|&U%zjaFY>dZ=Mx%s-VOFhPg{rFjmKY_Onq+2XhOvtmiK=Z(&ra9j`6kfb z(LpwwC7sRErbc;q?OFhGxg2^nOX|-QhG9@F7IAC`t6~ufhnf9rmc;0Vx?13yfGo>| z!(mL*B%R3+E`bgJd=u#G>||nMf_OZRq9|NQ zB&gUniX`LUwdS&6P$(ABb)8$cZZSPIMRDG^Vp<_JB9!N O0000|@s2oj`)1PNLo!J)W2!QI`h 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 width then + --we need to adjust for sidebar coords + x = x - width + + if editorView == "room" then + if not selectedFolder then + for _, uiElement in pairs(folderButtons) do + if uiElement:clicIsInBox(x, y) then + uiElement:onClic(button) + return + end + end + else + for _, uiElement in pairs(assetButtons[selectedRow]) do + if uiElement:clicIsInBox(x, y) then + uiElement:onClic(button) + return + end + end + end + + for _, uiElement in pairs(uiButtons) do + if uiElement:clicIsInBox(x, y) then + uiElement:onClic(button) + end + end + elseif editorView == "asset" then + for _, uiElement in pairs(editingAssetButtons) do + if uiElement:clicIsInBox(x, y) then + uiElement:onClic(button) + end + end + end + end +end + +function editorTextHandler(text) + if editorView == "asset" and activeField then + inputText = text + editingAssetButtons[activeField]:editText(text) + end +end + +function editorCompleteResponse() + if editorView == "asset" then + assetProperties[activeField] = inputText + end + print(assetProperties[activeField], "ass") + activeField = nil +end + +function sortAllAssets() + setAll() +end + +function createUIElement(t) + return GUI:new(t) +end + +function editorDraw() + if editorView == "room" then + for _, button in pairs(uiButtons) do + button:draw() + end + if not selectedFolder then + for _, folder in pairs(folderButtons) do + folder:draw() + end + else + for _, entity in ipairs(assetButtons[selectedRow]) do + entity:draw() + end + end + elseif editorView == "asset" then + for _, button in pairs(editingAssetButtons) do + button:draw() + end + end + + for _, label in pairs(labels) do + label:draw() + end +end diff --git a/level_editor/gui.lua b/level_editor/gui.lua new file mode 100644 index 0000000..12cf916 --- /dev/null +++ b/level_editor/gui.lua @@ -0,0 +1,129 @@ +GUI = class("level_editor/gui") + +GUI.static.pressSound = love.audio.newSource("sounds/ui/button.wav") + +GUI.static.defaultCallbac = function() print("this button has not been configured") end + +function GUI:initialize(t) + print("i exist", t.name, t.text) + self.offset = {x = 0, y = 0} + self.name = t.name + self.text = t.text + + if not t.onClic then + t.onClic = {} + end + if not t.onClic.right then + t.onClic.right = GUI.defaultCallbac + end + if not t.onClic.left then + t.onClic.left = GUI.defaultCallbac + end + + self.clic = t.onClic + + self.x, self.y = t.x, t.y + + if t.sprite then + print(self.name) + self.scale = drawScale * 2 / 3 + self.w = t.sprite:getWidth() * self.scale + self.h = t.sprite:getHeight() * self.scale + self.sprite = t.sprite + + self.offset = {x = self.w / 2, y = self.h / 2} + self.x, self.y = t.x - self.offset.x, t.y - self.offset.y + elseif t.sprites then + self.sprites = t.sprites + local w, h + for color, sprite in pairs(t.sprites) do + w = sprite:getWidth() + h = sprite:getHeight() + end + if w > h then + self.scale = (drawScale * (2 / 3)) / (w / 16) + elseif w < h then + self.scale = (drawScale * (2 / 3)) / (h / 16) + else + self.scale = (drawScale * (2 / 3)) / (w / 16) + end + self.w = sideBarBox.w - (self.x * 2) + self.h = h * self.scale + else + -- this is text + self.x, self.y = t.x, t.y + self.w, self.h = sideBarBox.w - self.x * 2, 50 + end + + if self.name == "folder" then + self.w = sideBarBox.w - self.x * 2 + end +end + +function GUI:clicIsInBox(x, y) + if x > self.x and x < self.x + self.w and y > self.y and y < self.y + self.h then + return true + end + return false +end + +function GUI:getBox() + return {x = self.x, y = self.y, w = self.w, h = self.h} +end + +function GUI:editText(text) + self.text = text +end + +function GUI:draw() + + love.graphics.setColor(gColor.white:set()) + love.graphics.setLineWidth(4) + + local box = self:getBox() + box.x = box.x + self:sha() + box.y = box.y + self:sha() + + if name == "forward" then + print(box.x, box.y) + end + + if selectedColor == self.name then + love.graphics.rectangle("line", box.x, box.y, box.w, box.h) + end + + if self.sprite then + love.graphics.draw(self.sprite, box.x, box.y, 0, self.scale, self.scale) + end + + if self.sprites then + for color, sprite in pairs(self.sprites) do + love.graphics.setColor(gColor[color]:set()) + love.graphics.draw(sprite, box.x, box.y, 0, self.scale, self.scale) + end + end + + if self.text then + love.graphics.setColor(gColor.white:set()) + if not self.sprites and not self.sprite then + love.graphics.rectangle("line", box.x, box.y, box.w, box.h) + end + love.graphics.print(self.text, box.x + 50, box.y + 15) + end + +end + +function GUI:onClic(button) + print(button) + print("hey!!! u cliced on me. my name is ", self.name, self.text) + GUI.pressSound:play() + if button == "l" then + self.clic:left() + elseif button == "r" then + self.clic:right() + end +end + +function GUI:sha() + return math.random(-worldSha, worldSha) * .5 +end \ No newline at end of file diff --git a/level_editor/object_attributes.lua b/level_editor/object_attributes.lua new file mode 100644 index 0000000..49f3af5 --- /dev/null +++ b/level_editor/object_attributes.lua @@ -0,0 +1,43 @@ +require "libs/TSerial" + +local targetFolder = "art" + +function get(folder) + +end + +function getAllAssets() + local objectnames = {} + local topFolder = "art" + local files = love.filesystem.getDirectoryItems(topFolder) + for _, folder in pairs(files) do + if string.sub(folder, 1, 1) ~= "_" then + -- we ignore directories which are prepended w/ an underscore + if not string.find(folder, "%.") then + objectnames[folder] = {} + love.filesystem.createDirectory("art/" .. folder) + -- this is a folder, probably + local newFiles = love.filesystem.getDirectoryItems(topFolder .. "/" .. folder) + for _, fileToAnalyze in pairs(newFiles) do + if fileToAnalyze:find("_r.png") or fileToAnalyze:find("_g.png") or fileToAnalyze:find("_b.png")then + local color + + if fileToAnalyze:find("_r.png") then color = "red" + elseif fileToAnalyze:find("_g.png") then color = "green" + elseif fileToAnalyze:find("_b.png") then color = "blue" end + + local name = fileToAnalyze:sub(1, fileToAnalyze:len() - 6) + if not objectnames[folder][name] then + objectnames[folder][name] = {} + end + objectnames[folder][name][color] = topFolder .. "/" .. folder .. "/" .. fileToAnalyze + end + end + end + end + end + + str = TSerial.pack(objectnames, nil, true) + love.filesystem.write("great.sav", str) + return objectnames +end \ No newline at end of file diff --git a/main.lua b/main.lua index 6436ca9..125f207 100644 --- a/main.lua +++ b/main.lua @@ -1,9 +1,9 @@ love.graphics.setDefaultFilter("linear", "nearest") +local utf8 = require("utf8") class = require "libs/middleclass" Timer = require "libs/hump/timer" sfxr = require "libs/sfxrlua/sfxr" -json = require "libs/json4lua/json/json" require "_debug_helpers" require "_helpers" require "input" @@ -11,37 +11,42 @@ require "color" require "room" require "shaders" require "sprite_manager" +require "level_editor/editor" function love.load() _initDefaults() _initGridVars() _initSounds() _initGlobalColors() + _initLevelEditor() processSprites() gameCanvas = love.graphics.newCanvas() + sideBarCanvas = love.graphics.newCanvas(sideBarBox.w, sideBarBox.h) finalCanvas = love.graphics.newCanvas() + inputTimer = Timer.new() currentRoom = Room:new{ - player = { - x = 5, y = 5, activeColors = {"red", "green", "blue"} - } + name = "test" } + + response = "" end function love.update(dt) Input:handler(dt) currentRoom:update(dt) - if love.keyboard.isDown("w") then worldSha = worldSha + 1 end - if love.keyboard.isDown("s") then worldSha = worldSha - 1 end + -- if love.keyboard.isDown("w") then worldSha = worldSha + 1 end + -- if love.keyboard.isDown("s") then worldSha = worldSha - 1 end end function love.draw() gameCanvas:clear() finalCanvas:clear() + sideBarCanvas:clear() love.graphics.setCanvas(gameCanvas) love.graphics.setBlendMode("screen") @@ -67,9 +72,14 @@ function love.draw() love.graphics.draw(gameCanvas, 0, 0) love.graphics.setCanvas() + love.graphics.setCanvas(sideBarCanvas) + editorDraw() + love.graphics.setCanvas() + love.graphics.setBlendMode("alpha") love.graphics.setColor(255, 255, 255, 255) love.graphics.draw(finalCanvas, 0, 0) + love.graphics.draw(sideBarCanvas, sideBarBox.x, sideBarBox.y) love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10) end @@ -81,12 +91,39 @@ function love.keypressed(key) local c = Input.playerColor(key) currentRoom:switchPlayerColor(c) end - if key == "w" then - worldSha = worldSha + 1 + + -- if key == "w" then + -- worldSha = worldSha + 1 + -- end + -- if key == "s" then + -- worldSha = worldSha - 1 + -- end + + if key == "return" then + response = "" + editorCompleteResponse() + elseif key == "backspace" then + local byteoffset = utf8.offset(response, -1) + + if byteoffset then + -- remove the last UTF-8 character. + -- string.sub operates on bytes rather than UTF-8 characters, so we couldn't do string.sub(response, 1, -2). + response = string.sub(response, 1, byteoffset - 1) + editorTextHandler(response) + end end - if key == "s" then - worldSha = worldSha - 1 +end + +function love.mousepressed(x, y, button) + if button == "r" then + currentRoom:attemptDelete(x, y) end + editorMouseHandler(x, y, button) +end + +function love.textinput(t) + response = response .. t + editorTextHandler(response) end function _initDefaults() @@ -105,6 +142,13 @@ function _initDefaults() --set randomseed math.randomseed(os.time()) + + --font + font = love.graphics.newFont("font/LCD_Solid.ttf", 16) + love.graphics.setFont(font) + + --sidebar + sideBarBox = {x = width, y = 0, w = love.graphics.getWidth() - width, h = height} end function _initGridVars() diff --git a/room.lua b/room.lua index a4b9d58..1faa9cd 100644 --- a/room.lua +++ b/room.lua @@ -11,6 +11,8 @@ require "assorted" require "switch" require "door" require "dialogue_manager" +require "generic_moveable" +require "generic_unmoveable" function Room:initialize(t) self.player = {} @@ -23,9 +25,17 @@ function Room:initialize(t) if t.name then print("loaded!!") self:load(t.name) - for _, color in ipairs(t.player.activeColors) do - self:registerPlayer(Player:new(t.player.x, t.player.y, color), color) - self:setActiveColor(color, true) + print(t.name) + if t.player then + for _, color in ipairs(t.player.activeColors) do + self:registerPlayer(Player:new(t.player.x, t.player.y, color), color) + self:setActiveColor(color, true) + end + else + for color, active in pairs(self.activeColors) do + self:registerPlayer(Player:new(1, 1, color), color) + self:setActiveColor(color, true) + end end self.exits = t.exits self.name = t.name @@ -45,36 +55,36 @@ function Room:initialize(t) -- self.activeColors[color] = true -- end - for i=1, 1 do - local x, y = randomPosition() - -- local door = Door:new(x, y, self.colorsPlayerHas) - -- table.insert(self.doors, door) - - for color, active in pairs(self.activeColors) do - table.insert(self.collideables[color], Wall:new(x, y, color)) - end - end - - for i=0, 5 do - local x, y = randomPosition() - for color, active in pairs(self.activeColors) do - table.insert(self.collideables[color], Box:new(x, y, color)) - end - end - - -- for i = 0, 5 do + -- for i=1, 1 do -- local x, y = randomPosition() - -- print(x, y) - -- local c = randomColor() - -- table.insert(self.switches[c], Switch:new(x, y, c)) + -- -- local door = Door:new(x, y, self.colorsPlayerHas) + -- -- table.insert(self.doors, door) + + -- for color, active in pairs(self.activeColors) do + -- table.insert(self.collideables[color], Wall:new(x, y, color)) + -- end -- end + -- for i=0, 5 do + -- local x, y = randomPosition() + -- for color, active in pairs(self.activeColors) do + -- table.insert(self.collideables[color], Box:new(x, y, color)) + -- end + -- end + + for i = 0, 5 do + local x, y = randomPosition() + print(x, y) + local c = randomColor() + table.insert(self.switches[c], Switch:new(x, y, c)) + end + for color, active in pairs(self.activeColors) do local x, y = 6, 3 -- if active then self.collideables[color]["n: " .. x .. ", " .. y] = Ass:new(x, y, color, "animals/processed/", "me_rach") end local x, y = 1, 1 - if active then table.insert(self.collideables[color], Ass:new(x, y, color, "nature/", "palm_scaled_reduced")) end + -- if active then table.insert(self.collideables[color], Ass:new(x, y, color, "nature/", "palm_scaled_reduced")) end -- local x, y = 7, 7 -- if active then self.collideables[color]["n: " .. x .. ", " .. y] = Ass:new(x, y, color, "food/processed/", "beer_mug") end @@ -539,6 +549,44 @@ function Room:registerPlayer(entityPointer, color) self.player[color] = entityPointer end +function Room:getCellFromMousePos(mouseX, mouseY) + local cell = {} + cell.x = math.ceil(mouseX * gridWidth / width) + cell.y = math.ceil(mouseY * gridHeight / height) + return cell +end + +function Room:attemptDelete(mouseX, mouseY) + local cell = self:getCellFromMousePos(mouseX, mouseY) + for color, player in pairs(self.player) do + if player:occupiesCell(cell) then + self.player[color] = nil + self.colorsPlayerHas[color] = false + end + end + local entities = {} + for color, entityArray in pairs(self.collideables) do + for index, entity in pairs(entityArray) do + if entity:occupiesCell(cell) then + table.remove(self.collideables[color], index) + end + end + end + for color, switches in pairs(self.switches) do + for index, switch in pairs(switches) do + if switch:occupiesCell(cell) then + print("assssss occupied scellsll") + table.remove(self.switches[color], index) + end + end + end + self:tick() +end + +function Room:attemptPlace() + +end + function Room:load(name) local room = love.filesystem.read("rooms/" .. name .. ".sav") self:deserialize(TSerial.unpack(room)) @@ -614,7 +662,7 @@ function nextRoom(pos) currentRoom:save() currentRoom = Room:new{ - name = "test", + -- name = "test", player = { x = newPos.x, y = newPos.y, activeColors = currentRoom:getActiveColors() } diff --git a/sounds/ui/button.wav b/sounds/ui/button.wav new file mode 100644 index 0000000000000000000000000000000000000000..b707eaa765de650670b022f9cf0b403b6348224f GIT binary patch literal 5800 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 literal 0 HcmV?d00001 diff --git a/sprite_manager.lua b/sprite_manager.lua index d287598..1c78994 100644 --- a/sprite_manager.lua +++ b/sprite_manager.lua @@ -1,39 +1,37 @@ sprites = { - player = love.graphics.newImage("art/player.png"), - wall = love.graphics.newImage("art/static_wall.png"), + player = love.graphics.newImage("art/game/player.png"), + wall = love.graphics.newImage("art/game/static_wall.png"), box = { - red = love.graphics.newImage("art/wall_r.png"), - green = love.graphics.newImage("art/wall_g.png"), - blue = love.graphics.newImage("art/wall_b.png") + red = love.graphics.newImage("art/game/wall_r.png"), + green = love.graphics.newImage("art/game/wall_g.png"), + blue = love.graphics.newImage("art/game/wall_b.png") }, door = { - white = love.graphics.newImage("art/door_locked_w.png"), - red = love.graphics.newImage("art/door_locked_r.png"), - green = love.graphics.newImage("art/door_locked_g.png"), - blue = love.graphics.newImage("art/door_locked_b.png"), - unlocked = love.graphics.newImage("art/door_unlocked.png") + white = love.graphics.newImage("art/game/door_locked_w.png"), + red = love.graphics.newImage("art/game/door_locked_r.png"), + green = love.graphics.newImage("art/game/door_locked_g.png"), + blue = love.graphics.newImage("art/game/door_locked_b.png"), + unlocked = love.graphics.newImage("art/game/door_unlocked.png") }, switch = { - red = love.graphics.newImage("art/switch_r.png"), - green = love.graphics.newImage("art/switch_g.png"), - blue = love.graphics.newImage("art/switch_b.png") + red = love.graphics.newImage("art/game/switch_r.png"), + green = love.graphics.newImage("art/game/switch_g.png"), + blue = love.graphics.newImage("art/game/switch_b.png") }, water = { red = love.graphics.newImage("art/nature/water_r.png"), green = love.graphics.newImage("art/nature/water_g.png"), blue = love.graphics.newImage("art/nature/water_b.png") }, - mac_smaller = love.graphics.newImage("art/tech/processed/mac_smaller_r.png"), + mac_smaller = love.graphics.newImage("art/tech/mac_smaller_r.png"), tree = { red = love.graphics.newImage("art/nature/palm_scaled_r.png"), green = love.graphics.newImage("art/nature/palm_scaled_g.png"), blue = love.graphics.newImage("art/nature/palm_scaled_b.png") }, - test_object = love.graphics.newImage("art/test_object.png"), npcs = { }, - artifact = love.graphics.newImage("art/process/cone.png"), } spriteCells = {} @@ -43,7 +41,6 @@ function processSprites() getCellsFromSprite(sprites.player) for name, spriteObj in pairs(sprites) do - print(name) if type(spriteObj) == "table" then spriteCells[name] = {} --this is multicolored so... @@ -88,7 +85,6 @@ function getCellsFromSprite(sprite) end if empty then - print("empty @ ", cell.x, cell.y) cellsToRemove[cell] = cell --references boxCells cell so comparison should wor_ end end diff --git a/switch.lua b/switch.lua index 3788df5..8213258 100644 --- a/switch.lua +++ b/switch.lua @@ -3,10 +3,10 @@ require "entity" Switch = class("Switch", Entity) Switch.static.sprites = { - red = love.graphics.newImage("art/switch_r.png"), - green = love.graphics.newImage("art/switch_g.png"), - blue = love.graphics.newImage("art/switch_b.png"), - pressed = love.graphics.newImage("art/switch_pressed.png") + red = love.graphics.newImage("art/game/switch_r.png"), + green = love.graphics.newImage("art/game/switch_g.png"), + blue = love.graphics.newImage("art/game/switch_b.png"), + pressed = love.graphics.newImage("art/game/switch_pressed.png") } function Switch:initialize(x, y, color) @@ -15,6 +15,7 @@ function Switch:initialize(x, y, color) y = y, color = color, collision = "none", --switches are floor elements that can't be pushed or bloc movement!! + cellShape = {{x = 1, y = 1}}, sprite = sprites.switch[color] })