This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
BWMirror-Generator/bwapi4-includes/BWAPI/PositionUnit.h

46 lines
934 B
C++

#pragma once
#include <BWAPI/Position.h>
namespace BWAPI
{
class UnitInterface;
typedef UnitInterface *Unit;
/// PositionOrUnit is a class that is either a Position OR a Unit. The purpose of this class is
/// to reduce interface overhead by combining two commonly passed values into one, and to allow
/// more function overloads with little effort.
class PositionOrUnit
{
public:
// constructors
PositionOrUnit(Unit unit = nullptr);
PositionOrUnit(Position pos);
// operators
PositionOrUnit &operator =(Unit pUnit);
PositionOrUnit &operator =(Position pos);
// members (unit)
bool isUnit() const;
Unit getUnit() const;
// members (position)
bool isPosition() const;
Position getPosition() const;
private:
union
{
struct
{
int x, y;
} position;
struct
{
Unit pUnit;
int y;
} unit;
};
};
}