소스 검색

Rename GetObj->VisitObj to reflect new functionality

Dydzio 7 년 전
부모
커밋
3961b4ac93
6개의 변경된 파일38개의 추가작업 그리고 38개의 파일을 삭제
  1. 2 2
      AI/VCAI/Fuzzy.cpp
  2. 1 1
      AI/VCAI/Fuzzy.h
  3. 18 18
      AI/VCAI/Goals.cpp
  4. 3 3
      AI/VCAI/Goals.h
  5. 12 12
      AI/VCAI/VCAI.cpp
  6. 2 2
      AI/VCAI/VCAI.h

+ 2 - 2
AI/VCAI/Fuzzy.cpp

@@ -415,7 +415,7 @@ float FuzzyHelper::evaluate(Goals::VisitTile & g)
 {
 	return visitTileEngine.evaluate(g);
 }
-float FuzzyHelper::evaluate(Goals::GetObj & g)
+float FuzzyHelper::evaluate(Goals::VisitObj & g)
 {
 	return getObjEngine.evaluate(g);
 }
@@ -523,7 +523,7 @@ GetObjEngine::GetObjEngine()
 
 float GetObjEngine::evaluate(Goals::AbstractGoal & goal)
 {
-	auto g = dynamic_cast<Goals::GetObj &>(goal);
+	auto g = dynamic_cast<Goals::VisitObj &>(goal);
 
 	if(!g.hero)
 		return 0;

+ 1 - 1
AI/VCAI/Fuzzy.h

@@ -88,7 +88,7 @@ public:
 	float evaluate(Goals::Explore & g);
 	float evaluate(Goals::RecruitHero & g);
 	float evaluate(Goals::VisitTile & g);
-	float evaluate(Goals::GetObj & g);
+	float evaluate(Goals::VisitObj & g);
 	float evaluate(Goals::VisitHero & g);
 	float evaluate(Goals::BuildThis & g);
 	float evaluate(Goals::DigAtTile & g);

+ 18 - 18
AI/VCAI/Goals.cpp

@@ -350,7 +350,7 @@ TSubgoal Win::whatToDoToAchieve()
 						return sptr(Goals::Conquer());
 
 
-				return sptr(Goals::GetObj(goal.object->id.getNum()));
+				return sptr(Goals::VisitObj(goal.object->id.getNum()));
 			}
 			else
 			{
@@ -404,7 +404,7 @@ TSubgoal Win::whatToDoToAchieve()
 					return sptr(Goals::DigAtTile(grailPos));
 				} //TODO: use FIND_OBJ
 				else if(const CGObjectInstance * obj = ai->getUnvisitedObj(objWithID<Obj::OBELISK>)) //there are unvisited Obelisks
-					return sptr(Goals::GetObj(obj->id.getNum()));
+					return sptr(Goals::VisitObj(obj->id.getNum()));
 				else
 					return sptr(Goals::Explore());
 			}
@@ -414,7 +414,7 @@ TSubgoal Win::whatToDoToAchieve()
 		{
 			if(goal.object)
 			{
-				return sptr(Goals::GetObj(goal.object->id.getNum()));
+				return sptr(Goals::VisitObj(goal.object->id.getNum()));
 			}
 			else
 			{
@@ -489,7 +489,7 @@ TSubgoal FindObj::whatToDoToAchieve()
 		}
 	}
 	if(o && ai->isAccessible(o->pos)) //we don't use isAccessibleForHero as we don't know which hero it is
-		return sptr(Goals::GetObj(o->id.getNum()));
+		return sptr(Goals::VisitObj(o->id.getNum()));
 	else
 		return sptr(Goals::Explore());
 }
@@ -507,12 +507,12 @@ bool Goals::FindObj::fulfillsMe(TSubgoal goal)
 	return false;
 }
 
-std::string GetObj::completeMessage() const
+std::string VisitObj::completeMessage() const
 {
 	return "hero " + hero.get()->name + " captured Object ID = " + boost::lexical_cast<std::string>(objid);
 }
 
