mirror of
https://github.com/Relintai/utilities_gamedev.git
synced 2025-03-08 18:17:05 +01:00
123 lines
3.1 KiB
GDScript
123 lines
3.1 KiB
GDScript
tool
|
|
extends HBoxContainer
|
|
|
|
var edited_world : WorldGenWorld = null
|
|
var edited_continent : Continent = null
|
|
var edited_zone : Zone = null
|
|
var edited_sub_zone : SubZone = null
|
|
|
|
func _ready():
|
|
var coption_button : OptionButton = $VBoxContainer/ContinentOptionButton
|
|
coption_button.connect("item_selected", self, "on_continent_item_selected")
|
|
|
|
var zoption_button : OptionButton = $VBoxContainer/ZoneOptionButton
|
|
zoption_button.connect("item_selected", self, "on_zone_item_selected")
|
|
|
|
var szoption_button : OptionButton = $VBoxContainer/SubZoneOptionButton
|
|
szoption_button.connect("item_selected", self, "on_sub_zone_item_selected")
|
|
|
|
func set_plugin(plugin : EditorPlugin) -> void:
|
|
$VBoxContainer/HBoxContainer2/ResourcePropertyList.set_plugin(plugin)
|
|
|
|
func continent_changed() -> void:
|
|
var option_button : OptionButton = $VBoxContainer/ZoneOptionButton
|
|
option_button.clear()
|
|
edited_zone = null
|
|
edited_sub_zone = null
|
|
|
|
if !edited_continent:
|
|
return
|
|
|
|
var content : Array = edited_continent.get_content()
|
|
|
|
for c in content:
|
|
if c:
|
|
option_button.add_item(c.resource_name)
|
|
option_button.set_item_metadata(option_button.get_item_count() - 1, c)
|
|
|
|
if !edited_zone:
|
|
edited_zone = c
|
|
|
|
zone_changed()
|
|
|
|
func zone_changed() -> void:
|
|
var option_button : OptionButton = $VBoxContainer/SubZoneOptionButton
|
|
option_button.clear()
|
|
edited_sub_zone = null
|
|
|
|
if !edited_zone:
|
|
return
|
|
|
|
var content : Array = edited_zone.get_content()
|
|
|
|
for c in content:
|
|
if c:
|
|
option_button.add_item(c.resource_name)
|
|
option_button.set_item_metadata(option_button.get_item_count() - 1, c)
|
|
|
|
if !edited_sub_zone:
|
|
edited_sub_zone = c
|
|
|
|
sub_zone_changed()
|
|
|
|
|
|
func sub_zone_changed() -> void:
|
|
$VBoxContainer/HBoxContainer2/ResourcePropertyList.edit_resource(edited_sub_zone)
|
|
|
|
func refresh() -> void:
|
|
var option_button : OptionButton = $VBoxContainer/ContinentOptionButton
|
|
option_button.clear()
|
|
|
|
if !edited_world:
|
|
return
|
|
|
|
var content : Array = edited_world.get_content()
|
|
|
|
for c in content:
|
|
if c:
|
|
option_button.add_item(c.resource_name)
|
|
option_button.set_item_metadata(option_button.get_item_count() - 1, c)
|
|
|
|
if !edited_continent:
|
|
edited_continent = c
|
|
|
|
continent_changed()
|
|
|
|
func set_wgworld(wgw : WorldGenWorld) -> void:
|
|
edited_world = wgw
|
|
edited_continent = null
|
|
edited_zone = null
|
|
|
|
refresh()
|
|
|
|
func set_continent(continent : Continent) -> void:
|
|
edited_continent = continent
|
|
edited_zone = null
|
|
|
|
continent_changed()
|
|
|
|
func set_zone(zone : Zone) -> void:
|
|
edited_zone = zone
|
|
|
|
zone_changed()
|
|
|
|
func set_sub_zone(sub_zone : SubZone) -> void:
|
|
edited_sub_zone = sub_zone
|
|
|
|
sub_zone_changed()
|
|
|
|
func on_continent_item_selected(idx : int) -> void:
|
|
var option_button : OptionButton = $VBoxContainer/ContinentOptionButton
|
|
|
|
set_continent(option_button.get_item_metadata(idx))
|
|
|
|
func on_zone_item_selected(idx : int) -> void:
|
|
var option_button : OptionButton = $VBoxContainer/ZoneOptionButton
|
|
|
|
set_zone(option_button.get_item_metadata(idx))
|
|
|
|
func on_sub_zone_item_selected(idx : int) -> void:
|
|
var option_button : OptionButton = $VBoxContainer/SubZoneOptionButton
|
|
|
|
set_sub_zone(option_button.get_item_metadata(idx))
|