From dcaa953a01b3bd2335f3de29f8680a80afadb313 Mon Sep 17 00:00:00 2001 From: rainlizard <15337628+rainlizard@users.noreply.github.com> Date: Thu, 30 Jan 2025 21:01:36 +1100 Subject: [PATCH] spellbook refactor --- Autoload/Graphics.gd | 216 +++++++++++++++++++++---------------------- Autoload/Version.gd | 2 +- Scenes/CfgLoader.gd | 29 +----- 3 files changed, 109 insertions(+), 138 deletions(-) diff --git a/Autoload/Graphics.gd b/Autoload/Graphics.gd index e1dd16b7..0abf29c7 100644 --- a/Autoload/Graphics.gd +++ b/Autoload/Graphics.gd @@ -13,97 +13,30 @@ func load_extra_images_from_harddrive(): print("Failed to load texture: ", image_path) print('Loaded extra images from HDD: ' + str(OS.get_ticks_msec() - CODETIME_START) + 'ms') - -#func load_custom_images_into_array(DATA_ARRAY, thingtypeImageFolder): -# print("Loading /thing-images/" + thingtypeImageFolder + " directory ...") -# var arrayOfFilenames = get_png_files_in_dir(Settings.unearthdata.plus_file("thing-images").plus_file(thingtypeImageFolder)) -# for i in arrayOfFilenames: -# var subtypeID = int(i.get_file().get_basename()) -# var img = Image.new() -# var err = img.load(i) -# if err == OK: -# var tex = ImageTexture.new() -# tex.create_from_image(img) -# if DATA_ARRAY.has(subtypeID): -# DATA_ARRAY[subtypeID][TEXTURE] = tex - - -#func look_for_images_to_load(DATA_ARRAY, objectID, thingCfgName): -# if custom_images_list.empty() == true: -# custom_images_list = get_png_filenames_in_dir(Settings.unearthdata.plus_file("custom-object-images")) -# -# var dir = Settings.unearthdata.plus_file("custom-object-images") -# -# var uppercaseImageFilename = thingCfgName+".PNG".to_upper() -# var uppercasePortraitFilename = thingCfgName+"_PORTRAIT.PNG".to_upper() -# -# var realImageFilename = "" -# var realPortraitFilename = "" -# -# if custom_images_list.has(uppercaseImageFilename): -# realImageFilename = custom_images_list[uppercaseImageFilename] -# -# if custom_images_list.has(uppercasePortraitFilename): -# realPortraitFilename = custom_images_list[uppercasePortraitFilename] -# -# if realImageFilename != "": -# var img = Image.new() -# var err = img.load(dir.plus_file(realImageFilename)) -# if err == OK: -# var tex = ImageTexture.new() -# tex.create_from_image(img, Texture.FLAG_MIPMAPS+Texture.FLAG_ANISOTROPIC_FILTER) -# #DATA_ARRAY[objectID][Things.TEXTURE] = tex -# -# if realPortraitFilename != "": -# var img = Image.new() -# var err = img.load(dir.plus_file(realPortraitFilename)) -# if err == OK: -# var tex = ImageTexture.new() -# tex.create_from_image(img, Texture.FLAG_MIPMAPS+Texture.FLAG_ANISOTROPIC_FILTER) -# #DATA_ARRAY[objectID][Things.PORTRAIT] = tex -# -#func get_png_filenames_in_dir(path): -# var dictionary = {} -# var dir = Directory.new() -# if dir.open(path) == OK: -# dir.list_dir_begin() -# var file_name = dir.get_next() -# while file_name != "": -# if dir.current_is_dir(): -# pass -# else: -# if file_name.get_extension().to_upper() == "PNG": -# dictionary[file_name.to_upper().replace(" ", "_")] = file_name -# file_name = dir.get_next() -# else: -# print("An error occurred when trying to access the path.") -# return dictionary -# -#func get_png_files_in_dir(path): -# var array = [] -# var dir = Directory.new() -# if dir.open(path) == OK: -# dir.list_dir_begin() -# var file_name = dir.get_next() -# while file_name != "": -# if dir.current_is_dir(): -# pass -# else: -# if file_name.get_extension().to_upper() == "PNG": -# var fileNumber = file_name.get_file().get_basename() -# if Utils.string_has_letters(fileNumber) == false: -# array.append(path.plus_file(file_name)) -# file_name = dir.get_next() -# else: -# print("An error occurred when trying to access the path.") -# return array - - - - # The keys can be integers or strings (as read from objects.cfg's AnimationID field) # When they're a String, they can be either read the 'Name' field or the 'AnimationID' field, whichever one is prioritized var sprite_id = { +# Spellbook objects +"SPELLBOOK_ARMG" : preload("res://dk_images/keepower_64/armagedn_std.png"), +"SPELLBOOK_POSS" : preload("res://dk_images/keepower_64/possess_std.png"), +"SPELLBOOK_HOE" : preload("res://edited_images/icon_handofevil.png"), +"SPELLBOOK_IMP" : preload("res://dk_images/keepower_64/imp_std.png"), +"SPELLBOOK_OBEY" : preload("res://edited_images/mustobey.png"), +"SPELLBOOK_SLAP" : preload("res://edited_images/icon_slap.png"), +"SPELLBOOK_SOE" : preload("res://dk_images/keepower_64/sight_std.png"), +"SPELLBOOK_CTA" : preload("res://dk_images/keepower_64/cta_std.png"), +"SPELLBOOK_CAVI" : preload("res://dk_images/keepower_64/cavein_std.png"), +"SPELLBOOK_HEAL" : preload("res://dk_images/keepower_64/heal_std.png"), +"SPELLBOOK_HLDAUD" : preload("res://dk_images/keepower_64/holdaud_std.png"), +"SPELLBOOK_LIGHTN" : preload("res://dk_images/keepower_64/lightng_std.png"), +"SPELLBOOK_SPDC" : preload("res://dk_images/keepower_64/speed_std.png"), +"SPELLBOOK_PROT" : preload("res://dk_images/keepower_64/armor_std.png"), +"SPELLBOOK_CONCL" : preload("res://dk_images/keepower_64/conceal_std.png"), +"SPELLBOOK_DISEASE" : preload("res://dk_images/keepower_64/disease_std.png"), +"SPELLBOOK_CHKN" : preload("res://dk_images/keepower_64/chicken_std.png"), +"SPELLBOOK_DWAL" : preload("res://dk_images/keepower_64/dstwall_std.png"), +"SPELLBOOK_TBMB" : preload("res://edited_images/timebomb.png"), +# Objects 046 : preload("res://dk_images/furniture/torture_machine_tp/r1frame01.png"), 098 : preload("res://dk_images/furniture/workshop_machine_tp/AnimWorkshopMachine.tres"), 100 : preload("res://dk_images/furniture/flagpole_empty_tp/r1frame01.png"), @@ -172,7 +105,6 @@ var sprite_id = { 952 : preload("res://dk_images/statues/anim0954/r1frame01.png"), 958 : preload("res://dk_images/statues/anim0960/r1frame01.png"), 962 : preload("res://dk_images/other/anim0963/r1frame01.png"), - # Extras "ACTIONPOINT" : preload("res://Art/ActionPoint.png"), "LIGHT" : preload("res://edited_images/GUIEDIT-1/PIC26.png"), @@ -197,26 +129,6 @@ var sprite_id = { "WORD_OF_POWER" : preload("res://dk_images/trapdoor_64/trap_wop_std.png"), "LAVA" : preload("res://dk_images/trapdoor_64/trap_lava_std.png"), "TNT" : preload("res://extra_images/tnt.png"), -# Spellbooks -"SPELLBOOK_ARMG" : preload("res://dk_images/keepower_64/armagedn_std.png"), -"SPELLBOOK_POSS" : preload("res://dk_images/keepower_64/possess_std.png"), -"SPELLBOOK_HOE" : preload("res://edited_images/icon_handofevil.png"), -"SPELLBOOK_IMP" : preload("res://dk_images/keepower_64/imp_std.png"), -"SPELLBOOK_OBEY" : preload("res://edited_images/mustobey.png"), -"SPELLBOOK_SLAP" : preload("res://edited_images/icon_slap.png"), -"SPELLBOOK_SOE" : preload("res://dk_images/keepower_64/sight_std.png"), -"SPELLBOOK_CTA" : preload("res://dk_images/keepower_64/cta_std.png"), -"SPELLBOOK_CAVI" : preload("res://dk_images/keepower_64/cavein_std.png"), -"SPELLBOOK_HEAL" : preload("res://dk_images/keepower_64/heal_std.png"), -"SPELLBOOK_HLDAUD" : preload("res://dk_images/keepower_64/holdaud_std.png"), -"SPELLBOOK_LIGHTN" : preload("res://dk_images/keepower_64/lightng_std.png"), -"SPELLBOOK_SPDC" : preload("res://dk_images/keepower_64/speed_std.png"), -"SPELLBOOK_PROT" : preload("res://dk_images/keepower_64/armor_std.png"), -"SPELLBOOK_CONCL" : preload("res://dk_images/keepower_64/conceal_std.png"), -"SPELLBOOK_DISEASE" : preload("res://dk_images/keepower_64/disease_std.png"), -"SPELLBOOK_CHKN" : preload("res://dk_images/keepower_64/chicken_std.png"), -"SPELLBOOK_DWAL" : preload("res://dk_images/keepower_64/dstwall_std.png"), -"SPELLBOOK_TBMB" : preload("res://edited_images/timebomb.png"), # Decorations/Furniture "BANNER" : preload("res://extra_images/banner.png"), "FERN" : preload("res://extra_images/fern.png"), @@ -319,3 +231,89 @@ var sprite_id = { "TIME_MAGE" : preload("res://extra_images/time_mage.png"), "TIME_MAGE_PORTRAIT" : preload("res://extra_images/time_mage_portrait.png"), } + + +#func load_custom_images_into_array(DATA_ARRAY, thingtypeImageFolder): +# print("Loading /thing-images/" + thingtypeImageFolder + " directory ...") +# var arrayOfFilenames = get_png_files_in_dir(Settings.unearthdata.plus_file("thing-images").plus_file(thingtypeImageFolder)) +# for i in arrayOfFilenames: +# var subtypeID = int(i.get_file().get_basename()) +# var img = Image.new() +# var err = img.load(i) +# if err == OK: +# var tex = ImageTexture.new() +# tex.create_from_image(img) +# if DATA_ARRAY.has(subtypeID): +# DATA_ARRAY[subtypeID][TEXTURE] = tex + + +#func look_for_images_to_load(DATA_ARRAY, objectID, thingCfgName): +# if custom_images_list.empty() == true: +# custom_images_list = get_png_filenames_in_dir(Settings.unearthdata.plus_file("custom-object-images")) +# +# var dir = Settings.unearthdata.plus_file("custom-object-images") +# +# var uppercaseImageFilename = thingCfgName+".PNG".to_upper() +# var uppercasePortraitFilename = thingCfgName+"_PORTRAIT.PNG".to_upper() +# +# var realImageFilename = "" +# var realPortraitFilename = "" +# +# if custom_images_list.has(uppercaseImageFilename): +# realImageFilename = custom_images_list[uppercaseImageFilename] +# +# if custom_images_list.has(uppercasePortraitFilename): +# realPortraitFilename = custom_images_list[uppercasePortraitFilename] +# +# if realImageFilename != "": +# var img = Image.new() +# var err = img.load(dir.plus_file(realImageFilename)) +# if err == OK: +# var tex = ImageTexture.new() +# tex.create_from_image(img, Texture.FLAG_MIPMAPS+Texture.FLAG_ANISOTROPIC_FILTER) +# #DATA_ARRAY[objectID][Things.TEXTURE] = tex +# +# if realPortraitFilename != "": +# var img = Image.new() +# var err = img.load(dir.plus_file(realPortraitFilename)) +# if err == OK: +# var tex = ImageTexture.new() +# tex.create_from_image(img, Texture.FLAG_MIPMAPS+Texture.FLAG_ANISOTROPIC_FILTER) +# #DATA_ARRAY[objectID][Things.PORTRAIT] = tex +# +#func get_png_filenames_in_dir(path): +# var dictionary = {} +# var dir = Directory.new() +# if dir.open(path) == OK: +# dir.list_dir_begin() +# var file_name = dir.get_next() +# while file_name != "": +# if dir.current_is_dir(): +# pass +# else: +# if file_name.get_extension().to_upper() == "PNG": +# dictionary[file_name.to_upper().replace(" ", "_")] = file_name +# file_name = dir.get_next() +# else: +# print("An error occurred when trying to access the path.") +# return dictionary +# +#func get_png_files_in_dir(path): +# var array = [] +# var dir = Directory.new() +# if dir.open(path) == OK: +# dir.list_dir_begin() +# var file_name = dir.get_next() +# while file_name != "": +# if dir.current_is_dir(): +# pass +# else: +# if file_name.get_extension().to_upper() == "PNG": +# var fileNumber = file_name.get_file().get_basename() +# if Utils.string_has_letters(fileNumber) == false: +# array.append(path.plus_file(file_name)) +# file_name = dir.get_next() +# else: +# print("An error occurred when trying to access the path.") +# return array + diff --git a/Autoload/Version.gd b/Autoload/Version.gd index e838674b..accf222e 100644 --- a/Autoload/Version.gd +++ b/Autoload/Version.gd @@ -1,6 +1,6 @@ extends Node -var major_minor = "0.52" +var major_minor = "0.51" var patch = "0000" var full = "" var unearth_map_format_version:float = 1.06 diff --git a/Scenes/CfgLoader.gd b/Scenes/CfgLoader.gd index 6143b16e..8aef7b92 100644 --- a/Scenes/CfgLoader.gd +++ b/Scenes/CfgLoader.gd @@ -97,33 +97,6 @@ func start(mapPath): oCustomSlabSystem.load_unearth_custom_slabs_file() -var LIST_OF_OBJECTS_WITH_HARDCODED_SPRITES = [ -"SPELLBOOK_HOE", -"SPELLBOOK_IMP", -"SPELLBOOK_OBEY", -"SPELLBOOK_SLAP", -"SPELLBOOK_SOE", -"SPELLBOOK_CTA", -"SPELLBOOK_CAVI", -"SPELLBOOK_HEAL", -"SPELLBOOK_HLDAUD", -"SPELLBOOK_LIGHTN", -"SPELLBOOK_SPDC", -"SPELLBOOK_PROT", -"SPELLBOOK_CONCL", -"SPELLBOOK_DISEASE", -"SPELLBOOK_CHKN", -"SPELLBOOK_DWAL", -"SPELLBOOK_TBMB", -"SPELLBOOK_ARMG", -"SPELLBOOK_POSS", -"SPELLBOOK_RBND", -"SPELLBOOK_FRZ", -"SPELLBOOK_SLOW", -"SPELLBOOK_FLGT", -"SPELLBOOK_VSN", -] - func load_objects_data(cfg): # 10ms for section in cfg: if section.begins_with("object"): @@ -140,7 +113,7 @@ func load_objects_data(cfg): # 10ms animID = objSection.get("AnimationID") newSprite = get_sprite(animID, newName) - if newSprite == null or newName in LIST_OF_OBJECTS_WITH_HARDCODED_SPRITES: + if newSprite == null or int(animID) == 777: # 777 is the AnimationID for all spellbooks in objects.cfg, which unearth uses separate sprites for newSprite = Things.DATA_OBJECT[id][Things.SPRITE] newGenre = objSection.get("Genre")