#pragma once #include #include #include //#include //enum class Contact4 : uint32_t {}; // fwd class ToxicGames; // static state/info + dynamic factory struct ToxicGameI { ToxicGames& _tg; ToxicGameI(ToxicGames& tg) : _tg(tg) {} virtual ~ToxicGameI(void) {} struct InstanceI { uint32_t _id; virtual ~InstanceI(void) {} // TODO: just destructor? // needs to send quit to peers? virtual void quit(void) = 0; // use state instead? // toxic game states: // - none // - paused // - running // - finished // - invalid virtual bool allInvitesAccepted(void) = 0; // TODO: contact virtual void onPacket(uint32_t from, const uint8_t* data, const uint32_t data_size) = 0; // ?? //virtual void tick(); }; virtual uint8_t getGameType(void) const = 0; // with (contact list, (in turn order?)) // sends out invites virtual std::unique_ptr createGame(std::vector with) = 0; // from // game id // with (contact list) virtual std::unique_ptr acceptInvite(uint32_t from, uint32_t id) = 0; };