Now when a module is toggled on in the data manager, it will add entries to to folder tab, based on what folders are available in it.

This commit is contained in:
Relintai 2022-01-26 20:38:09 +01:00
parent 33ea23e3c3
commit d8f93baeba
2 changed files with 87 additions and 51 deletions

View File

@ -5,71 +5,71 @@
[resource] [resource]
script = ExtResource( 1 ) script = ExtResource( 1 )
folder_count = 24 folder_count = 24
folders/0/folder = "res://data/entity_resources/" folders/0/folder = "entity_resources"
folders/0/header = "Entities" folders/0/header = "Entities"
folders/0/name = "Entity Resources" folders/0/name = "Entity Resources"
folders/0/type = "EntityResourceData" folders/0/type = "EntityResourceData"
folders/1/folder = "res://data/entity_skills/" folders/1/folder = "entity_skills"
folders/1/header = "" folders/1/header = ""
folders/1/name = "Skills" folders/1/name = "Skills"
folders/1/type = "EntitySkillData" folders/1/type = "EntitySkillData"
folders/2/folder = "res://data/entities/" folders/2/folder = "entities"
folders/2/header = "" folders/2/header = ""
folders/2/name = "Entities" folders/2/name = "Entities"
folders/2/type = "EntityData" folders/2/type = "EntityData"
folders/3/folder = "res://data/player_character_data/" folders/3/folder = "player_character_data"
folders/3/header = "" folders/3/header = ""
folders/3/name = "Player Characters" folders/3/name = "Player Characters"
folders/3/type = "EntityData" folders/3/type = "EntityData"
folders/4/folder = "res://data/entity_classes/" folders/4/folder = "entity_classes"
folders/4/header = "" folders/4/header = ""
folders/4/name = "Classes" folders/4/name = "Classes"
folders/4/type = "EntityClassData" folders/4/type = "EntityClassData"
folders/5/folder = "res://data/ai/" folders/5/folder = "ai"
folders/5/header = "" folders/5/header = ""
folders/5/name = "AI" folders/5/name = "AI"
folders/5/type = "AIAction" folders/5/type = "AIAction"
folders/6/folder = "res://data/character_models/" folders/6/folder = "character_models"
folders/6/header = "Models" folders/6/header = "Models"
folders/6/name = "Models" folders/6/name = "Models"
folders/6/type = "MeshDataResource" folders/6/type = "MeshDataResource"
folders/7/folder = "res://data/character_textures/" folders/7/folder = "character_textures"
folders/7/header = "" folders/7/header = ""
folders/7/name = "Textures" folders/7/name = "Textures"
folders/7/type = "Texture" folders/7/type = "Texture"
folders/8/folder = "res://data/spells/" folders/8/folder = "spells"
folders/8/header = "Spells" folders/8/header = "Spells"
folders/8/name = "Spells" folders/8/name = "Spells"
folders/8/type = "Spell" folders/8/type = "Spell"
folders/9/folder = "res://data/aura_groups/" folders/9/folder = "aura_groups"
folders/9/header = "" folders/9/header = ""
folders/9/name = "Aura Groups" folders/9/name = "Aura Groups"
folders/9/type = "AuraGroup" folders/9/type = "AuraGroup"
folders/10/folder = "res://data/character_specs/" folders/10/folder = "character_specs"
folders/10/header = "" folders/10/header = ""
folders/10/name = "Specs" folders/10/name = "Specs"
folders/10/type = "CharacterSpec" folders/10/type = "CharacterSpec"
folders/11/folder = "res://data/effect_data/" folders/11/folder = "effect_data"
folders/11/header = "" folders/11/header = ""
folders/11/name = "Effect Datas" folders/11/name = "Effect Datas"
folders/11/type = "SpellEffectVisual" folders/11/type = "SpellEffectVisual"
folders/12/folder = "res://data/world_spells/" folders/12/folder = "world_spells"
folders/12/header = "" folders/12/header = ""
folders/12/name = "World Spells" folders/12/name = "World Spells"
folders/12/type = "WorldSpellData" folders/12/type = "WorldSpellData"
folders/13/folder = "res://data/item_templates/" folders/13/folder = "item_templates"
folders/13/header = "Items" folders/13/header = "Items"
folders/13/name = "Items" folders/13/name = "Items"
folders/13/type = "ItemTemplate" folders/13/type = "ItemTemplate"
folders/14/folder = "res://data/crafting/" folders/14/folder = "crafting"
folders/14/header = "" folders/14/header = ""
folders/14/name = "Craft Recipes" folders/14/name = "Craft Recipes"
folders/14/type = "CraftRecipe" folders/14/type = "CraftRecipe"
folders/15/folder = "\"res://data/item_visuals/" folders/15/folder = "item_visuals"
folders/15/header = "" folders/15/header = ""
folders/15/name = "Item Visuals" folders/15/name = "Item Visuals"
folders/15/type = "ItemVisual" folders/15/type = "ItemVisual"
folders/16/folder = "res://data/planets/" folders/16/folder = "planets"
folders/16/header = "World" folders/16/header = "World"
folders/16/name = "World" folders/16/name = "World"
folders/16/type = "World" folders/16/type = "World"
@ -85,19 +85,19 @@ folders/19/folder = "sub_zones"
folders/19/header = "" folders/19/header = ""
folders/19/name = "SubZones" folders/19/name = "SubZones"
folders/19/type = "SubZone" folders/19/type = "SubZone"
folders/20/folder = "res://data/dungeons/" folders/20/folder = "dungeons"
folders/20/header = "" folders/20/header = ""
folders/20/name = "Dungeons" folders/20/name = "Dungeons"
folders/20/type = "DungeonData" folders/20/type = "DungeonData"
folders/21/folder = "res://data/dungeon_rooms/" folders/21/folder = "dungeon_rooms"
folders/21/header = "" folders/21/header = ""
folders/21/name = "Dungeon Rooms" folders/21/name = "Dungeon Rooms"
folders/21/type = "DungeonRoomData" folders/21/type = "DungeonRoomData"
folders/22/folder = "res://data/basic_models/" folders/22/folder = "basic_models"
folders/22/header = "" folders/22/header = ""
folders/22/name = "Basic Models" folders/22/name = "Basic Models"
folders/22/type = "MeshDataResource" folders/22/type = "MeshDataResource"
folders/23/folder = "res://data/prop_models/" folders/23/folder = "prop_models"
folders/23/header = "" folders/23/header = ""
folders/23/name = "Prop Models" folders/23/name = "Prop Models"
folders/23/type = "PackedScene" folders/23/type = "PackedScene"

