entity-spell-system-addons/addons/ess_data/panels/MainPanel.gd

298 lines
5.8 KiB
GDScript

tool
extends Control
signal inspect_data
export(PackedScene) var resource_scene : PackedScene
export(PackedScene) var folder_entry_button_scene : PackedScene
export(String) var base_folder : String = "res://data/"
export(NodePath) var main_container : NodePath
export(NodePath) var folder_entry_container_path : NodePath
var _main_container : Node
var _resource_scene : Node
var _folder_entry_container : Node
var _folders : Array = [
{
"folder": base_folder + "entity_resources/",
"type": "EntityResourceData",
"name": "Resources",
"header": "Entities"
},
{
"folder": base_folder + "entity_skills/",
"type": "EntitySkillData",
"name": "Skills"
},
{
"folder": base_folder + "entities/",
"type": "EntityData",
"name": "Entities"
},
{
"folder": base_folder + "player_character_data/",
"type": "EntityData",
"name": "Player Characters"
},
{
"folder": base_folder + "entity_classes/",
"type": "EntityClassData",
"name": "Classes"
},
{
"folder": base_folder + "ai/",
"type": "AIAction",
"name": "AI"
},
{
"folder": base_folder + "character_models/",
"type": "MeshDataResource",
"name": "Models",
"header": "Models"
},
{
"folder": base_folder + "character_textures/",
"type": "Texture",
"name": "Textures"
},
{
"folder": base_folder + "spells/",
"type": "Spell",
"name": "Spells",
"header": "Spells"
},
{
"folder": base_folder + "auras/",
"type": "Aura",
"name": "Auras"
},
{
"folder": base_folder + "aura_groups/",
"type": "AuraGroup",
"name": "Aura Groups"
},
{
"folder": base_folder + "character_specs/",
"type": "CharacterSpec",
"name": "Specs"
},
{
"folder": base_folder + "effect_data/",
"type": "SpellEffectVisual",
"name": "Effect Datas"
},
{
"folder": base_folder + "world_spells/",
"type": "WorldSpellData",
"name": "World Spells"
},
{
"folder": base_folder + "item_templates/",
"type": "ItemTemplate",
"name": "Items",
"header": "Items"
},
{
"folder": base_folder + "crafting/",
"type": "CraftRecipe",
"name": "Craft Recipes"
},
{
"folder": base_folder + "item_visuals/",
"type": "ItemVisual",
"name": "Item Visuals"
},
{
"folder": base_folder + "planets/",
"type": "PropDataEntry",
"name": "Planets",
"header": "World"
},
{
"folder": base_folder + "biomes/",
"type": "BiomeData",
"name": "Biomes"
},
{
"folder": base_folder + "dungeons/",
"type": "DungeonData",
"name": "Dungeons"
},
{
"folder": base_folder + "dungeon_rooms/",
"type": "DungeonRoomData",
"name": "Dungeon Rooms"
},
{
"folder": base_folder + "basic_models/",
"type": "MeshDataResource",
"name": "Basic Models"
},
{
"folder": base_folder + "model_blocks/",
"type": "PropData",
"name": "Model Blocks"
},
{
"folder": base_folder + "ships/",
"type": "PropData",
"name": "Ships",
"header": "Ships"
},
{
"folder": base_folder + "ship_parts/",
"type": "PropData",
"name": "Ship Parts"
},
{
"folder": base_folder + "props/",
"type": "PropData",
"name": "Props",
"header": "Props"
},
{
"folder": base_folder + "prop_models/",
"type": "PackedScene",
"name": "Prop Models"
},
{
"folder": base_folder + "spell_effects/enchanter/",
"type": "Spatial",
"name": "Enchanter",
"header": "Spell Effects"
},
{
"folder": base_folder + "spell_effects/nature/",
"type": "Spatial",
"name": "Nature"
},
{
"folder": base_folder + "spell_effects/textures/",
"type": "Texture",
"name": "Textures"
},
{
"folder": base_folder + "icons/",
"type": "Texture",
"name": "Icons",
"header": "Icons"
},
{
"folder": base_folder + "icons/items/",
"type": "Texture",
"name": "Items"
},
{
"folder": base_folder + "icons/naturalist/",
"type": "Texture",
"name": "Naturalist"
},
{
"folder": base_folder + "environments/",
"type": "Environment",
"name": "Environments",
"header": "Materials"
},
{
"folder": base_folder + "materials/",
"type": "Material",
"name": "Materials",
},
{
"folder": base_folder + "models/",
"type": "CharacterSkeleton",
"name": "Character Models"
},
{
"folder": base_folder + "fonts/",
"type": "Font",
"name": "Fonts"
},
{
"folder": base_folder + "shaders/",
"type": "Shader",
"name": "Shaders"
},
{
"folder": base_folder + "voxel_libraries/",
"type": "VoxelmanLibrary",
"name": "Voxel Libraries",
"header": "Voxel"
},
{
"folder": base_folder + "voxel_surfaces/",
"type": "VoxelSurface",
"name": "Voxel Surfaces"
},
{
"folder": base_folder + "voxel_textures/",
"type": "Texture",
"name": "Voxel Textures"
},
{
"folder": base_folder + "xp/",
"type": "XPData",
"name": "XP",
"header": "XP"
},
{
"folder": base_folder + "cursors/",
"type": "Texture",
"name": "Cursors",
"header": "Cursors"
},
]
func _ready():
_main_container = get_node(main_container)
_resource_scene = resource_scene.instance()
_main_container.add_child(_resource_scene)
_resource_scene.owner = _main_container
_resource_scene.connect("inspect_data", self, "inspect_data")
_folder_entry_container = get_node(folder_entry_container_path)
for ch in _folder_entry_container.get_children():
ch.queue_free()
var index = 0
for f in _folders:
if f.has("header"):
var h : Label = Label.new()
_folder_entry_container.add_child(h)
h.owner = _folder_entry_container
h.text = f["header"]
var fe : Node = folder_entry_button_scene.instance()
_folder_entry_container.add_child(fe)
fe.owner = _folder_entry_container
fe.text = f["name"]
fe.tab = index
fe.set_main_panel(self)
index += 1
set_tab(0)
# set_tab("test")
func set_tab(tab_index : int) -> void:
hide_all()
_resource_scene.show()
_resource_scene.set_resource_type(_folders[tab_index]["folder"], _folders[tab_index]["type"])
func hide_all() -> void:
_resource_scene.hide()
func inspect_data(var data : Resource) -> void:
emit_signal("inspect_data", data)