ReachabilityInfo.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * ReachabilityInfo.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "ReachabilityInfo.h"
  12. #include "Unit.h"
  13. ReachabilityInfo::Parameters::Parameters()
  14. {
  15. perspective = BattlePerspective::ALL_KNOWING;
  16. side = 0;
  17. doubleWide = flying = false;
  18. }
  19. ReachabilityInfo::Parameters::Parameters(const battle::Unit * Stack, BattleHex StartPosition)
  20. {
  21. perspective = (BattlePerspective::BattlePerspective)(Stack->unitSide());
  22. startPosition = StartPosition;
  23. doubleWide = Stack->doubleWide();
  24. side = Stack->unitSide();
  25. flying = Stack->hasBonusOfType(Bonus::FLYING);
  26. knownAccessible = battle::Unit::getHexes(startPosition, doubleWide, side);
  27. }
  28. ReachabilityInfo::ReachabilityInfo()
  29. {
  30. distances.fill(INFINITE_DIST);
  31. predecessors.fill(BattleHex::INVALID);
  32. }
  33. bool ReachabilityInfo::isReachable(BattleHex hex) const
  34. {
  35. return distances[hex] < INFINITE_DIST;
  36. }