-TGoalVec GetObj::getAllPossibleSubgoals()
+TGoalVec VisitObj::getAllPossibleSubgoals()
 {
 	TGoalVec goalList;
 	const CGObjectInstance * obj = cb->getObjInstance(ObjectInstanceID(objid));
@@ -527,7 +527,7 @@ TGoalVec GetObj::getAllPossibleSubgoals()
 		if(ai->isAccessibleForHero(pos, hero))
 		{
 			if(isSafeToVisit(hero, pos))
-				goalList.push_back(sptr(Goals::GetObj(obj->id.getNum()).sethero(hero)));
+				goalList.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(hero)));
 			else
 				goalList.push_back(sptr(Goals::GatherArmy(evaluateDanger(pos, hero.h) * SAFE_ATTACK_CONSTANT).sethero(hero).setisAbstract(true)));
 
@@ -541,7 +541,7 @@ TGoalVec GetObj::getAllPossibleSubgoals()
 			if(ai->isAccessibleForHero(pos, h))
 			{
 				if(isSafeToVisit(hero, pos))
-					goalList.push_back(sptr(Goals::GetObj(obj->id.getNum()).sethero(h)));
+					goalList.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h)));
 				else
 					goalList.push_back(sptr(Goals::GatherArmy(evaluateDanger(pos, h) * SAFE_ATTACK_CONSTANT).sethero(hero).setisAbstract(true)));
 			}
@@ -556,7 +556,7 @@ TGoalVec GetObj::getAllPossibleSubgoals()
 	return goalList;
 }
 
-TSubgoal GetObj::whatToDoToAchieve()
+TSubgoal VisitObj::whatToDoToAchieve()
 {
 	auto bestGoal = fh->chooseSolution(getAllPossibleSubgoals());
 
@@ -566,21 +566,21 @@ TSubgoal GetObj::whatToDoToAchieve()
 	return bestGoal;
 }
 
-Goals::GetObj::GetObj(int Objid) : CGoal(Goals::GET_OBJ)
+Goals::VisitObj::VisitObj(int Objid) : CGoal(Goals::GET_OBJ)
 {
 	objid = Objid;
 	tile = ai->myCb->getObjInstance(ObjectInstanceID(objid))->visitablePos();
 	priority = 3;
 }
 
-bool Goals::GetObj::operator==(AbstractGoal & g)
+bool Goals::VisitObj::operator==(AbstractGoal & g)
 {
 	if (g.goalType != goalType)
 		return false;
 	return g.objid == objid;
 }
 
-bool GetObj::fulfillsMe(TSubgoal goal)
+bool VisitObj::fulfillsMe(TSubgoal goal)
 {
 	if(goal->goalType == Goals::VISIT_TILE)
 	{
@@ -731,7 +731,7 @@ TGoalVec ClearWayTo::getAllPossibleSubgoals()
 				if(shouldVisit(h, topObj))
 				{
 					//do NOT use VISIT_TILE, as tile with quets guard can't be visited
-					ret.push_back(sptr(Goals::GetObj(topObj->id.getNum()).sethero(h))); //TODO: Recheck this code - object visit became elementar goal
+					ret.push_back(sptr(Goals::VisitObj(topObj->id.getNum()).sethero(h))); //TODO: Recheck this code - object visit became elementar goal
 					continue; //do not try to visit tile or gather army
 				}
 				else
@@ -1148,7 +1148,7 @@ TGoalVec Goals::CollectRes::getAllPossibleSubgoals()
 						if (dest != t) //there is something blocking our way
 							ret.push_back(sptr(Goals::ClearWayTo(dest, h).setisAbstract(true)));
 						else
-							ret.push_back(sptr(Goals::GetObj(obj->id.getNum()).sethero(h).setisAbstract(true)));
+							ret.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h).setisAbstract(true)));
 					}
 					else //we need to get army in order to pick that object
 						ret.push_back(sptr(Goals::GatherArmy(evaluateDanger(dest, h) * SAFE_ATTACK_CONSTANT).sethero(h).setisAbstract(true)));
