mirror of
https://github.com/Relintai/broken_seals.git
synced 2024-11-20 21:07:17 +01:00
Reworked the data_manager addon. Now it stores it's settings using ProjectSettings, so it shouldn't bug out on a fresh import.
This commit is contained in:
parent
2b840d1086
commit
b81b7c348a
@ -1,107 +0,0 @@
|
||||
[gd_resource type="Resource" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://addons/data_manager/resources/data_manager_addon_settings.gd" type="Script" id=1]
|
||||
|
||||
[resource]
|
||||
script = ExtResource( 1 )
|
||||
folder_count = 25
|
||||
folders/0/folder = "."
|
||||
folders/0/header = ""
|
||||
folders/0/name = "Root"
|
||||
folders/0/type = "Resource"
|
||||
folders/1/folder = "entity_skills"
|
||||
folders/1/header = ""
|
||||
folders/1/name = "Skills"
|
||||
folders/1/type = "EntitySkillData"
|
||||
folders/2/folder = "entities"
|
||||
folders/2/header = ""
|
||||
folders/2/name = "Entities"
|
||||
folders/2/type = "EntityData"
|
||||
folders/3/folder = "player_character_data"
|
||||
folders/3/header = ""
|
||||
folders/3/name = "Player Characters"
|
||||
folders/3/type = "EntityData"
|
||||
folders/4/folder = "entity_classes"
|
||||
folders/4/header = ""
|
||||
folders/4/name = "Classes"
|
||||
folders/4/type = "EntityClassData"
|
||||
folders/5/folder = "ai"
|
||||
folders/5/header = ""
|
||||
folders/5/name = "AI"
|
||||
folders/5/type = "AIAction"
|
||||
folders/6/folder = "character_models"
|
||||
folders/6/header = "Models"
|
||||
folders/6/name = "Models"
|
||||
folders/6/type = "MeshDataResource"
|
||||
folders/7/folder = "character_textures"
|
||||
folders/7/header = ""
|
||||
folders/7/name = "Textures"
|
||||
folders/7/type = "Texture"
|
||||
folders/8/folder = "spells"
|
||||
folders/8/header = "Spells"
|
||||
folders/8/name = "Spells"
|
||||
folders/8/type = "Spell"
|
||||
folders/9/folder = "aura_groups"
|
||||
folders/9/header = ""
|
||||
folders/9/name = "Aura Groups"
|
||||
folders/9/type = "AuraGroup"
|
||||
folders/10/folder = "character_specs"
|
||||
folders/10/header = ""
|
||||
folders/10/name = "Specs"
|
||||
folders/10/type = "CharacterSpec"
|
||||
folders/11/folder = "effect_data"
|
||||
folders/11/header = ""
|
||||
folders/11/name = "Effect Datas"
|
||||
folders/11/type = "SpellEffectVisual"
|
||||
folders/12/folder = "world_spells"
|
||||
folders/12/header = ""
|
||||
folders/12/name = "World Spells"
|
||||
folders/12/type = "WorldSpellData"
|
||||
folders/13/folder = "item_templates"
|
||||
folders/13/header = "Items"
|
||||
folders/13/name = "Items"
|
||||
folders/13/type = "ItemTemplate"
|
||||
folders/14/folder = "crafting"
|
||||
folders/14/header = ""
|
||||
folders/14/name = "Craft Recipes"
|
||||
folders/14/type = "CraftRecipe"
|
||||
folders/15/folder = "item_visuals"
|
||||
folders/15/header = ""
|
||||
folders/15/name = "Item Visuals"
|
||||
folders/15/type = "ItemVisual"
|
||||
folders/16/folder = "planets"
|
||||
folders/16/header = "World"
|
||||
folders/16/name = "World"
|
||||
folders/16/type = "World"
|
||||
folders/17/folder = "continents"
|
||||
folders/17/header = ""
|
||||
folders/17/name = "Continents"
|
||||
folders/17/type = "Continent"
|
||||
folders/18/folder = "zones"
|
||||
folders/18/header = ""
|
||||
folders/18/name = "Zones"
|
||||
folders/18/type = "Zone"
|
||||
folders/19/folder = "sub_zones"
|
||||
folders/19/header = ""
|
||||
folders/19/name = "SubZones"
|
||||
folders/19/type = "SubZone"
|
||||
folders/20/folder = "dungeons"
|
||||
folders/20/header = ""
|
||||
folders/20/name = "Dungeons"
|
||||
folders/20/type = "DungeonData"
|
||||
folders/21/folder = "dungeon_rooms"
|
||||
folders/21/header = ""
|
||||
folders/21/name = "Dungeon Rooms"
|
||||
folders/21/type = "DungeonRoomData"
|
||||
folders/22/folder = "basic_models"
|
||||
folders/22/header = ""
|
||||
folders/22/name = "Basic Models"
|
||||
folders/22/type = "MeshDataResource"
|
||||
folders/23/folder = "prop_models"
|
||||
folders/23/header = ""
|
||||
folders/23/name = "Prop Models"
|
||||
folders/23/type = "PackedScene"
|
||||
folders/24/folder = "entity_resources"
|
||||
folders/24/header = "Entities"
|
||||
folders/24/name = "Entity Resources"
|
||||
folders/24/type = "EntityResourceData"
|
@ -47,6 +47,7 @@ func load_data():
|
||||
_main_container.add_child(_resource_scene)
|
||||
_resource_scene.owner = _main_container
|
||||
_resource_scene.connect("inspect_data", self, "inspect_data")
|
||||
_resource_scene.connect("edit_settings", self, "edit_settings")
|
||||
|
||||
_module_entry_container = get_node(module_entry_container_path)
|
||||
_folder_entry_container = get_node(folder_entry_container_path)
|
||||
@ -198,6 +199,10 @@ func hide_all() -> void:
|
||||
func inspect_data(var data : Resource) -> void:
|
||||
emit_signal("inspect_data", data)
|
||||
|
||||
func edit_settings() -> void:
|
||||
emit_signal("inspect_data", _settings)
|
||||
|
||||
|
||||
func set_plugin(plugin : EditorPlugin) -> void:
|
||||
_plugin = plugin
|
||||
|
||||
|
@ -10,9 +10,6 @@ anchor_bottom = 1.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
resource_scene = ExtResource( 3 )
|
||||
base_folder = "res://data/"
|
||||
main_container = NodePath("HSplitContainer/MarginContainer")
|
||||
|
@ -2,6 +2,7 @@ tool
|
||||
extends Control
|
||||
|
||||
signal inspect_data
|
||||
signal edit_settings
|
||||
|
||||
export(PackedScene) var resource_row_scene : PackedScene
|
||||
export(PackedScene) var history_row_scene : PackedScene
|
||||
@ -292,3 +293,7 @@ func search(text : String) -> void:
|
||||
|
||||
func sort_entries(a, b):
|
||||
return a["id"] < b["id"]
|
||||
|
||||
|
||||
func edit_settings():
|
||||
emit_signal("edit_settings")
|
||||
|
@ -12,9 +12,6 @@
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource( 5 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
resource_row_scene = ExtResource( 2 )
|
||||
history_row_scene = ExtResource( 3 )
|
||||
entry_container_path = NodePath("ResourcePanel/VBoxContainer2/ScrollContainer2/VBoxContainer")
|
||||
@ -75,21 +72,28 @@ margin_left = 612.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
|
||||
[node name="Button" type="Button" parent="ResourcePanel/VBoxContainer"]
|
||||
[node name="Settings" type="Button" parent="ResourcePanel/VBoxContainer"]
|
||||
margin_right = 412.0
|
||||
margin_bottom = 20.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Settings"
|
||||
|
||||
[node name="Button" type="Button" parent="ResourcePanel/VBoxContainer"]
|
||||
margin_top = 24.0
|
||||
margin_right = 412.0
|
||||
margin_bottom = 44.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Clear History"
|
||||
icon = ExtResource( 7 )
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="ResourcePanel/VBoxContainer"]
|
||||
margin_top = 24.0
|
||||
margin_top = 48.0
|
||||
margin_right = 412.0
|
||||
margin_bottom = 28.0
|
||||
margin_bottom = 52.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="ResourcePanel/VBoxContainer"]
|
||||
margin_top = 32.0
|
||||
margin_top = 56.0
|
||||
margin_right = 412.0
|
||||
margin_bottom = 600.0
|
||||
size_flags_horizontal = 3
|
||||
@ -114,5 +118,6 @@ dialog_text = "Delete?"
|
||||
|
||||
[connection signal="text_entered" from="ResourcePanel/VBoxContainer2/LineEdit" to="." method="search"]
|
||||
[connection signal="pressed" from="ResourcePanel/VBoxContainer2/CreateButton" to="CreateNamePopup" method="popup"]
|
||||
[connection signal="pressed" from="ResourcePanel/VBoxContainer/Settings" to="." method="edit_settings"]
|
||||
[connection signal="pressed" from="ResourcePanel/VBoxContainer/Button" to="." method="clear_history"]
|
||||
[connection signal="confirmed" from="DeletePopup" to="." method="delete_confirm"]
|
||||
|
@ -42,20 +42,6 @@ func get_plugin_name():
|
||||
func inspect_data(var data : Resource) -> void:
|
||||
get_editor_interface().inspect_object(data)
|
||||
|
||||
func ensure_data_dir_exists() -> void:
|
||||
var dir : Directory = Directory.new()
|
||||
|
||||
if !dir.dir_exists("res://addons/data_manager/_data/"):
|
||||
dir.make_dir("res://addons/data_manager/_data/")
|
||||
|
||||
func load_settings() -> void:
|
||||
ensure_data_dir_exists()
|
||||
|
||||
var dir : Directory = Directory.new()
|
||||
|
||||
if !dir.file_exists("res://addons/data_manager/_data/settings.tres"):
|
||||
settings = DataManagerAddonSettings.new()
|
||||
|
||||
ResourceSaver.save("res://addons/data_manager/_data/settings.tres", settings)
|
||||
else:
|
||||
settings = ResourceLoader.load("res://addons/data_manager/_data/settings.tres")
|
||||
settings = DataManagerAddonSettings.new()
|
||||
settings.load_from_project_settings()
|
||||
|
@ -101,18 +101,25 @@ func _get_property_list() -> Array:
|
||||
var props : Array = Array()
|
||||
|
||||
props.append({
|
||||
"name": "convert_to_json",
|
||||
"name": "save",
|
||||
"type": TYPE_NIL,
|
||||
"hint": PROPERTY_HINT_BUTTON,
|
||||
"hint_string": "convert_to_json",
|
||||
})
|
||||
|
||||
props.append({
|
||||
"name": "convert_from_json",
|
||||
"type": TYPE_NIL,
|
||||
"hint": PROPERTY_HINT_BUTTON,
|
||||
"hint_string": "convert_from_json",
|
||||
"hint_string": "save_to_project_settings",
|
||||
})
|
||||
|
||||
# props.append({
|
||||
# "name": "convert_to_json",
|
||||
# "type": TYPE_NIL,
|
||||
# "hint": PROPERTY_HINT_BUTTON,
|
||||
# "hint_string": "convert_to_json",
|
||||
# })
|
||||
#
|
||||
# props.append({
|
||||
# "name": "convert_from_json",
|
||||
# "type": TYPE_NIL,
|
||||
# "hint": PROPERTY_HINT_BUTTON,
|
||||
# "hint_string": "convert_from_json",
|
||||
# })
|
||||
|
||||
props.append({
|
||||
"name": "folder_count",
|
||||
@ -153,26 +160,26 @@ func set_folder_count(val : int) -> void:
|
||||
property_list_changed_notify()
|
||||
|
||||
func convert_to_json() -> void:
|
||||
var f : File = File.new();
|
||||
var f : File = File.new()
|
||||
|
||||
f.open("res://addons/data_manager/_data/settings.json", File.WRITE);
|
||||
f.store_string(get_as_json());
|
||||
f.close();
|
||||
f.open("res://addons/data_manager/_data/settings.json", File.WRITE)
|
||||
f.store_string(get_as_json())
|
||||
f.close()
|
||||
|
||||
PLogger.log_message("Saved settings to res://addons/data_manager/_data/settings.json");
|
||||
PLogger.log_message("Saved settings to res://addons/data_manager/_data/settings.json")
|
||||
|
||||
func convert_from_json() -> void:
|
||||
var f : File = File.new()
|
||||
|
||||
if (!f.file_exists("res://addons/data_manager/_data/settings.json")):
|
||||
PLogger.log_message("File res://addons/data_manager/_data/settings.json doesn't exist!");
|
||||
return;
|
||||
PLogger.log_message("File res://addons/data_manager/_data/settings.json doesn't exist!")
|
||||
return
|
||||
|
||||
f.open("res://addons/data_manager/_data/settings.json", File.READ);
|
||||
set_from_json(f.get_as_text());
|
||||
f.close();
|
||||
f.open("res://addons/data_manager/_data/settings.json", File.READ)
|
||||
set_from_json(f.get_as_text())
|
||||
f.close()
|
||||
|
||||
PLogger.log_message("Loaded settings from res://addons/data_manager/_data/settings.json");
|
||||
PLogger.log_message("Loaded settings from res://addons/data_manager/_data/settings.json")
|
||||
|
||||
func get_as_json() -> String:
|
||||
var arr : Array
|
||||
@ -191,15 +198,6 @@ func get_as_json() -> String:
|
||||
|
||||
return to_json(arr);
|
||||
|
||||
|
||||
#class SettingEntry:
|
||||
# var folder : String = ""
|
||||
# var header : String = ""
|
||||
# var name : String = ""
|
||||
# var type : String = ""
|
||||
|
||||
|
||||
|
||||
func set_from_json(data : String) -> void:
|
||||
var jpr : JSONParseResult = JSON.parse(data)
|
||||
|
||||
@ -221,3 +219,12 @@ func set_from_json(data : String) -> void:
|
||||
|
||||
folders.push_back(s)
|
||||
|
||||
func save_to_project_settings() -> void:
|
||||
ProjectSettings.set("addons/data_manager/folder_settings", get_as_json())
|
||||
|
||||
func load_from_project_settings() -> void:
|
||||
var d : String = ProjectSettings.get("addons/data_manager/folder_settings")
|
||||
|
||||
if d != "":
|
||||
set_from_json(d)
|
||||
|
||||
|
@ -181,6 +181,10 @@ _global_script_class_icons={
|
||||
@"SpellGD": ""
|
||||
}
|
||||
|
||||
[addons]
|
||||
|
||||
data_manager/folder_settings="[{\"folder\":\".\",\"header\":\"\",\"name\":\"Root\",\"type\":\"Resource\"},{\"folder\":\"entity_skills\",\"header\":\"\",\"name\":\"Skills\",\"type\":\"EntitySkillData\"},{\"folder\":\"entities\",\"header\":\"\",\"name\":\"Entities\",\"type\":\"EntityData\"},{\"folder\":\"player_character_data\",\"header\":\"\",\"name\":\"Player Characters\",\"type\":\"EntityData\"},{\"folder\":\"entity_classes\",\"header\":\"\",\"name\":\"Classes\",\"type\":\"EntityClassData\"},{\"folder\":\"ai\",\"header\":\"\",\"name\":\"AI\",\"type\":\"AIAction\"},{\"folder\":\"character_models\",\"header\":\"Models\",\"name\":\"Models\",\"type\":\"MeshDataResource\"},{\"folder\":\"character_textures\",\"header\":\"\",\"name\":\"Textures\",\"type\":\"Texture\"},{\"folder\":\"spells\",\"header\":\"Spells\",\"name\":\"Spells\",\"type\":\"Spell\"},{\"folder\":\"aura_groups\",\"header\":\"\",\"name\":\"Aura Groups\",\"type\":\"AuraGroup\"},{\"folder\":\"character_specs\",\"header\":\"\",\"name\":\"Specs\",\"type\":\"CharacterSpec\"},{\"folder\":\"effect_data\",\"header\":\"\",\"name\":\"Effect Datas\",\"type\":\"SpellEffectVisual\"},{\"folder\":\"world_spells\",\"header\":\"\",\"name\":\"World Spells\",\"type\":\"WorldSpellData\"},{\"folder\":\"item_templates\",\"header\":\"Items\",\"name\":\"Items\",\"type\":\"ItemTemplate\"},{\"folder\":\"crafting\",\"header\":\"\",\"name\":\"Craft Recipes\",\"type\":\"CraftRecipe\"},{\"folder\":\"item_visuals\",\"header\":\"\",\"name\":\"Item Visuals\",\"type\":\"ItemVisual\"},{\"folder\":\"planets\",\"header\":\"World\",\"name\":\"World\",\"type\":\"World\"},{\"folder\":\"continents\",\"header\":\"\",\"name\":\"Continents\",\"type\":\"Continent\"},{\"folder\":\"zones\",\"header\":\"\",\"name\":\"Zones\",\"type\":\"Zone\"},{\"folder\":\"sub_zones\",\"header\":\"\",\"name\":\"SubZones\",\"type\":\"SubZone\"},{\"folder\":\"dungeons\",\"header\":\"\",\"name\":\"Dungeons\",\"type\":\"DungeonData\"},{\"folder\":\"dungeon_rooms\",\"header\":\"\",\"name\":\"Dungeon Rooms\",\"type\":\"DungeonRoomData\"},{\"folder\":\"basic_models\",\"header\":\"\",\"name\":\"Basic Models\",\"type\":\"MeshDataResource\"},{\"folder\":\"prop_models\",\"header\":\"\",\"name\":\"Prop Models\",\"type\":\"PackedScene\"},{\"folder\":\"entity_resources\",\"header\":\"Entities\",\"name\":\"Entity Resources\",\"type\":\"EntityResourceData\"}]"
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Broken Seals"
|
||||
|
Loading…
Reference in New Issue
Block a user