require( "scripts/common/simple_object.lua" );

local	indicator_pos_x = 30;
local	indicator_pos_y = -30;

toybox = simple_object:new{
	current_action_character="youngchild",
	anchor_x=15,
	anchor_y=41,
	offset_x=-24,
	offset_y=-2,
	indicator_ui_x=indicator_pos_x,
	indicator_ui_y=indicator_pos_y,
	dad_ui_x=indicator_pos_x-35,
	dad_ui_y=indicator_pos_y,
	mom_ui_x=indicator_pos_x+35,
	mom_ui_y=indicator_pos_y,
	texture="anim/objects/toybox/toybox",
	animation_script="anim/objects/default_animation_script.lua",
	glow_texture="anim/objects/toybox/toybox_glow",
	glow_animation_script="anim/objects/default_glow_animation_script.lua",
	flipped_animation = false,
	
	messing_state_time = 3000,
	cleaning_state_time = 3000,
	
	show_cleaning_particle = false;
	
	toys_x = "-50";
	toys_y = "-80";
	toys_layer = "1";
	
	flip_animation_parent = false,
}

function toybox:new(o)
	o = o or {}   -- create object if user does not provide one
	setmetatable(o, self)
	self.__index = self
	return o
end

function toybox:parent_action()
	self.parent_is_coming = false;
	if self.parent_chosen == "dad" then
		HideDadIcon(self.object_name);
	else
		HideMomIcon(self.object_name);
	end
	DebugOut("toybox:parent_action:self.parent_state_action"..self.parent_state_action);	
	DebugOut("toybox:parent_action:GetCharacterState(self.parent_chosen)"..GetCharacterState(self.parent_chosen));	
	RemoveObjectFromClickedList(self.object_name);
	if GetCharacterState(self.parent_chosen) == self.parent_state_action and self.object_is_dirty then
		PlayCharacterAnimation(self.parent_chosen, self.character_cleaning_animation);
		FlipAnimation(self.parent_chosen, self.flip_animation_parent);
		PlayObjectAnimation(self.object_name, self.object_cleaning_animation);
		ShowCharacterStuff(self.parent_chosen, "organizing_toys", self.toys_x, self.toys_y, self.toys_layer);
		ChangeObjectState(self.object_name, self.cleaning_state_name);
		self.new_state_start_time = GetCurrentTime();
		--ShowParticle(self.object_name, "effects/powder.lua", "0", "0");
		SetCharacterState(self.parent_chosen, self.cleaning_state_name);
		
		self:get_cleaning_state_time();
	else
		ShowMiss(self.object_name);
		if self.stress_inc_enabled and not self.no_stress_power then
			AddFutureCharacterStress(self.parent_chosen, -self.stress_inc);
		end
		if self.no_stress_power then
			HideNoStressIcon(self.object_name);
		end
		self.no_stress_power = false;
		--PlayObjectAnimation(self.object_name, self.object_dirty_animation);
		--ChangeObjectState(self.object_name, self.dirty_state_name);
		IncludeObjectMouseHandler(self.object_name);
		FinishCharacterTask(self.parent_chosen);
		self.parent_chosen = "";
		self.click_enable = self.set_click_enable;
		if self.object_is_dirty then
			ChangeObjectState(self.object_name, self.dirty_state_name);			
			IncludeObjectMouseHandler(self.object_name);			
			self.click_enable = true;
		end
	end
end

function toybox:cleaning_update()
	if (GetCurrentTime() - self.new_state_start_time) > self.cleaning_state_time then
		if self.parent_chosen == "dad" then
			StopSound("working_father");
			PlaySound("task_complete_father", false);
		else
			StopSound("working_mother");
			PlaySound("task_complete_mother", false);
		end
		PlayCharacterAnimation(self.parent_chosen, self.character_clean_animation);
		HideCharacterStuff(self.parent_chosen);
		if self.stress_inc_enabled and not self.no_stress_power then
			AddCharacterStress(self.parent_chosen, self.stress_inc);
		end
		if self.no_stress_power then
			HideNoStressIcon(self.object_name);
		end
		self.no_stress_power = false;
		FinishCharacterTask(self.parent_chosen);
		PlayObjectAnimation(self.object_name, self.object_clean_animation);
		ChangeObjectState(self.object_name, self.clean_state_name);
		SetCharacterState(self.parent_chosen, "normal");
		
		self.cleaning_state_time = self.previous_cleaning_state_time;
	end
end