#pragma once #include #include #include #include namespace BWAPI { // Forward Declarations class PlayerInterface; typedef PlayerInterface* Player; class Event { public: Event() = default; ~Event(); Event(const Event& other); Event(Event&& other); Event& operator=(const Event& other); Event& operator=(Event &&other); bool operator==(const Event& other) const; static Event MatchStart(); static Event MatchEnd(bool isWinner); static Event MatchFrame(); static Event MenuFrame(); static Event SendText(const char* text = nullptr); static Event ReceiveText(Player player, const char* text = nullptr); static Event PlayerLeft(Player player); static Event NukeDetect(Position target); static Event UnitDiscover(Unit unit); static Event UnitEvade(Unit unit); static Event UnitShow(Unit unit); static Event UnitHide(Unit unit); static Event UnitCreate(Unit unit); static Event UnitDestroy(Unit unit); static Event UnitMorph(Unit unit); static Event UnitRenegade(Unit unit); static Event SaveGame(const char* gameName = nullptr); static Event UnitComplete(Unit unit); EventType::Enum getType() const; Position getPosition() const; const std::string& getText() const; Unit getUnit() const; Player getPlayer() const; bool isWinner() const; Event& setType(EventType::Enum type); Event& setPosition(Position position); Event& setText(const char* text); Event& setUnit(Unit unit); Event& setPlayer(Player player); Event& setWinner(bool isWinner); //static Event TriggerAction(); private: Position position = Positions::None; std::string* text = nullptr; Unit unit = nullptr; Player player = nullptr; EventType::Enum type = EventType::None; bool winner = false; }; }