tool
extends EditorPlugin

var SWorldGeneratorSettings = preload("res://addons/world_generator/resources/world_generator_settings.gd")

var SWorldGenBaseResource = preload("res://addons/world_generator/resources/world_gen_base_resource.gd")
var SWorldGenWorld = preload("res://addons/world_generator/resources/world_gen_world.gd")
var SContinent = preload("res://addons/world_generator/resources/continent.gd")
var SZone = preload("res://addons/world_generator/resources/zone.gd")
var SSubZone = preload("res://addons/world_generator/resources/subzone.gd")

var editor_packed_scene = preload("res://addons/world_generator/ui/MainScreen.tscn")
var editor_scene = null

var tool_button : ToolButton = null

func _enter_tree():
	add_custom_type("WorldGeneratorSettings", "Resource", SWorldGeneratorSettings, null)
	
	add_custom_type("WorldGenBaseResource", "Resource", SWorldGenBaseResource, null)
	#Don't change the base to "WorldGenBaseResource" else it will complain about a non-existant class
	#Also it works perfectly like this
	add_custom_type("WorldGenWorld", "Resource", SWorldGenWorld, null)
	add_custom_type("Continent", "Resource", SContinent, null)
	add_custom_type("Zone", "Resource", SZone, null)
	add_custom_type("SubZone", "Resource", SSubZone, null)

	editor_scene = editor_packed_scene.instance()
	editor_scene.set_plugin(self)

	tool_button = add_control_to_bottom_panel(editor_scene, "World Editor")
	tool_button.hide()

func _exit_tree():
	remove_custom_type("WorldGeneratorSettings")
	
	remove_custom_type("WorldGenBaseResource")
	remove_custom_type("WorldGenWorld")
	remove_custom_type("Continent")
	remove_custom_type("Zone")
	remove_custom_type("SubZone")

	remove_control_from_bottom_panel(editor_scene)


func handles(object):
	return object is WorldGenWorld

func edit(object):
	#if editor_scene:
	#	make_bottom_panel_item_visible(editor_scene)

	if object is WorldGenWorld:
		var wgw : WorldGenWorld = object as WorldGenWorld
		wgw.setup()
		editor_scene.set_wgworld(wgw)

func make_visible(visible):
	if tool_button:
		if visible:
			tool_button.show()
		else:
			#if tool_button.pressed:
			#	tool_button.pressed = false

			if !tool_button.pressed:
				tool_button.hide()

func get_plugin_icon():
	return null

func get_plugin_name():
	return "WorldGeneratorEditor"

func has_main_screen():
	return false