@@ -1234,7 +1234,7 @@ TSubgoal Goals::CollectRes::whatToDoToTrade()
 			auto objid = m->o->id.getNum();
 			if (backObj->tempOwner != ai->playerID) //top object not owned
 			{
-				return sptr(Goals::GetObj(objid)); //just go there
+				return sptr(Goals::VisitObj(objid)); //just go there
 			}
 			else //either it's our town, or we have hero there
 			{
@@ -1340,7 +1340,7 @@ TSubgoal GatherTroops::whatToDoToAchieve()
 			if(!nearest)
 				throw cannotFulfillGoalException("Cannot find nearest dwelling!");
 
-			return sptr(Goals::GetObj(nearest->id.getNum()));
+			return sptr(Goals::VisitObj(nearest->id.getNum()));
 		}
 		else
 			return sptr(Goals::Explore());
@@ -1422,7 +1422,7 @@ TGoalVec Conquer::getAllPossibleSubgoals()
 							}
 							else //just get that object
 							{
-								ret.push_back(sptr(Goals::GetObj(obj->id.getNum()).sethero(h).setisAbstract(true)));
+								ret.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h).setisAbstract(true)));
 							}
 						}
 					}
@@ -1642,7 +1642,7 @@ TGoalVec GatherArmy::getAllPossibleSubgoals()
 TSubgoal AbstractGoal::goVisitOrLookFor(const CGObjectInstance * obj)
 {
 	if(obj)
-		return sptr(Goals::GetObj(obj->id.getNum()));
+		return sptr(Goals::VisitObj(obj->id.getNum()));
 	else
 		return sptr(Goals::Explore());
 }

+ 3 - 3
AI/VCAI/Goals.h

@@ -461,11 +461,11 @@ public:
 	bool fulfillsMe(TSubgoal goal) override;
 };
 
-class DLL_EXPORT GetObj : public CGoal<GetObj>
+class DLL_EXPORT VisitObj : public CGoal<VisitObj> //this goal was previously known as GetObj
 {
 public:
-	GetObj() = delete; // empty constructor not allowed
-	GetObj(int Objid);
+	VisitObj() = delete; // empty constructor not allowed
+	VisitObj(int Objid);
 
 	TGoalVec getAllPossibleSubgoals() override;
 	TSubgoal whatToDoToAchieve() override;

+ 12 - 12
AI/VCAI/VCAI.cpp

@@ -268,7 +268,7 @@ void VCAI::heroVisit(const CGHeroInstance * visitor, const CGObjectInstance * vi
 	{
 		markObjectVisited(visitedObj);
 		unreserveObject(visitor, visitedObj);
-		completeGoal(sptr(Goals::GetObj(visitedObj->id.getNum()).sethero(visitor))); //we don't need to visit it anymore
+		completeGoal(sptr(Goals::VisitObj(visitedObj->id.getNum()).sethero(visitor))); //we don't need to visit it anymore
 		//TODO: what if we visited one-time visitable object that was reserved by another hero (shouldn't, but..)
 		if (visitedObj->ID == Obj::HERO)
 		{
@@ -1013,7 +1013,7 @@ void VCAI::performObjectInteraction(const CGObjectInstance * obj, HeroPtr h)
 		}
 		break;
 	}
-	completeGoal(sptr(Goals::GetObj(obj->id.getNum()).sethero(h)));
+	completeGoal(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h)));
 }
 
 void VCAI::moveCreaturesToHero(const CGTownInstance * t)
@@ -1464,7 +1464,7 @@ void VCAI::wander(HeroPtr h)
 			Goals::TGoalVec targetObjectGoals;
 			for(auto destination : dests)
 			{
-				targetObjectGoals.push_back(sptr(Goals::GetObj(destination.id.getNum()).sethero(h).setisAbstract(true)));
+				targetObjectGoals.push_back(sptr(Goals::VisitObj(destination.id.getNum()).sethero(h).setisAbstract(true)));
 			}
 			auto bestObjectGoal = fh->chooseSolution(targetObjectGoals);
 			decomposeGoal(bestObjectGoal)->accept(this);
