Add ability to enable developer mode in-code

This commit is contained in:
Phillip Stephens 2018-01-15 05:18:03 -08:00
parent 5c66ffc5df
commit 8cef2f5192
6 changed files with 28 additions and 17 deletions

View File

@ -70,6 +70,7 @@ ENABLE_BITWISE_ENUM(CVar::EFlags)
template<typename T> template<typename T>
class TCVar : public CVar class TCVar : public CVar
{ {
friend class CVarManager;
protected: protected:
T& m_value; T& m_value;
T m_defaultValue; T m_defaultValue;
@ -98,6 +99,7 @@ public:
class Vec3fCVar : public CVar class Vec3fCVar : public CVar
{ {
friend class CVarManager;
atVec3f& m_value; atVec3f& m_value;
atVec3f m_defaultValue; atVec3f m_defaultValue;
bool _fromString(std::string_view v); bool _fromString(std::string_view v);
@ -116,6 +118,7 @@ public:
class Vec3dCVar : public CVar class Vec3dCVar : public CVar
{ {
friend class CVarManager;
atVec3d& m_value; atVec3d& m_value;
atVec3d m_defaultValue; atVec3d m_defaultValue;
bool _fromString(std::string_view v); bool _fromString(std::string_view v);
@ -133,6 +136,7 @@ public:
class Vec4fCVar : public CVar class Vec4fCVar : public CVar
{ {
friend class CVarManager;
atVec4f& m_value; atVec4f& m_value;
atVec4f m_defaultValue; atVec4f m_defaultValue;
bool _fromString(std::string_view v); bool _fromString(std::string_view v);
@ -151,6 +155,7 @@ public:
class Vec4dCVar : public CVar class Vec4dCVar : public CVar
{ {
friend class CVarManager;
atVec4d& m_value; atVec4d& m_value;
atVec4d m_defaultValue; atVec4d m_defaultValue;
bool _fromString(std::string_view v); bool _fromString(std::string_view v);
@ -168,6 +173,7 @@ public:
class StringCVar : public CVar class StringCVar : public CVar
{ {
friend class CVarManager;
std::string& m_value; std::string& m_value;
std::string m_defaultValue; std::string m_defaultValue;
bool _fromString(std::string_view v); bool _fromString(std::string_view v);

View File

@ -100,6 +100,7 @@ public:
bool restartRequired() const; bool restartRequired() const;
void setDeveloperMode(bool v, bool setDeserialized = false);
private: private:
bool suppressDeveloper(); bool suppressDeveloper();
void restoreDeveloper(bool oldDeveloper); void restoreDeveloper(bool oldDeveloper);

View File

@ -87,7 +87,6 @@ public:
void report(Level level, const char *fmt, va_list list); void report(Level level, const char *fmt, va_list list);
void report(Level level, const char* fmt, ...); void report(Level level, const char* fmt, ...);
void init();
void proc(); void proc();
void draw(boo::IGraphicsCommandQueue* gfxQ); void draw(boo::IGraphicsCommandQueue* gfxQ);
void handleCharCode(unsigned long chr, boo::EModifierKey mod, bool repeat); void handleCharCode(unsigned long chr, boo::EModifierKey mod, bool repeat);

View File

@ -205,6 +205,16 @@ bool CVarManager::restartRequired() const
return false; return false;
} }
void CVarManager::setDeveloperMode(bool v, bool setDeserialized)
{
com_developer->unlock();
com_developer->m_value = v;
if (setDeserialized)
com_developer->m_wasDeserialized = true;
com_developer->lock();
com_developer->setModified();
}
bool CVarManager::suppressDeveloper() bool CVarManager::suppressDeveloper()
{ {
bool oldDeveloper = m_developerMode; bool oldDeveloper = m_developerMode;

View File

@ -11,6 +11,16 @@ Console::Console(CVarManager* cvarMgr)
, m_overwrite(false) , m_overwrite(false)
, m_cursorAtEnd(false) , m_cursorAtEnd(false)
{ {
m_instance = this;
registerCommand("help", "Prints information about a given function", "<command>", std::bind(&Console::help, this, std::placeholders::_1, std::placeholders::_2));
registerCommand("listCommands", "Prints a list of all available Commands", "", std::bind(&Console::listCommands, this, std::placeholders::_1, std::placeholders::_2));
registerCommand("listCVars", "Lists all available CVars", "", std::bind(&CVarManager::list, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
registerCommand("setCVar", "Sets a given Console Variable to the specified value", "<cvar> <value>", std::bind(&CVarManager::setCVar, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
registerCommand("getCVar", "Prints the value stored in the specified Console Variable", "<cvar>", std::bind(&CVarManager::getCVar, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
m_cvarMgr->findOrMakeCVar("con_speed", "Speed at which the console opens and closes, calculated as pixels per second", m_conSpeed,
hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive);
m_cvarMgr->findOrMakeCVar("con_height", "Maximum absolute height of the console, height is calculated from the top of the window, expects values ranged from [0.f,1.f]", m_conHeight,
hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive);
} }
void Console::registerCommand(std::string_view name, std::string_view helpText, std::string_view usage, const std::function<void(Console*, const std::vector<std::string> &)>&& func) void Console::registerCommand(std::string_view name, std::string_view helpText, std::string_view usage, const std::function<void(Console*, const std::vector<std::string> &)>&& func)
@ -103,20 +113,6 @@ void Console::report(Level level, const char* fmt, ...)
va_end(ap); va_end(ap);
} }
void Console::init()
{
m_instance = this;
registerCommand("help", "Prints information about a given function", "<command>", std::bind(&Console::help, this, std::placeholders::_1, std::placeholders::_2));
registerCommand("listCommands", "Prints a list of all available Commands", "", std::bind(&Console::listCommands, this, std::placeholders::_1, std::placeholders::_2));
registerCommand("listCVars", "Lists all available CVars", "", std::bind(&CVarManager::list, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
registerCommand("setCVar", "Sets a given Console Variable to the specified value", "<cvar> <value>", std::bind(&CVarManager::setCVar, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
registerCommand("getCVar", "Prints the value stored in the specified Console Variable", "<cvar>", std::bind(&CVarManager::getCVar, m_cvarMgr, std::placeholders::_1, std::placeholders::_2));
m_cvarMgr->findOrMakeCVar("con_speed", "Speed at which the console opens and closes, calculated as pixels per second", m_conSpeed,
hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive);
m_cvarMgr->findOrMakeCVar("con_height", "Maximum absolute height of the console, height is calculated from the top of the window, expects values ranged from [0.f,1.f]", m_conHeight,
hecl::CVar::EFlags::System | hecl::CVar::EFlags::Archive);
}
void Console::proc() void Console::proc()
{ {
if (m_state == State::Opened) if (m_state == State::Opened)

View File

@ -62,14 +62,13 @@ struct HECLApplicationCallback : boo::IApplicationCallback
m_cvarManager(m_fileStoreMgr), m_cvarManager(m_fileStoreMgr),
m_console(&m_cvarManager) m_console(&m_cvarManager)
{ {
m_console.registerCommand("quit"sv, "Quits application"sv, "", std::bind(&HECLApplicationCallback::quit, this, std::placeholders::_1, std::placeholders::_2));
} }
virtual ~HECLApplicationCallback(); virtual ~HECLApplicationCallback();
int appMain(boo::IApplication* app) int appMain(boo::IApplication* app)
{ {
m_console.init();
m_console.registerCommand("quit"sv, "Quits application"sv, "", std::bind(&HECLApplicationCallback::quit, this, std::placeholders::_1, std::placeholders::_2));
hecl::VerbosityLevel = 2; hecl::VerbosityLevel = 2;
/* Setup boo window */ /* Setup boo window */