]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Editor/CharacterEditor/char_edit_section_portraits.gd
Updated export config options
[wolf-seeking-sheep.git] / addons / dialogic / Editor / CharacterEditor / char_edit_section_portraits.gd
1 @tool
2 extends DialogicCharacterEditorMainSection
3
4 ## The general portrait settings section
5
6 var loading := false
7
8 func _get_title() -> String:
9         return "Portraits"
10
11
12 func _ready() -> void:
13         # Connecting all necessary signals
14         %DefaultPortraitPicker.value_changed.connect(default_portrait_changed)
15         %MainScale.value_changed.connect(main_portrait_settings_update)
16         %MainOffset._load_display_info({'step':1})
17         %MainOffset.value_changed.connect(main_portrait_settings_update)
18         %MainMirror.toggled.connect(main_portrait_settings_update)
19
20         # Setting up Default Portrait Picker
21         %DefaultPortraitPicker.resource_icon = load("res://addons/dialogic/Editor/Images/Resources/portrait.svg")
22         %DefaultPortraitPicker.get_suggestions_func = suggest_portraits
23
24
25 ## Make sure preview get's updated when portrait settings change
26 func main_portrait_settings_update(_something=null, _value=null) -> void:
27         if loading:
28                 return
29         character_editor.current_resource.scale = %MainScale.value/100.0
30         character_editor.current_resource.offset = %MainOffset.current_value
31         character_editor.current_resource.mirror = %MainMirror.button_pressed
32         character_editor.update_preview()
33         character_editor.something_changed()
34
35
36 func default_portrait_changed(property:String, value:String) -> void:
37         character_editor.current_resource.default_portrait = value
38         character_editor.update_default_portrait_star(value)
39
40
41 func set_default_portrait(portrait_name:String) -> void:
42         %DefaultPortraitPicker.set_value(portrait_name)
43         default_portrait_changed("", portrait_name)
44
45
46 func _load_character(resource:DialogicCharacter) -> void:
47         loading = true
48         %DefaultPortraitPicker.set_value(resource.default_portrait)
49
50         %MainScale.value = 100*resource.scale
51         %MainOffset.set_value(resource.offset)
52         %MainMirror.button_pressed = resource.mirror
53         loading = false
54
55
56 func _save_changes(resource:DialogicCharacter) -> DialogicCharacter:
57         # Portrait settings
58         if %DefaultPortraitPicker.current_value in resource.portraits.keys():
59                 resource.default_portrait = %DefaultPortraitPicker.current_value
60         elif !resource.portraits.is_empty():
61                 resource.default_portrait = resource.portraits.keys()[0]
62         else:
63                 resource.default_portrait = ""
64
65         resource.scale = %MainScale.value/100.0
66         resource.offset = %MainOffset.current_value
67         resource.mirror = %MainMirror.button_pressed
68         return resource
69
70
71 ## Get suggestions for DefaultPortraitPicker
72 func suggest_portraits(search:String) -> Dictionary:
73         var suggestions := {}
74         for portrait in character_editor.get_updated_portrait_dict().keys():
75                 suggestions[portrait] = {'value':portrait}
76         return suggestions
77