@@ -2002,7 +2002,7 @@ void VCAI::tryRealize(Goals::VisitTile & g)
 	}
 }
 
-void VCAI::tryRealize(Goals::GetObj & g)
+void VCAI::tryRealize(Goals::VisitObj & g)
 {
 	auto position = g.tile;
 	if(!g.hero->movement)
@@ -2374,7 +2374,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(hero))
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero));
+					return sptr(Goals::VisitObj(q.obj->id.getNum()).sethero(hero));
 				}
 			}
 			for (auto art : q.quest->m5arts)
@@ -2390,7 +2390,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(hero))
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero));
+					return sptr(Goals::VisitObj(q.obj->id.getNum()).sethero(hero));
 				}
 			}
 			return sptr(Goals::FindObj(Obj::PRISON)); //rule of a thumb - quest heroes usually are locked in prisons
@@ -2403,7 +2403,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(hero)) //very bad info - stacks can be split between multiple heroes :(
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero));
+					return sptr(Goals::VisitObj(q.obj->id.getNum()).sethero(hero));
 				}
 			}
 			for (auto creature : q.quest->m6creatures)
@@ -2420,7 +2420,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(heroes.front())) //it doesn't matter which hero it is
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()));
+					return sptr(Goals::VisitObj(q.obj->id.getNum()));
 				}
 				else
 				{
@@ -2440,9 +2440,9 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 		{
 			auto obj = cb->getObjByQuestIdentifier(q.quest->m13489val);
 			if (obj)
-				return sptr(Goals::GetObj(obj->id.getNum()));
+				return sptr(Goals::VisitObj(obj->id.getNum()));
 			else
-				return sptr(Goals::GetObj(q.obj->id.getNum())); //visit seer hut
+				return sptr(Goals::VisitObj(q.obj->id.getNum())); //visit seer hut
 			break;
 		}
 		case CQuest::MISSION_PRIMARY_STAT:
@@ -2452,7 +2452,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(hero))
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero));
+					return sptr(Goals::VisitObj(q.obj->id.getNum()).sethero(hero));
 				}
 			}
 			for (int i = 0; i < q.quest->m2stats.size(); ++i)
@@ -2468,7 +2468,7 @@ Goals::TSubgoal VCAI::questToGoal(const QuestInfo & q)
 			{
 				if (q.quest->checkQuest(hero))
 				{
-					return sptr(Goals::GetObj(q.obj->id.getNum()).sethero(hero)); //TODO: causes infinite loop :/
+					return sptr(Goals::VisitObj(q.obj->id.getNum()).sethero(hero)); //TODO: causes infinite loop :/
 				}
 			}
 			logAi->debug("Don't know how to reach hero level %d", q.quest->m13489val);

+ 2 - 2
AI/VCAI/VCAI.h

@@ -121,7 +121,7 @@ public:
 	void tryRealize(Goals::Explore & g);
 	void tryRealize(Goals::RecruitHero & g);
 	void tryRealize(Goals::VisitTile & g);
-	void tryRealize(Goals::GetObj & g);
+	void tryRealize(Goals::VisitObj & g);
 	void tryRealize(Goals::VisitHero & g);
 	void tryRealize(Goals::BuildThis & g);
 	void tryRealize(Goals::DigAtTile & g);
@@ -285,7 +285,7 @@ public:
 		h.template registerType<Goals::AbstractGoal, Goals::GatherArmy>();
 		h.template registerType<Goals::AbstractGoal, Goals::GatherTroops>();
 		h.template registerType<Goals::AbstractGoal, Goals::GetArtOfType>();
-		h.template registerType<Goals::AbstractGoal, Goals::GetObj>();
+		h.template registerType<Goals::AbstractGoal, Goals::VisitObj>();
 		h.template registerType<Goals::AbstractGoal, Goals::Invalid>();
 		//h.template registerType<Goals::AbstractGoal, Goals::NotLose>();
 		h.template registerType<Goals::AbstractGoal, Goals::RecruitHero>();