2018-12-01 10:30:37 +02:00
|
|
|
/*
|
|
|
|
* Explore.h, 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
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "CGoal.h"
|
|
|
|
|
|
|
|
struct HeroPtr;
|
|
|
|
class VCAI;
|
|
|
|
class FuzzyHelper;
|
|
|
|
|
|
|
|
namespace Goals
|
|
|
|
{
|
2019-01-14 13:20:46 +02:00
|
|
|
struct ExplorationHelper;
|
|
|
|
|
2018-12-01 10:30:37 +02:00
|
|
|
class DLL_EXPORT Explore : public CGoal<Explore>
|
|
|
|
{
|
2019-01-02 22:51:26 +02:00
|
|
|
private:
|
|
|
|
bool allowGatherArmy;
|
|
|
|
|
2018-12-01 10:30:37 +02:00
|
|
|
public:
|
2019-01-02 22:51:26 +02:00
|
|
|
Explore(bool allowGatherArmy)
|
|
|
|
: CGoal(Goals::EXPLORE), allowGatherArmy(allowGatherArmy)
|
2018-12-01 10:30:37 +02:00
|
|
|
{
|
|
|
|
priority = 1;
|
|
|
|
}
|
2019-01-02 22:51:26 +02:00
|
|
|
|
|
|
|
Explore()
|
|
|
|
: Explore(true)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2018-12-01 10:30:37 +02:00
|
|
|
Explore(HeroPtr h)
|
|
|
|
: CGoal(Goals::EXPLORE)
|
|
|
|
{
|
|
|
|
hero = h;
|
|
|
|
priority = 1;
|
|
|
|
}
|
|
|
|
TGoalVec getAllPossibleSubgoals() override;
|
|
|
|
TSubgoal whatToDoToAchieve() override;
|
|
|
|
std::string completeMessage() const override;
|
|
|
|
bool fulfillsMe(TSubgoal goal) override;
|
|
|
|
virtual bool operator==(const Explore & other) const override;
|
2018-12-24 15:19:04 +02:00
|
|
|
|
|
|
|
private:
|
2019-01-02 22:51:26 +02:00
|
|
|
TSubgoal exploreNearestNeighbour(HeroPtr h) const;
|
2018-12-24 15:19:04 +02:00
|
|
|
TSubgoal explorationNewPoint(HeroPtr h) const;
|
2019-01-14 13:20:46 +02:00
|
|
|
TSubgoal explorationBestNeighbour(int3 hpos, HeroPtr h) const;
|
|
|
|
void explorationScanTile(const int3 & tile, ExplorationHelper & scanResult) const;
|
2018-12-24 15:19:04 +02:00
|
|
|
bool hasReachableNeighbor(const int3 &pos, HeroPtr hero, CCallback * cbp, VCAI * vcai) const;
|
2018-12-29 15:55:20 +02:00
|
|
|
|
|
|
|
void getVisibleNeighbours(
|
2019-01-15 05:00:00 +02:00
|
|
|
const std::vector<int3> & tiles,
|
|
|
|
std::vector<int3> & out,
|
|
|
|
CCallback * cbp,
|
2018-12-29 15:55:20 +02:00
|
|
|
const TeamState * ts) const;
|
|
|
|
|
2019-01-14 13:20:46 +02:00
|
|
|
int howManyTilesWillBeDiscovered(const int3 & pos, ExplorationHelper & scanResult) const;
|
2018-12-01 10:30:37 +02:00
|
|
|
};
|
|
|
|
}
|