mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-10 09:50:17 +02:00
2a05fbdd50
- Replaced BattleSide namespace-enum with enum class - Merged two different BattleSide enum's into one - Merged BattlePerspective enum into BattleSide enum - Changed all places that use integers to represent battle side to use BattleSide enum - Added BattleSideArray convenience wrapper for std::array that is always 2-elements in size and allows access to its elements using BattleSide enum
54 lines
949 B
C++
54 lines
949 B
C++
/*
|
|
* BattleSide.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
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
enum class BattleSide : int8_t
|
|
{
|
|
NONE = -1,
|
|
INVALID = -2,
|
|
ALL_KNOWING = -3,
|
|
|
|
ATTACKER = 0,
|
|
DEFENDER = 1,
|
|
|
|
// Aliases for convenience
|
|
LEFT_SIDE = ATTACKER,
|
|
RIGHT_SIDE = DEFENDER,
|
|
};
|
|
|
|
template<typename T>
|
|
class BattleSideArray : public std::array<T, 2>
|
|
{
|
|
public:
|
|
const T & at(BattleSide side) const
|
|
{
|
|
return std::array<T, 2>::at(static_cast<int>(side));
|
|
}
|
|
|
|
T & at(BattleSide side)
|
|
{
|
|
return std::array<T, 2>::at(static_cast<int>(side));
|
|
}
|
|
|
|
const T & operator[](BattleSide side) const
|
|
{
|
|
return std::array<T, 2>::at(static_cast<int>(side));
|
|
}
|
|
|
|
T & operator[](BattleSide side)
|
|
{
|
|
return std::array<T, 2>::at(static_cast<int>(side));
|
|
}
|
|
};
|
|
|
|
VCMI_LIB_NAMESPACE_END
|