From e605e5e9a8b4aa5e02666a0ef80c16b39886dfd4 Mon Sep 17 00:00:00 2001 From: rainlizard <15337628+rainlizard@users.noreply.github.com> Date: Tue, 28 Jan 2025 19:55:30 +1100 Subject: [PATCH] refactor code to internally use Genres --- Autoload/Things.gd | 417 ++++++++++++++++++-------------------- Scenes/CfgLoader.gd | 11 +- Scenes/CurrentMap.gd | 3 + Scenes/Instances.gd | 2 +- Scenes/OwnerSelection.gd | 2 +- Scenes/PickThingWindow.gd | 113 ++++++++--- Scenes/ThingInstance.gd | 2 +- 7 files changed, 286 insertions(+), 264 deletions(-) diff --git a/Autoload/Things.gd b/Autoload/Things.gd index 6e95d626..55a09d9f 100644 --- a/Autoload/Things.gd +++ b/Autoload/Things.gd @@ -8,7 +8,7 @@ const LIGHT_LIMIT = -1 enum { NAME_ID = 0 SPRITE = 1 - EDITOR_TAB = 2 + GENRE = 2 } enum TYPE { @@ -55,10 +55,10 @@ func fetch_sprite(thing_type:int, sub_type:int): var sprite = Graphics.sprite_id.get(sub_type_data[SPRITE]) if sprite: return sprite - match sub_type_data[EDITOR_TAB]: - TAB_SPECIAL: return Graphics.sprite_id.get(901, null) - TAB_SPELL: return Graphics.sprite_id.get(777, null) - TAB_BOX: return Graphics.sprite_id.get(114, null) + match sub_type_data[GENRE]: + "SPECIALBOX": return Graphics.sprite_id.get(901, null) + "SPELLBOOK": return Graphics.sprite_id.get(777, null) + "WORKSHOPBOX": return Graphics.sprite_id.get(114, null) return null @@ -139,39 +139,6 @@ var reverse_data_structure_name = { "Extra":TYPE.EXTRA, } - -enum { # I only used the official DK keeperfx categories as a guide rather than strict adherence. What strict adherence gets you is all the egg objects classified as Furniture, while Chicken sits alone in its own Food category. - TAB_ACTION - TAB_CREATURE - TAB_GOLD - TAB_TRAP - TAB_SPELL - TAB_SPECIAL - TAB_BOX - TAB_LAIR - TAB_EFFECTGEN - TAB_FURNITURE - TAB_DECORATION - TAB_MISC -} - - -var GENRE_TO_TAB = { - "DECORATION": TAB_DECORATION, - "EFFECT": TAB_EFFECTGEN, - "FOOD": TAB_FURNITURE, - "FURNITURE": TAB_FURNITURE, - "LAIR_TOTEM": TAB_LAIR, - "POWER": TAB_MISC, - "SPECIALBOX": TAB_SPECIAL, - "SPELLBOOK": TAB_SPELL, - "TREASURE_HOARD": TAB_GOLD, - "VALUABLE": TAB_GOLD, - "WORKSHOPBOX": TAB_BOX, - "HEROGATE": TAB_ACTION, -} - - func data_structure(thingType:int): match thingType: Things.TYPE.OBJECT: return DATA_OBJECT @@ -229,10 +196,10 @@ enum SPELLBOOK { } var collectible_belonging = { - TAB_GOLD : Slabs.TREASURE_ROOM, - TAB_SPELL : Slabs.LIBRARY, - TAB_SPECIAL : Slabs.LIBRARY, - TAB_BOX : Slabs.WORKSHOP, + "VALUABLE" : Slabs.TREASURE_ROOM, + "SPELLBOOK" : Slabs.LIBRARY, + "SPECIALBOX" : Slabs.LIBRARY, + "WORKSHOPBOX" : Slabs.WORKSHOP, } func convert_relative_256_to_float(datnum): @@ -251,207 +218,207 @@ func find_subtype_by_name(thingType, findName): var DATA_EXTRA = { 0 : [null, null, null, null], -1 : ["ACTIONPOINT", "ACTIONPOINT", TAB_ACTION], -2 : ["LIGHT", "LIGHT", TAB_EFFECTGEN], +1 : ["ACTIONPOINT", "ACTIONPOINT"], +2 : ["LIGHT", "LIGHT"], } var DATA_DOOR = { # 0 : [null, null, null], -1 : ["WOOD", "WOOD" , TAB_MISC], -2 : ["BRACED", "BRACED", TAB_MISC], -3 : ["STEEL", "STEEL", TAB_MISC], -4 : ["MAGIC", "MAGIC", TAB_MISC] +1 : ["WOOD", "WOOD"], +2 : ["BRACED", "BRACED"], +3 : ["STEEL", "STEEL"], +4 : ["MAGIC", "MAGIC"] } var DATA_TRAP = { 00 : [null, null, null], -01 : ["BOULDER", "BOULDER", TAB_TRAP], -02 : ["ALARM", "ALARM", TAB_TRAP], -03 : ["POISON_GAS", "POISON_GAS", TAB_TRAP], -04 : ["LIGHTNING", "LIGHTNING", TAB_TRAP], -05 : ["WORD_OF_POWER", "WORD_OF_POWER", TAB_TRAP], -06 : ["LAVA", "LAVA", TAB_TRAP], +01 : ["BOULDER", "BOULDER"], +02 : ["ALARM", "ALARM"], +03 : ["POISON_GAS", "POISON_GAS"], +04 : ["LIGHTNING", "LIGHTNING"], +05 : ["WORD_OF_POWER", "WORD_OF_POWER"], +06 : ["LAVA", "LAVA"], } var DATA_EFFECTGEN = { 0 : [null, null, null], -1 : ["EFFECTGENERATOR_LAVA", "EFFECTGENERATOR_LAVA", TAB_EFFECTGEN], -2 : ["EFFECTGENERATOR_DRIPPING_WATER", "EFFECTGENERATOR_DRIPPING_WATER", TAB_EFFECTGEN], -3 : ["EFFECTGENERATOR_ROCK_FALL", "EFFECTGENERATOR_ROCK_FALL", TAB_EFFECTGEN], -4 : ["EFFECTGENERATOR_ENTRANCE_ICE", "EFFECTGENERATOR_ENTRANCE_ICE", TAB_EFFECTGEN], -5 : ["EFFECTGENERATOR_DRY_ICE", "EFFECTGENERATOR_DRY_ICE", TAB_EFFECTGEN] +1 : ["EFFECTGENERATOR_LAVA", "EFFECTGENERATOR_LAVA"], +2 : ["EFFECTGENERATOR_DRIPPING_WATER", "EFFECTGENERATOR_DRIPPING_WATER"], +3 : ["EFFECTGENERATOR_ROCK_FALL", "EFFECTGENERATOR_ROCK_FALL"], +4 : ["EFFECTGENERATOR_ENTRANCE_ICE", "EFFECTGENERATOR_ENTRANCE_ICE"], +5 : ["EFFECTGENERATOR_DRY_ICE", "EFFECTGENERATOR_DRY_ICE"] } var DATA_CREATURE = { 00 : [null, null, null], -01 : ["WIZARD", "WIZARD", TAB_CREATURE], -02 : ["BARBARIAN", "BARBARIAN", TAB_CREATURE], -03 : ["ARCHER", "ARCHER", TAB_CREATURE], -04 : ["MONK", "MONK", TAB_CREATURE], -05 : ["DWARFA", "DWARFA", TAB_CREATURE], -06 : ["KNIGHT", "KNIGHT", TAB_CREATURE], -07 : ["AVATAR", "AVATAR", TAB_CREATURE], -08 : ["TUNNELLER", "TUNNELLER", TAB_CREATURE], -09 : ["WITCH", "WITCH", TAB_CREATURE], -10 : ["GIANT", "GIANT", TAB_CREATURE], -11 : ["FAIRY", "FAIRY", TAB_CREATURE], -12 : ["THIEF", "THIEF", TAB_CREATURE], -13 : ["SAMURAI", "SAMURAI", TAB_CREATURE], -14 : ["HORNY", "HORNY", TAB_CREATURE], -15 : ["SKELETON", "SKELETON", TAB_CREATURE], -16 : ["TROLL", "TROLL", TAB_CREATURE], -17 : ["DRAGON", "DRAGON", TAB_CREATURE], -18 : ["DEMONSPAWN", "DEMONSPAWN", TAB_CREATURE], -19 : ["FLY", "FLY", TAB_CREATURE], -20 : ["DARK_MISTRESS", "DARK_MISTRESS", TAB_CREATURE], -21 : ["SORCEROR", "SORCEROR", TAB_CREATURE], -22 : ["BILE_DEMON", "BILE_DEMON", TAB_CREATURE], -23 : ["IMP", "IMP", TAB_CREATURE], -24 : ["BUG", "BUG", TAB_CREATURE], -25 : ["VAMPIRE", "VAMPIRE", TAB_CREATURE], -26 : ["SPIDER", "SPIDER", TAB_CREATURE], -27 : ["HELL_HOUND", "HELL_HOUND", TAB_CREATURE], -28 : ["GHOST", "GHOST", TAB_CREATURE], -29 : ["TENTACLE", "TENTACLE", TAB_CREATURE], -30 : ["ORC", "ORC", TAB_CREATURE], -31 : ["FLOATING_SPIRIT", "FLOATING_SPIRIT", TAB_CREATURE], +01 : ["WIZARD", "WIZARD"], +02 : ["BARBARIAN", "BARBARIAN"], +03 : ["ARCHER", "ARCHER"], +04 : ["MONK", "MONK"], +05 : ["DWARFA", "DWARFA"], +06 : ["KNIGHT", "KNIGHT"], +07 : ["AVATAR", "AVATAR"], +08 : ["TUNNELLER", "TUNNELLER"], +09 : ["WITCH", "WITCH"], +10 : ["GIANT", "GIANT"], +11 : ["FAIRY", "FAIRY"], +12 : ["THIEF", "THIEF"], +13 : ["SAMURAI", "SAMURAI"], +14 : ["HORNY", "HORNY"], +15 : ["SKELETON", "SKELETON"], +16 : ["TROLL", "TROLL"], +17 : ["DRAGON", "DRAGON"], +18 : ["DEMONSPAWN", "DEMONSPAWN"], +19 : ["FLY", "FLY"], +20 : ["DARK_MISTRESS", "DARK_MISTRESS"], +21 : ["SORCEROR", "SORCEROR"], +22 : ["BILE_DEMON", "BILE_DEMON"], +23 : ["IMP", "IMP"], +24 : ["BUG", "BUG"], +25 : ["VAMPIRE", "VAMPIRE"], +26 : ["SPIDER", "SPIDER"], +27 : ["HELL_HOUND", "HELL_HOUND"], +28 : ["GHOST", "GHOST"], +29 : ["TENTACLE", "TENTACLE"], +30 : ["ORC", "ORC"], +31 : ["FLOATING_SPIRIT", "FLOATING_SPIRIT"], } var DATA_OBJECT = { 000 : [null, null, null], -001 : ["BARREL", 930, TAB_DECORATION], -002 : ["TORCH", 962, TAB_DECORATION], #TAB_FURNITURE -003 : ["GOLD_CHEST", 934, TAB_GOLD], -004 : ["TEMPLE_STATUE", 950, TAB_DECORATION], #TAB_FURNITURE -005 : ["SOUL_CONTAINER", 948, TAB_FURNITURE], -006 : ["GOLD", 934, TAB_GOLD], -007 : ["TORCHUN", 962, TAB_DECORATION], #TAB_FURNITURE -008 : ["STATUEWO", 950, TAB_DECORATION], #Lit Statue No Flame # Partially Lit Statue -009 : ["CHICKEN_GRW", 893, TAB_MISC], -010 : ["CHICKEN_MAT", 819, TAB_MISC], -011 : ["SPELLBOOK_HOE", "SPELLBOOK_HOE", TAB_SPELL], -012 : ["SPELLBOOK_IMP", "SPELLBOOK_IMP", TAB_SPELL], -013 : ["SPELLBOOK_OBEY", "SPELLBOOK_OBEY", TAB_SPELL], -014 : ["SPELLBOOK_SLAP", "SPELLBOOK_SLAP", TAB_SPELL], -015 : ["SPELLBOOK_SOE", "SPELLBOOK_SOE", TAB_SPELL], -016 : ["SPELLBOOK_CTA", "SPELLBOOK_CTA", TAB_SPELL], -017 : ["SPELLBOOK_CAVI", "SPELLBOOK_CAVI", TAB_SPELL], -018 : ["SPELLBOOK_HEAL", "SPELLBOOK_HEAL", TAB_SPELL], -019 : ["SPELLBOOK_HLDAUD", "SPELLBOOK_HLDAUD", TAB_SPELL], -020 : ["SPELLBOOK_LIGHTN", "SPELLBOOK_LIGHTN", TAB_SPELL], -021 : ["SPELLBOOK_SPDC", "SPELLBOOK_SPDC", TAB_SPELL], -022 : ["SPELLBOOK_PROT", "SPELLBOOK_PROT", TAB_SPELL], -023 : ["SPELLBOOK_CONCL", "SPELLBOOK_CONCL", TAB_SPELL], -024 : ["CTA_ENSIGN", null, TAB_MISC], -025 : ["ROOM_FLAG", null, TAB_MISC], -026 : ["ANVIL", 789, TAB_FURNITURE], -027 : ["PRISON_BAR", 796, TAB_FURNITURE], -028 : ["CANDLESTCK", 791, TAB_DECORATION], #TAB_FURNITURE -029 : ["GRAVE_STONE", 793, TAB_FURNITURE], -030 : ["STATUE_HORNY", 905, TAB_DECORATION], #TAB_FURNITURE -031 : ["TRAINING_POST", 795, TAB_FURNITURE], -032 : ["TORTURE_SPIKE", 892, TAB_FURNITURE], -033 : ["TEMPLE_SPANGLE", 797, TAB_DECORATION], -034 : ["POTION_PURPLE", 804, TAB_DECORATION], -035 : ["POTION_BLUE", 806, TAB_DECORATION], -036 : ["POTION_GREEN", 808, TAB_DECORATION], -037 : ["POWER_HAND", 782, TAB_MISC], -038 : ["POWER_HAND_GRAB", 783, TAB_MISC], -039 : ["POWER_HAND_WHIP", 785, TAB_MISC], -040 : ["CHICKEN_STB", 894, TAB_MISC], -041 : ["CHICKEN_WOB", 895, TAB_MISC], -042 : ["CHICKEN_CRK", 896, TAB_MISC], -043 : ["GOLDL", 936, TAB_GOLD], -044 : ["SPINNING_KEY", 810, TAB_MISC], -045 : ["SPELLBOOK_DISEASE", "SPELLBOOK_DISEASE", TAB_SPELL], -046 : ["SPELLBOOK_CHKN", "SPELLBOOK_CHKN", TAB_SPELL], -047 : ["SPELLBOOK_DWAL", "SPELLBOOK_DWAL", TAB_SPELL], -048 : ["SPELLBOOK_TBMB", "SPELLBOOK_TBMB", TAB_SPELL], -049 : ["HERO_GATE", 776, TAB_ACTION], -050 : ["SPINNING_KEY2", 810, TAB_MISC], -051 : ["ARMOUR", null, TAB_MISC], -052 : ["GOLD_HOARD_1", 936, TAB_GOLD], -053 : ["GOLD_HOARD_2", 937, TAB_GOLD], -054 : ["GOLD_HOARD_3", 938, TAB_GOLD], -055 : ["GOLD_HOARD_4", 939, TAB_GOLD], -056 : ["GOLD_HOARD_5", 940, TAB_GOLD], -057 : ["LAIR_WIZRD", 124, TAB_LAIR], -058 : ["LAIR_BARBR", 124, TAB_LAIR], -059 : ["LAIR_ARCHR", 124, TAB_LAIR], -060 : ["LAIR_MONK", 124, TAB_LAIR], -061 : ["LAIR_DWRFA", 124, TAB_LAIR], -062 : ["LAIR_KNGHT", 124, TAB_LAIR], -063 : ["LAIR_AVATR", 124, TAB_LAIR], -064 : ["LAIR_TUNLR", 124, TAB_LAIR], -065 : ["LAIR_WITCH", 124, TAB_LAIR], -066 : ["LAIR_GIANT", 124, TAB_LAIR], -067 : ["LAIR_FAIRY", 124, TAB_LAIR], -068 : ["LAIR_THIEF", 124, TAB_LAIR], -069 : ["LAIR_SAMUR", 124, TAB_LAIR], -070 : ["LAIR_HORNY", 158, TAB_LAIR], -071 : ["LAIR_SKELT", 156, TAB_LAIR], -072 : ["LAIR_GOBLN", 154, TAB_LAIR], -073 : ["LAIR_DRAGN", 152, TAB_LAIR], -074 : ["LAIR_DEMSP", 150, TAB_LAIR], -075 : ["LAIR_FLY", 148, TAB_LAIR], -076 : ["LAIR_DKMIS", 146, TAB_LAIR], -077 : ["LAIR_SORCR", 144, TAB_LAIR], -078 : ["LAIR_BILDM", 142, TAB_LAIR], -079 : ["LAIR_IMP", 152, TAB_LAIR], -080 : ["LAIR_BUG", 140, TAB_LAIR], -081 : ["LAIR_VAMP", 138, TAB_LAIR], -082 : ["LAIR_SPIDR", 136, TAB_LAIR], -083 : ["LAIR_HLHND", 134, TAB_LAIR], -084 : ["LAIR_GHOST", 132, TAB_LAIR], -085 : ["LAIR_TENTC", 128, TAB_LAIR], -086 : ["SPECBOX_REVMAP", 901, TAB_SPECIAL], -087 : ["SPECBOX_RESURCT", 901, TAB_SPECIAL], -088 : ["SPECBOX_TRANSFR", 901, TAB_SPECIAL], -089 : ["SPECBOX_STEALHR", 901, TAB_SPECIAL], -090 : ["SPECBOX_MULTPLY", 901, TAB_SPECIAL], -091 : ["SPECBOX_INCLEV", 901, TAB_SPECIAL], -092 : ["SPECBOX_MKSAFE", 901, TAB_SPECIAL], -093 : ["SPECBOX_HIDNWRL", 901, TAB_SPECIAL], -094 : ["WRKBOX_BOULDER", 114, TAB_BOX], -095 : ["WRKBOX_ALARM", 114, TAB_BOX], -096 : ["WRKBOX_POISONG", 114, TAB_BOX], -097 : ["WRKBOX_LIGHTNG", 114, TAB_BOX], -098 : ["WRKBOX_WRDOFPW", 114, TAB_BOX], -099 : ["WRKBOX_LAVA", 114, TAB_BOX], -100 : ["WRKBOX_DEMOLTN", 114, TAB_BOX], -101 : ["WRKBOX_DUMMY3", 114, TAB_BOX], -102 : ["WRKBOX_DUMMY4", 114, TAB_BOX], -103 : ["WRKBOX_DUMMY5", 114, TAB_BOX], -104 : ["WRKBOX_DUMMY6", 114, TAB_BOX], -105 : ["WRKBOX_DUMMY7", 114, TAB_BOX], -106 : ["WRKBOX_WOOD", 114, TAB_BOX], -107 : ["WRKBOX_BRACE", 114, TAB_BOX], -108 : ["WRKBOX_STEEL", 114, TAB_BOX], -109 : ["WRKBOX_MAGIC", 114, TAB_BOX], -110 : ["WRKBOX_ITEM", 789, TAB_MISC], -111 : ["HEARTFLAME_RED", 798, TAB_FURNITURE], -112 : ["DISEASE", null, TAB_MISC], -113 : ["SCAVENGE_EYE", 130, TAB_FURNITURE], -114 : ["WORKSHOP_MACHINE", 98, TAB_FURNITURE], -115 : ["GUARDFLAG_RED", 102, TAB_FURNITURE], -116 : ["GUARDFLAG_BLUE", 104, TAB_FURNITURE], -117 : ["GUARDFLAG_GREEN", 106, TAB_FURNITURE], -118 : ["GUARDFLAG_YELLOW", 108, TAB_FURNITURE], -119 : ["FLAG_POST", 100, TAB_FURNITURE], -120 : ["HEARTFLAME_BLUE", 799, TAB_FURNITURE], -121 : ["HEARTFLAME_GREEN", 800, TAB_FURNITURE], -122 : ["HEARTFLAME_YELLOW", 801, TAB_FURNITURE], -123 : ["POWER_SIGHT", "POWER_SIGHT", TAB_MISC], -124 : ["POWER_LIGHTNG", null, TAB_MISC], -125 : ["TORTURER", 46, TAB_FURNITURE], -126 : ["LAIR_ORC", 126, TAB_LAIR], -127 : ["POWER_HAND_GOLD", 781, TAB_MISC], -128 : ["SPINNCOIN", null, TAB_MISC], -129 : ["STATUE2", 952, TAB_DECORATION], -130 : ["STATUE3", "GOLDEN_ARMOR", TAB_DECORATION], -131 : ["STATUE4", "KNIGHTSTATUE", TAB_DECORATION], -132 : ["STATUE5", 958, TAB_DECORATION], -133 : ["SPECBOX_CUSTOM", 901, TAB_SPECIAL], -134 : ["SPELLBOOK_ARMG", "SPELLBOOK_ARMG", TAB_SPELL], -135 : ["SPELLBOOK_POSS", "SPELLBOOK_POSS", TAB_SPELL], +001 : ["BARREL", 930, "DECORATION"], +002 : ["TORCH", 962, "FURNITURE"], +003 : ["GOLD_CHEST", 934, "VALUABLE"], +004 : ["TEMPLE_STATUE", 950, "FURNITURE"], +005 : ["SOUL_CONTAINER", 948, "FURNITURE"], +006 : ["GOLD", 934, "VALUABLE"], +007 : ["TORCHUN", 962, "FURNITURE"], +008 : ["STATUEWO", 950, "DECORATION"], +009 : ["CHICKEN_GRW", 893, "FURNITURE"], +010 : ["CHICKEN_MAT", 819, "FOOD"], +011 : ["SPELLBOOK_HOE", "SPELLBOOK_HOE", "SPELLBOOK"], +012 : ["SPELLBOOK_IMP", "SPELLBOOK_IMP", "SPELLBOOK"], +013 : ["SPELLBOOK_OBEY", "SPELLBOOK_OBEY", "SPELLBOOK"], +014 : ["SPELLBOOK_SLAP", "SPELLBOOK_SLAP", "SPELLBOOK"], +015 : ["SPELLBOOK_SOE", "SPELLBOOK_SOE", "SPELLBOOK"], +016 : ["SPELLBOOK_CTA", "SPELLBOOK_CTA", "SPELLBOOK"], +017 : ["SPELLBOOK_CAVI", "SPELLBOOK_CAVI", "SPELLBOOK"], +018 : ["SPELLBOOK_HEAL", "SPELLBOOK_HEAL", "SPELLBOOK"], +019 : ["SPELLBOOK_HLDAUD", "SPELLBOOK_HLDAUD", "SPELLBOOK"], +020 : ["SPELLBOOK_LIGHTN", "SPELLBOOK_LIGHTN", "SPELLBOOK"], +021 : ["SPELLBOOK_SPDC", "SPELLBOOK_SPDC", "SPELLBOOK"], +022 : ["SPELLBOOK_PROT", "SPELLBOOK_PROT", "SPELLBOOK"], +023 : ["SPELLBOOK_CONCL", "SPELLBOOK_CONCL", "SPELLBOOK"], +024 : ["CTA_ENSIGN", null, "POWER"], +025 : ["ROOM_FLAG", null, "DECORATION"], +026 : ["ANVIL", 789, "FURNITURE"], +027 : ["PRISON_BAR", 796, "FURNITURE"], +028 : ["CANDLESTCK", 791, "FURNITURE"], +029 : ["GRAVE_STONE", 793, "FURNITURE"], +030 : ["STATUE_HORNY", 905, "FURNITURE"], +031 : ["TRAINING_POST", 795, "FURNITURE"], +032 : ["TORTURE_SPIKE", 892, "FURNITURE"], +033 : ["TEMPLE_SPANGLE", 797, "FURNITURE"], +034 : ["POTION_PURPLE", 804, "DECORATION"], +035 : ["POTION_BLUE", 806, "DECORATION"], +036 : ["POTION_GREEN", 808, "DECORATION"], +037 : ["POWER_HAND", 782, "POWER"], +038 : ["POWER_HAND_GRAB", 783, "POWER"], +039 : ["POWER_HAND_WHIP", 785, "POWER"], +040 : ["CHICKEN_STB", 894, "FURNITURE"], +041 : ["CHICKEN_WOB", 895, "FURNITURE"], +042 : ["CHICKEN_CRK", 896, "FURNITURE"], +043 : ["GOLDL", 936, "VALUABLE"], +044 : ["SPINNING_KEY", 810, "FURNITURE"], +045 : ["SPELLBOOK_DISEASE", "SPELLBOOK_DISEASE", "SPELLBOOK"], +046 : ["SPELLBOOK_CHKN", "SPELLBOOK_CHKN", "SPELLBOOK"], +047 : ["SPELLBOOK_DWAL", "SPELLBOOK_DWAL", "SPELLBOOK"], +048 : ["SPELLBOOK_TBMB", "SPELLBOOK_TBMB", "SPELLBOOK"], +049 : ["HERO_GATE", 776, "HEROGATE"], +050 : ["SPINNING_KEY2", 810, "EFFECT"], +051 : ["ARMOUR", null, "EFFECT"], +052 : ["GOLD_HOARD_1", 936, "TREASURE_HOARD"], +053 : ["GOLD_HOARD_2", 937, "TREASURE_HOARD"], +054 : ["GOLD_HOARD_3", 938, "TREASURE_HOARD"], +055 : ["GOLD_HOARD_4", 939, "TREASURE_HOARD"], +056 : ["GOLD_HOARD_5", 940, "TREASURE_HOARD"], +057 : ["LAIR_WIZRD", 124, "LAIR_TOTEM"], +058 : ["LAIR_BARBR", 124, "LAIR_TOTEM"], +059 : ["LAIR_ARCHR", 124, "LAIR_TOTEM"], +060 : ["LAIR_MONK", 124, "LAIR_TOTEM"], +061 : ["LAIR_DWRFA", 124, "LAIR_TOTEM"], +062 : ["LAIR_KNGHT", 124, "LAIR_TOTEM"], +063 : ["LAIR_AVATR", 124, "LAIR_TOTEM"], +064 : ["LAIR_TUNLR", 124, "LAIR_TOTEM"], +065 : ["LAIR_WITCH", 124, "LAIR_TOTEM"], +066 : ["LAIR_GIANT", 124, "LAIR_TOTEM"], +067 : ["LAIR_FAIRY", 124, "LAIR_TOTEM"], +068 : ["LAIR_THIEF", 124, "LAIR_TOTEM"], +069 : ["LAIR_SAMUR", 124, "LAIR_TOTEM"], +070 : ["LAIR_HORNY", 158, "LAIR_TOTEM"], +071 : ["LAIR_SKELT", 156, "LAIR_TOTEM"], +072 : ["LAIR_GOBLN", 154, "LAIR_TOTEM"], +073 : ["LAIR_DRAGN", 152, "LAIR_TOTEM"], +074 : ["LAIR_DEMSP", 150, "LAIR_TOTEM"], +075 : ["LAIR_FLY", 148, "LAIR_TOTEM"], +076 : ["LAIR_DKMIS", 146, "LAIR_TOTEM"], +077 : ["LAIR_SORCR", 144, "LAIR_TOTEM"], +078 : ["LAIR_BILDM", 142, "LAIR_TOTEM"], +079 : ["LAIR_IMP", 152, "LAIR_TOTEM"], +080 : ["LAIR_BUG", 140, "LAIR_TOTEM"], +081 : ["LAIR_VAMP", 138, "LAIR_TOTEM"], +082 : ["LAIR_SPIDR", 136, "LAIR_TOTEM"], +083 : ["LAIR_HLHND", 134, "LAIR_TOTEM"], +084 : ["LAIR_GHOST", 132, "LAIR_TOTEM"], +085 : ["LAIR_TENTC", 128, "LAIR_TOTEM"], +086 : ["SPECBOX_REVMAP", 901, "SPECIALBOX"], +087 : ["SPECBOX_RESURCT", 901, "SPECIALBOX"], +088 : ["SPECBOX_TRANSFR", 901, "SPECIALBOX"], +089 : ["SPECBOX_STEALHR", 901, "SPECIALBOX"], +090 : ["SPECBOX_MULTPLY", 901, "SPECIALBOX"], +091 : ["SPECBOX_INCLEV", 901, "SPECIALBOX"], +092 : ["SPECBOX_MKSAFE", 901, "SPECIALBOX"], +093 : ["SPECBOX_HIDNWRL", 901, "SPECIALBOX"], +094 : ["WRKBOX_BOULDER", 114, "WORKSHOPBOX"], +095 : ["WRKBOX_ALARM", 114, "WORKSHOPBOX"], +096 : ["WRKBOX_POISONG", 114, "WORKSHOPBOX"], +097 : ["WRKBOX_LIGHTNG", 114, "WORKSHOPBOX"], +098 : ["WRKBOX_WRDOFPW", 114, "WORKSHOPBOX"], +099 : ["WRKBOX_LAVA", 114, "WORKSHOPBOX"], +100 : ["WRKBOX_DEMOLTN", 114, "WORKSHOPBOX"], +101 : ["WRKBOX_DUMMY3", 114, "WORKSHOPBOX"], +102 : ["WRKBOX_DUMMY4", 114, "WORKSHOPBOX"], +103 : ["WRKBOX_DUMMY5", 114, "WORKSHOPBOX"], +104 : ["WRKBOX_DUMMY6", 114, "WORKSHOPBOX"], +105 : ["WRKBOX_DUMMY7", 114, "WORKSHOPBOX"], +106 : ["WRKBOX_WOOD", 114, "WORKSHOPBOX"], +107 : ["WRKBOX_BRACE", 114, "WORKSHOPBOX"], +108 : ["WRKBOX_STEEL", 114, "WORKSHOPBOX"], +109 : ["WRKBOX_MAGIC", 114, "WORKSHOPBOX"], +110 : ["WRKBOX_ITEM", 789, "WORKSHOPBOX"], +111 : ["HEARTFLAME_RED", 798, "FURNITURE"], +112 : ["DISEASE", null, "EFFECT"], +113 : ["SCAVENGE_EYE", 130, "FURNITURE"], +114 : ["WORKSHOP_MACHINE", 98, "FURNITURE"], +115 : ["GUARDFLAG_RED", 102, "FURNITURE"], +116 : ["GUARDFLAG_BLUE", 104, "FURNITURE"], +117 : ["GUARDFLAG_GREEN", 106, "FURNITURE"], +118 : ["GUARDFLAG_YELLOW", 108, "FURNITURE"], +119 : ["FLAG_POST", 100, "FURNITURE"], +120 : ["HEARTFLAME_BLUE", 799, "FURNITURE"], +121 : ["HEARTFLAME_GREEN", 800, "FURNITURE"], +122 : ["HEARTFLAME_YELLOW", 801, "FURNITURE"], +123 : ["POWER_SIGHT", "POWER_SIGHT", "POWER"], +124 : ["POWER_LIGHTNG", null, "POWER"], +125 : ["TORTURER", 46, "FURNITURE"], +126 : ["LAIR_ORC", 126, "LAIR_TOTEM"], +127 : ["POWER_HAND_GOLD", 781, "POWER"], +128 : ["SPINNCOIN", null, "EFFECT"], +129 : ["STATUE2", 952, "DECORATION"], +130 : ["STATUE3", "GOLDEN_ARMOR", "DECORATION"], +131 : ["STATUE4", "KNIGHTSTATUE", "DECORATION"], +132 : ["STATUE5", 958, "DECORATION"], +133 : ["SPECBOX_CUSTOM", 901, "SPECIALBOX"], +134 : ["SPELLBOOK_ARMG", "SPELLBOOK_ARMG", "SPELLBOOK"], +135 : ["SPELLBOOK_POSS", "SPELLBOOK_POSS", "SPELLBOOK"], } diff --git a/Scenes/CfgLoader.gd b/Scenes/CfgLoader.gd index c0d73728..fb34ada7 100644 --- a/Scenes/CfgLoader.gd +++ b/Scenes/CfgLoader.gd @@ -131,7 +131,6 @@ func load_objects_data(cfg): # 10ms var newName var animID var newSprite - var newEditorTab var newGenre if Things.DATA_OBJECT.has(id) == true: @@ -143,7 +142,6 @@ func load_objects_data(cfg): # 10ms newSprite = Things.DATA_OBJECT[id][Things.SPRITE] newGenre = objSection.get("Genre") - newEditorTab = Things.GENRE_TO_TAB.get(newGenre, Things.DATA_OBJECT[id][Things.EDITOR_TAB]) if newGenre == "SPELLBOOK": Things.LIST_OF_SPELLBOOKS.append(id) if newGenre == "HEROGATE": @@ -154,9 +152,8 @@ func load_objects_data(cfg): # 10ms newSprite = get_sprite(animID, newName) newGenre = objSection.get("Genre") - newEditorTab = Things.GENRE_TO_TAB.get(newGenre, Things.TAB_DECORATION) - Things.DATA_OBJECT[id] = [newName, newSprite, newEditorTab] + Things.DATA_OBJECT[id] = [newName, newSprite, newGenre] var keeperfx_edited_slabs = [Slabs.GEMS] # This is to help with backwards compatibility for previous keeperfx versions that don't have these edits. @@ -226,7 +223,7 @@ func load_creatures_data(cfg): # 3ms if not Things.DATA_CREATURE.has(creature_id): var newName = creatures[id_number] var newSprite = get_sprite(newName, null) - Things.DATA_CREATURE[creature_id] = [newName, newSprite, Things.TAB_CREATURE] + Things.DATA_CREATURE[creature_id] = [newName, newSprite, "CREATURE"] func load_trapdoor_data(cfg): # 1ms for section in cfg: @@ -246,7 +243,7 @@ func load_trapdoor_data(cfg): # 1ms var crateName = data.get("Crate", null) if trapOrDoor == Things.TYPE.DOOR: - Things.DATA_DOOR[id] = [newName, newSprite, Things.TAB_MISC] + Things.DATA_DOOR[id] = [newName, newSprite] var getSlabKind = data.get("SlabKind", null) if getSlabKind is Array and getSlabKind.size() == 2: @@ -254,7 +251,7 @@ func load_trapdoor_data(cfg): # 1ms Slabs.doorslab_data[getSlabKind[1]] = [id, Slabs.DOOR_ORIENT_NS] elif trapOrDoor == Things.TYPE.TRAP: - Things.DATA_TRAP[id] = [newName, newSprite, Things.TAB_TRAP] + Things.DATA_TRAP[id] = [newName, newSprite] Things.LIST_OF_BOXES[crateName] = [trapOrDoor, id] func get_sprite(first_priority, second_priority): diff --git a/Scenes/CurrentMap.gd b/Scenes/CurrentMap.gd index 0fe4d7e1..5289e27b 100644 --- a/Scenes/CurrentMap.gd +++ b/Scenes/CurrentMap.gd @@ -75,6 +75,9 @@ func clear_map(): # "LOF" # Do this last in case other functions rely on the old map size oDataLof.clear_all() + Things.LIST_OF_SPELLBOOKS.clear() + Things.LIST_OF_HEROGATES.clear() + if oColumnEditor.visible == true: oColumnEditor.visible = false diff --git a/Scenes/Instances.gd b/Scenes/Instances.gd index fd8a7c11..9474d88e 100644 --- a/Scenes/Instances.gd +++ b/Scenes/Instances.gd @@ -481,7 +481,7 @@ func manage_things_on_slab(xSlab, ySlab, slabID, ownership): func set_collectibles_ownership(id, slabID, slabOwnership): if id.thingType == Things.TYPE.OBJECT: if Things.DATA_OBJECT.has(id.subtype): - var genre = Things.DATA_OBJECT[id.subtype][Things.EDITOR_TAB] + var genre = Things.DATA_OBJECT[id.subtype][Things.GENRE] if Things.collectible_belonging.has(genre): if slabID == Things.collectible_belonging[genre]: id.ownership = slabOwnership diff --git a/Scenes/OwnerSelection.gd b/Scenes/OwnerSelection.gd index 8fe6f4ca..2ce24b6e 100644 --- a/Scenes/OwnerSelection.gd +++ b/Scenes/OwnerSelection.gd @@ -122,7 +122,7 @@ func set_selection(value): func update_ownership_options(): match oSelector.mode: oSelector.MODE_SUBTILE: - var is_collectible = oSelection.paintThingType == Things.TYPE.OBJECT and oSelection.paintSubtype in Things.DATA_OBJECT and Things.DATA_OBJECT[oSelection.paintSubtype][Things.EDITOR_TAB] in Things.collectible_belonging + var is_collectible = oSelection.paintThingType == Things.TYPE.OBJECT and oSelection.paintSubtype in Things.DATA_OBJECT and Things.DATA_OBJECT[oSelection.paintSubtype][Things.GENRE] in Things.collectible_belonging oCollectibleLabel.visible = is_collectible oUseSlabOwnerCheckBox.visible = !is_collectible ownership_available = (!is_collectible and !oUseSlabOwnerCheckBox.pressed) diff --git a/Scenes/PickThingWindow.gd b/Scenes/PickThingWindow.gd index 6028fdb5..dfab0c39 100644 --- a/Scenes/PickThingWindow.gd +++ b/Scenes/PickThingWindow.gd @@ -14,19 +14,34 @@ enum { ICON_PATH } +enum { # I only used the official DK keeperfx categories as a guide rather than strict adherence. What strict adherence gets you is all the egg objects classified as Furniture, while Chicken sits alone in its own Food category. + TAB_ACTION + TAB_CREATURE + TAB_GOLD + TAB_TRAP + TAB_SPELL + TAB_SPECIAL + TAB_BOX + TAB_LAIR + TAB_EFFECTGEN + TAB_FURNITURE + TAB_DECORATION + TAB_MISC +} + onready var tabs = { - Things.TAB_CREATURE: [oThingTabs.get_node("TabFolder/Creature"),"res://edited_images/icon_creature.png"], - Things.TAB_SPELL: [oThingTabs.get_node("TabFolder/Spell"),"res://edited_images/icon_book.png"], - Things.TAB_TRAP: [oThingTabs.get_node("TabFolder/Trap"),"res://dk_images/traps_doors/anim0845/r1frame04.png"], - Things.TAB_BOX: [oThingTabs.get_node("TabFolder/Box"),"res://dk_images/traps_doors/anim0116/r1frame12.png"], - Things.TAB_SPECIAL: [oThingTabs.get_node("TabFolder/Special"),"res://dk_images/trapdoor_64/bonus_box_std.png"], - Things.TAB_GOLD: [oThingTabs.get_node("TabFolder/Gold"),"res://dk_images/symbols_64/creatr_stat_gold_std.png"], #"res://dk_images/valuables/gold_hoard1_fp/r1frame03.png" #"res://dk_images/valuables/gold_hoard2_fp/r1frame02.png" #"res://dk_images/valuables/gold_hoard4_fp/r1frame01.png" - Things.TAB_DECORATION: [oThingTabs.get_node("TabFolder/Decoration"),"res://dk_images/statues/anim0906/r1frame01.png"], - Things.TAB_ACTION: [oThingTabs.get_node("TabFolder/Action"),"res://dk_images/guisymbols_64/sym_fight.png"], #"res://Art/ActionPoint.png" - Things.TAB_EFFECTGEN: [oThingTabs.get_node("TabFolder/Effect"),"res://edited_images/icon_effect.png"], - Things.TAB_FURNITURE: [oThingTabs.get_node("TabFolder/Furniture"),"res://dk_images/furniture/workshop_machine_fp/r1frame01.png"], #"res://dk_images/furniture/training_machine_fp/r1frame09.png" - Things.TAB_LAIR: [oThingTabs.get_node("TabFolder/Lair"),"res://dk_images/room_64/lair_std.png"], - Things.TAB_MISC: [oThingTabs.get_node("TabFolder/Misc"),"res://dk_images/rpanel_64/tab_crtr_wandr_std.png"], + TAB_CREATURE: [oThingTabs.get_node("TabFolder/Creature"),"res://edited_images/icon_creature.png"], + TAB_SPELL: [oThingTabs.get_node("TabFolder/Spell"),"res://edited_images/icon_book.png"], + TAB_TRAP: [oThingTabs.get_node("TabFolder/Trap"),"res://dk_images/traps_doors/anim0845/r1frame04.png"], + TAB_BOX: [oThingTabs.get_node("TabFolder/Box"),"res://dk_images/traps_doors/anim0116/r1frame12.png"], + TAB_SPECIAL: [oThingTabs.get_node("TabFolder/Special"),"res://dk_images/trapdoor_64/bonus_box_std.png"], + TAB_GOLD: [oThingTabs.get_node("TabFolder/Gold"),"res://dk_images/symbols_64/creatr_stat_gold_std.png"], #"res://dk_images/valuables/gold_hoard1_fp/r1frame03.png" #"res://dk_images/valuables/gold_hoard2_fp/r1frame02.png" #"res://dk_images/valuables/gold_hoard4_fp/r1frame01.png" + TAB_DECORATION: [oThingTabs.get_node("TabFolder/Decoration"),"res://dk_images/statues/anim0906/r1frame01.png"], + TAB_ACTION: [oThingTabs.get_node("TabFolder/Action"),"res://dk_images/guisymbols_64/sym_fight.png"], #"res://Art/ActionPoint.png" + TAB_EFFECTGEN: [oThingTabs.get_node("TabFolder/Effect"),"res://edited_images/icon_effect.png"], + TAB_FURNITURE: [oThingTabs.get_node("TabFolder/Furniture"),"res://dk_images/furniture/workshop_machine_fp/r1frame01.png"], #"res://dk_images/furniture/training_machine_fp/r1frame09.png" + TAB_LAIR: [oThingTabs.get_node("TabFolder/Lair"),"res://dk_images/room_64/lair_std.png"], + TAB_MISC: [oThingTabs.get_node("TabFolder/Misc"),"res://dk_images/rpanel_64/tab_crtr_wandr_std.png"], } export var grid_item_size : Vector2 @@ -58,7 +73,6 @@ func _ready(): oThingTabs.initialize([]) - func initialize_thing_grid_items(): yield(get_tree(),'idle_frame') # Needed for loading animation IDs from call_deferred in Things singleton var CODETIME_START = OS.get_ticks_msec() @@ -68,37 +82,82 @@ func initialize_thing_grid_items(): match thingCategory: Things.TYPE.OBJECT: for subtype in Things.DATA_OBJECT: - var putIntoTab = Things.DATA_OBJECT[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var genre = Things.DATA_OBJECT[subtype][Things.GENRE] + var putIntoTab + match genre: + "DECORATION": putIntoTab = TAB_DECORATION + "EFFECT": putIntoTab = TAB_EFFECTGEN + "FOOD": putIntoTab = TAB_FURNITURE + "FURNITURE": putIntoTab = TAB_FURNITURE + "LAIR_TOTEM": putIntoTab = TAB_LAIR + "POWER": putIntoTab = TAB_MISC + "SPECIALBOX": putIntoTab = TAB_SPECIAL + "SPELLBOOK": putIntoTab = TAB_SPELL + "TREASURE_HOARD": putIntoTab = TAB_GOLD + "VALUABLE": putIntoTab = TAB_GOLD + "WORKSHOPBOX": putIntoTab = TAB_BOX + "HEROGATE": putIntoTab = TAB_ACTION + _: putIntoTab = TAB_DECORATION + + # Check if this subtype needs to be recategorized + if recategorization.has(subtype): + if putIntoTab == recategorization[subtype][0]: + putIntoTab = recategorization[subtype][1] + add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_OBJECT, thingCategory, subtype) Things.TYPE.CREATURE: for subtype in Things.DATA_CREATURE: - var putIntoTab = Things.DATA_CREATURE[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var putIntoTab = TAB_CREATURE add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_CREATURE, thingCategory, subtype) Things.TYPE.TRAP: for subtype in Things.DATA_TRAP: - var putIntoTab = Things.DATA_TRAP[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var putIntoTab = TAB_TRAP add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_TRAP, thingCategory, subtype) Things.TYPE.DOOR: for subtype in Things.DATA_DOOR: - var putIntoTab = Things.DATA_DOOR[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var putIntoTab = TAB_MISC add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_DOOR, thingCategory, subtype) Things.TYPE.EFFECTGEN: for subtype in Things.DATA_EFFECTGEN: - var putIntoTab = Things.DATA_EFFECTGEN[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var putIntoTab = TAB_EFFECTGEN add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_EFFECTGEN, thingCategory, subtype) Things.TYPE.EXTRA: for subtype in Things.DATA_EXTRA: - var putIntoTab = Things.DATA_EXTRA[subtype][Things.EDITOR_TAB] - if putIntoTab != null: + if subtype != 0: + var putIntoTab + match subtype: + 1: putIntoTab = TAB_ACTION # Action Point + 2: putIntoTab = TAB_EFFECTGEN # Light add_to_category(tabs[putIntoTab][GRIDCON_PATH], Things.DATA_EXTRA, thingCategory, subtype) print('Initialized Things window: ' + str(OS.get_ticks_msec() - CODETIME_START) + 'ms') +# Hardcoded recategorization for tabs +var recategorization = { +002 : [TAB_FURNITURE, TAB_DECORATION], #TORCH +004 : [TAB_FURNITURE, TAB_DECORATION], #TEMPLE_STATUE +007 : [TAB_FURNITURE, TAB_DECORATION], #TORCHUN +009 : [TAB_FURNITURE, TAB_MISC], #CHICKEN_GRW +010 : [TAB_FURNITURE, TAB_MISC], #CHICKEN_MAT +025 : [TAB_DECORATION, TAB_MISC], #ROOM_FLAG +028 : [TAB_FURNITURE, TAB_DECORATION], #CANDLESTCK +030 : [TAB_FURNITURE, TAB_DECORATION], #STATUE_HORNY +033 : [TAB_FURNITURE, TAB_DECORATION], #TEMPLE_SPANGLE +040 : [TAB_FURNITURE, TAB_MISC], #CHICKEN_STB +041 : [TAB_FURNITURE, TAB_MISC], #CHICKEN_WOB +042 : [TAB_FURNITURE, TAB_MISC], #CHICKEN_CRK +044 : [TAB_FURNITURE, TAB_MISC], #SPINNING_KEY +050 : [TAB_EFFECTGEN, TAB_MISC], #SPINNING_KEY2 +051 : [TAB_EFFECTGEN, TAB_MISC], #ARMOUR +110 : [TAB_BOX, TAB_MISC], #WRKBOX_ITEM +112 : [TAB_EFFECTGEN, TAB_MISC], #DISEASE +128 : [TAB_EFFECTGEN, TAB_MISC], #SPINNCOIN +} func add_to_category(tabNode, thingsData, thingtype, subtype): var getName = Things.fetch_name(thingtype, subtype) @@ -123,10 +182,6 @@ func add_to_category(tabNode, thingsData, thingtype, subtype): else: id.img_normal = preload('res://Art/ThingDarkened.png') - - - - add_item_to_grid(gridcontainer, id, getName) # Needed for when adding custom objects diff --git a/Scenes/ThingInstance.gd b/Scenes/ThingInstance.gd index b48ec7f9..5db56fe0 100644 --- a/Scenes/ThingInstance.gd +++ b/Scenes/ThingInstance.gd @@ -251,7 +251,7 @@ func set_grow_direction(): # Return if we want to grow from center if thingType == Things.TYPE.OBJECT: if Things.DATA_OBJECT.has(subtype): - if Things.DATA_OBJECT[subtype][Things.EDITOR_TAB] == Things.TAB_SPELL: + if Things.DATA_OBJECT[subtype][Things.GENRE] == "SPELLBOOK": return elif thingType == Things.TYPE.TRAP: return