| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | /** BuildBoat.cpp, part of VCMI engine** Authors: listed in file AUTHORS in main folder** License: GNU General Public License v2.0 or later* Full text of license available in license.txt file, in main folder**/#include "StdInc.h"#include "BuildBoat.h"#include "../AIGateway.h"#include "../Behaviors/CaptureObjectsBehavior.h"namespace NKAI{using namespace Goals;bool BuildBoat::operator==(const BuildBoat & other) const{	return shipyard == other.shipyard;}////TSubgoal BuildBoat::decomposeSingle() const//{//	if(cb->getPlayerRelations(ai->playerID, shipyard->o->tempOwner) == PlayerRelations::ENEMIES)//	{//		return sptr(CaptureObjectsBehavior(shipyard->o));//	}////	if(shipyard->shipyardStatus() != IShipyard::GOOD)//	{//		throw cannotFulfillGoalException("Shipyard is busy.");//	}////	TResources boatCost;//	shipyard->getBoatCost(boatCost);////	return iAmElementar();//}void BuildBoat::accept(AIGateway * ai){	TResources boatCost;	shipyard->getBoatCost(boatCost);	if(!cb->getResourceAmount().canAfford(boatCost))	{		throw cannotFulfillGoalException("Can not afford boat");	}	if(cb->getPlayerRelations(ai->playerID, shipyard->getObject()->getOwner()) == PlayerRelations::ENEMIES)	{		throw cannotFulfillGoalException("Can not build boat in enemy shipyard");	}	if(shipyard->shipyardStatus() != IShipyard::GOOD)	{		throw cannotFulfillGoalException("Shipyard is busy.");	}	logAi->trace(		"Building boat at shipyard located at %s, estimated boat position %s",		shipyard->getObject()->visitablePos().toString(),		shipyard->bestLocation().toString());	cb->buildBoat(shipyard);	throw goalFulfilledException(sptr(*this));}std::string BuildBoat::toString() const{	return "BuildBoat";}}
 |