extends AcceptDialog

var dialogue_file
# "character" would be "name" but it's already used by the base class
var character
var rank
var avatar

var dialogue_keys = []
var dialogue_name = ""
var dialogue_text = ""

onready var avatar_texture = $Container/Advisor/Avatar
onready var rank_label = $Container/Advisor/RankLbl
onready var name_label = $Container/Advisor/NameLbl
onready var description_label = $Container/DescriptionLbl

enum JsonFile {
	ANNOUNCEMENTS,
	ANALYSIS
}

func _ready():
	SimEvents.connect("advisor_message", self, "_advisor_dialogue")
	SimEvents.connect("policy_analysis", self, "_analysis_dialouge")
	
func _init_advisor(file, advisor):
	match advisor:
		SimData.Advisors.CITY_PLANNER:
			match file:
				JsonFile.ANNOUNCEMENTS:
					dialogue_file = "res://json/advisors/cityplanner.json"
				JsonFile.ANALYSIS:
					dialogue_file = "res://json/policies/cityplanner_analysis.json"
					
			avatar_texture.texture = preload("res://assets/avatars/cindy.png")
			name_label.text = "Cindy Diamond"
			rank_label.text = "City Planner"
		
		SimData.Advisors.FINANCIAL:
			match file:
				JsonFile.ANNOUNCEMENTS:
					dialogue_file = "res://json/advisors/finacial.json"
				JsonFile.ANALYSIS:
					dialogue_file = "res://json/policies/finacial_analysis.json"
					
			avatar_texture.texture = preload("res://assets/avatars/kit.png")
			name_label.text = "Kit Welsh"
			rank_label.text = "Financial Advisor"
			
		SimData.Advisors.TRANSPORT:
			match file:
				JsonFile.ANNOUNCEMENTS:
					dialogue_file = "res://json/advisors/transport.json"
				JsonFile.ANALYSIS:
					dialogue_file = "res://json/policies/transport_analysis.json"
					
			avatar_texture.texture = preload("res://assets/avatars/zc.png")
			name_label.text = "Zack Casey"
			rank_label.text = "Transportation Advisor"
	
func _launch_advisor_window(key):
#	_index_dialogue()
#	var message: String = dialogue_keys[key].text
#
#	if "[name]" in message:
#		message = message.replace("[name]", SimData.mayor_name)
#
#	if "[city]" in message:
#		message = message.replace("[city]", SimData.city_name)
#
#	description_label.text = message
#	window_title = dialogue_keys[key].name
#	show()
	pass

func _advisor_dialogue(advisor, message):
	_init_advisor(JsonFile.ANNOUNCEMENTS, advisor)
	_launch_advisor_window(message)
	
func _analysis_dialouge(advisor, policy):
	_init_advisor(JsonFile.ANALYSIS, advisor)
	_launch_advisor_window(policy)

func _index_dialogue():
	var dialogue = _load_dialogue()
	dialogue_keys.clear()
	for key in dialogue:
		dialogue_keys.append(dialogue[key])

func _load_dialogue():
	var file = File.new()
	if file.file_exists(dialogue_file):
		file.open(dialogue_file, file.READ)
		var dialogue = parse_json(file.get_as_text())
		return dialogue