2017-06-24 15:51:07 +02:00
|
|
|
/*
|
|
|
|
* AccessibilityInfo.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 "BattleHex.h"
|
|
|
|
|
|
|
|
class CStack;
|
|
|
|
|
|
|
|
//Accessibility is property of hex in battle. It doesn't depend on stack, side's perspective and so on.
|
2017-06-26 18:50:35 +02:00
|
|
|
enum class EAccessibility
|
2017-06-24 15:51:07 +02:00
|
|
|
{
|
|
|
|
ACCESSIBLE,
|
|
|
|
ALIVE_STACK,
|
|
|
|
OBSTACLE,
|
|
|
|
DESTRUCTIBLE_WALL,
|
|
|
|
GATE, //sieges -> gate opens only for defender stacks
|
|
|
|
UNAVAILABLE, //indestructible wall parts, special battlefields (like boat-to-boat)
|
|
|
|
SIDE_COLUMN //used for first and last columns of hexes that are unavailable but wat machines can stand there
|
|
|
|
};
|
|
|
|
|
2017-06-26 18:50:35 +02:00
|
|
|
|
|
|
|
typedef std::array<EAccessibility, GameConstants::BFIELD_SIZE> TAccessibilityArray;
|
2017-06-24 15:51:07 +02:00
|
|
|
|
|
|
|
struct DLL_LINKAGE AccessibilityInfo : TAccessibilityArray
|
|
|
|
{
|
2017-06-26 18:50:35 +02:00
|
|
|
bool occupiable(const CStack * stack, BattleHex tile) const;
|
|
|
|
bool accessible(BattleHex tile, const CStack * stack) const; //checks for both tiles if stack is double wide
|
2017-06-24 15:51:07 +02:00
|
|
|
bool accessible(BattleHex tile, bool doubleWide, bool attackerOwned) const; //checks for both tiles if stack is double wide
|
|
|
|
};
|