#pragma once #include #include #include #include #include #include #include "./toxic_game_i.hpp" // TODO events: // got invite class ToxicGames : public ToxEventI { Contact3Registry& _cr; ToxI& _t; ToxEventProviderI::SubscriptionReference _tep_sr; ToxContactModel2& _tcm; std::map> _game_types; std::map>> _game_instances; public: ToxicGames( Contact3Registry& cr, ToxI& t, ToxEventProviderI& tep, ToxContactModel2& tcm ); ~ToxicGames(void) {} public: // TODO: a setup game, for configurability? void createGame(uint8_t game_type, std::vector with); // with (contact list) ? void acceptInvite(Contact3 from, uint8_t game_type, uint32_t game_id); public: // internal, for games (TODO: extract?) bool sendPacket(Contact3 to, uint8_t game_type, uint32_t game_id, const uint8_t* data, const size_t data_size); private: // tox events bool onToxEvent(const Tox_Event_Friend_Lossless_Packet* e) override; bool onToxEvent(const Tox_Event_Group_Custom_Packet* e) override; bool onToxEvent(const Tox_Event_Group_Custom_Private_Packet* e) override; };