View File

@ -18,6 +18,7 @@ var _module_entry_container : Node
var _folder_entry_container : Node var _folder_entry_container : Node
var _modules : Array = Array() var _modules : Array = Array()
var _active_modules : Array = Array()
var _settings : DataManagerAddonSettings = null var _settings : DataManagerAddonSettings = null
var _initialized : bool = false var _initialized : bool = false
@ -45,16 +46,18 @@ func load_data():
_resource_scene.connect("inspect_data", self, "inspect_data") _resource_scene.connect("inspect_data", self, "inspect_data")
_module_entry_container = get_node(module_entry_container_path) _module_entry_container = get_node(module_entry_container_path)
_folder_entry_container = get_node(folder_entry_container_path)
generate_module_entry_list()
func generate_module_entry_list() -> void:
for ch in _folder_entry_container.get_children():
ch.queue_free()
load_modules() load_modules()
for m in _modules: for m in _modules:
var label_str : String = m.resource_name var label_str : String = get_module_label_text(m)
if label_str == "":
label_str = m.resource_path
label_str = label_str.replace("res://", "")
label_str = label_str.replace("/game_module.tres", "")
label_str = label_str.replace("game_module.tres", "")
var b : Button = Button.new() var b : Button = Button.new()
b.toggle_mode = true b.toggle_mode = true
@ -62,38 +65,60 @@ func load_data():
b.set_h_size_flags(SIZE_EXPAND_FILL) b.set_h_size_flags(SIZE_EXPAND_FILL)
b.connect("toggled", self, "on_module_entry_button_toggled", [ m ]) b.connect("toggled", self, "on_module_entry_button_toggled", [ m ])
_module_entry_container.add_child(b) _module_entry_container.add_child(b)
_folder_entry_container = get_node(folder_entry_container_path) func generate_folder_entry_list() -> void:
for ch in _folder_entry_container.get_children(): for ch in _folder_entry_container.get_children():
ch.queue_free() ch.queue_free()
var dir : Directory = Directory.new()
var index = 0 for module in _active_modules:
for f in _settings.folders: var label_str : String = "= " + get_module_label_text(module) + " ="
if f.header != "": var mlabel : Label = Label.new()
var h : Label = Label.new() mlabel.text = label_str
mlabel.align = HALIGN_CENTER
mlabel.valign = VALIGN_CENTER
_folder_entry_container.add_child(mlabel)
var module_dir_base : String = module.resource_path.get_base_dir()
var index = 0
for f in _settings.folders:
if !dir.dir_exists(module_dir_base + "/" + f.folder):
continue
_folder_entry_container.add_child(h) if f.header != "":
h.owner = _folder_entry_container var h : Label = Label.new()
_folder_entry_container.add_child(h)
h.text = f.header
h.text = f.header var fe : Node = folder_entry_button_scene.instance()
var fe : Node = folder_entry_button_scene.instance() _folder_entry_container.add_child(fe)
_folder_entry_container.add_child(fe) fe.text = f.name
fe.owner = _folder_entry_container fe.tab = index
fe.text = f.name fe.set_main_panel(self)
fe.tab = index
index += 1
fe.set_main_panel(self)
index += 1
set_tab(0) set_tab(0)
func on_module_entry_button_toggled(on : bool, module) -> void: func on_module_entry_button_toggled(on : bool, module) -> void:
pass if on:
for m in _active_modules:
if m == module:
return
_active_modules.push_back(module)
generate_folder_entry_list()
else:
for i in range(_active_modules.size()):
if _active_modules[i] == module:
_active_modules.remove(i)
generate_folder_entry_list()
return
func load_modules() -> void: func load_modules() -> void:
_modules.clear() _modules.clear()
@ -152,3 +177,14 @@ func inspect_data(var data : Resource) -> void:
func set_plugin(plugin : EditorPlugin) -> void: func set_plugin(plugin : EditorPlugin) -> void:
_plugin = plugin _plugin = plugin
func get_module_label_text(module) -> String:
var label_str : String = module.resource_name
if label_str == "":
label_str = module.resource_path
label_str = label_str.replace("res://", "")
label_str = label_str.replace("/game_module.tres", "")
label_str = label_str.replace("game_module.tres", "")
return label_str