--========================================================================
-- HardCodedBrain.lua : Implements a brain using hard-coded logic
--
-- Part of the GameCode4 Application
--
-- GameCode4 is the sample application that encapsulates much of the source code
-- discussed in "Game Coding Complete - 4th Edition" by Mike McShaffry and David
-- "Rez" Graham, published by Charles River Media. 
-- ISBN-10: 1133776574 | ISBN-13: 978-1133776574
--
-- If this source code has found it's way to you, and you think it has helped you
-- in any way, do the authors a favor and buy a new copy of the book - there are 
-- detailed explanations in it that compliment this code well. Buy a copy at Amazon.com
-- by clicking here: 
--    http://www.amazon.com/gp/product/1133776574/ref=olp_product_details?ie=UTF8&me=&seller=
--
-- There's a companion web site at http://www.mcshaffry.com/GameCode/
-- 
-- The source code is managed and maintained through Google Code: 
--    http://code.google.com/p/gamecode4/
--
-- (c) Copyright 2012 Michael L. McShaffry and David Graham
--
-- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser GPL v3
-- as published by the Free Software Foundation.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
-- http://www.gnu.org/licenses/lgpl-3.0.txt for more details.
--
-- You should have received a copy of the GNU Lesser GPL v3
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
--
--========================================================================

require("Scripts\\TeapotBrains.lua");
require("Scripts\\TeapotStates.lua");

-----------------------------------------------------------------------------------------------------------------------
-- HardCodedBrain 											- Chapter 18, page 620
-- This is the hard-coded brain.  It just takes what it needs from the gamestate and does some simple hard-coded logic
-- to find the appropriate state.
-----------------------------------------------------------------------------------------------------------------------
HardCodedBrain = class(TeapotBrain,
{
	--
});

function HardCodedBrain:Think()
	local playerPos = Vec3:Create(g_actorMgr:GetPlayer():GetPos());
	local pos = Vec3:Create(self._teapot:GetPos());
	local diff = playerPos - pos;
	
	-- player close
	if (diff:Length() < 20) then
		-- hit points low, run
		if (self._teapot.hitPoints <= 1) then
			return RunAwayState;
		-- hit points not low, attack
		else
			return AttackState;
		end
		
	-- player not close, resume patrol
	else
		return PatrolState;
	end
	
end

