#ifndef OPENMW_SETTINGSAPI_HPP #define OPENMW_SETTINGSAPI_HPP #include "../Types.hpp" #define SETTINGSAPI \ {"SetDifficulty", SettingFunctions::SetDifficulty},\ {"SetEnforcedLogLevel", SettingFunctions::SetEnforcedLogLevel},\ {"SetPhysicsFramerate", SettingFunctions::SetPhysicsFramerate},\ \ {"SetConsoleAllowed", SettingFunctions::SetConsoleAllowed},\ {"SetBedRestAllowed", SettingFunctions::SetBedRestAllowed},\ {"SetWildernessRestAllowed", SettingFunctions::SetWildernessRestAllowed},\ {"SetWaitAllowed", SettingFunctions::SetWaitAllowed},\ \ {"SendSettings", SettingFunctions::SendSettings} class SettingFunctions { public: /** * \brief Set the difficulty for a player. * * This changes the difficulty for that player in the server memory, but does not by itself * send a packet. * * \param pid The player ID. * \param difficulty The difficulty. * \return void */ static void SetDifficulty(unsigned short pid, int difficulty); /** * \brief Set the client log level enforced for a player. * * This changes the enforced log level for that player in the server memory, but does not by itself * send a packet. * * Enforcing a certain log level is necessary to prevent players from learning information from * their console window that they are otherwise unable to obtain, such as the locations of * other players. * * If you do not wish to enforce a log level, simply set enforcedLogLevel to -1 * * \param pid The player ID. * \param enforcedLogLevel The enforced log level. * \return void */ static void SetEnforcedLogLevel(unsigned short pid, int enforcedLogLevel); /** * \brief Set the physics framerate for a player. * * This changes the physics framerate for that player in the server memory, but does not by itself * send a packet. * * \param pid The player ID. * \param physicsFramerate The physics framerate. * \return void */ static void SetPhysicsFramerate(unsigned short pid, double physicsFramerate); /** * \brief Set whether the console is allowed for a player. * * This changes the console permission for that player in the server memory, but does not * by itself send a packet. * * \param pid The player ID. * \param state The console permission state. * \return void */ static void SetConsoleAllowed(unsigned short pid, bool state); /** * \brief Set whether resting in beds is allowed for a player. * * This changes the resting permission for that player in the server memory, but does not * by itself send a packet. * * \param pid The player ID. * \param state The resting permission state. * \return void */ static void SetBedRestAllowed(unsigned short pid, bool state); /** * \brief Set whether resting in the wilderness is allowed for a player. * * This changes the resting permission for that player in the server memory, but does not * by itself send a packet. * * \param pid The player ID. * \param state The resting permission state. * \return void */ static void SetWildernessRestAllowed(unsigned short pid, bool state); /** * \brief Set whether waiting is allowed for a player. * * This changes the waiting permission for that player in the server memory, but does not * by itself send a packet. * * \param pid The player ID. * \param state The waiting permission state. * \return void */ static void SetWaitAllowed(unsigned short pid, bool state); /** * \brief Send a PlayerSettings packet to the player affected by it. * * \param pid The player ID to send it to. * \return void */ static void SendSettings(unsigned short pid) noexcept; }; #endif //OPENMW_SETTINGSAPI_HPP