/** * vim: set ts=4 sw=4 tw=99 noet : * ====================================================== * Mini VIP * Written by Phoenix (˙·٠●Феникс●٠·˙) 2023. * ====================================================== * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License, version 3.0, as published by the * Free Software Foundation. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. */ #ifndef _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_ #define _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_ #include #include #include #include #include "igameevents.h" #include "vector.h" #include #include class Skin final : public ISmmPlugin, public IMetamodListener { public: bool Load(PluginId id, ISmmAPI* ismm, char* error, size_t maxlen, bool late); bool Unload(char* error, size_t maxlen); void NextFrame(std::function fn); private: const char* GetAuthor(); const char* GetName(); const char* GetDescription(); const char* GetURL(); const char* GetLicense(); const char* GetVersion(); const char* GetDate(); const char* GetLogTag(); private: // Hooks void StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession*, const char*); void GameFrame(bool simulating, bool bFirstTick, bool bLastTick); std::deque> m_nextFrame; }; class CPlayerSpawnEvent : public IGameEventListener2 { void FireGameEvent(IGameEvent* event) override; }; class CRoundPreStartEvent : public IGameEventListener2 { void FireGameEvent(IGameEvent* event) override; }; class CEntityListener : public IEntityListener { void OnEntitySpawned(CEntityInstance* pEntity) override; }; #endif //_INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_