From 3799ffd9d517aa19d41c5195cf52a3ddc29f7f72 Mon Sep 17 00:00:00 2001 From: ANAND Date: Sun, 29 Sep 2019 17:11:13 +0530 Subject: Move Quicktune code to util/ (#8871) --- src/CMakeLists.txt | 3 +- src/client/game.cpp | 2 +- src/main.cpp | 2 +- src/quicktune.cpp | 104 --------------------------------------- src/quicktune.h | 98 ------------------------------------ src/quicktune_shortcutter.h | 84 ------------------------------- src/util/CMakeLists.txt | 2 +- src/util/quicktune.cpp | 104 +++++++++++++++++++++++++++++++++++++++ src/util/quicktune.h | 98 ++++++++++++++++++++++++++++++++++++ src/util/quicktune_shortcutter.h | 84 +++++++++++++++++++++++++++++++ 10 files changed, 290 insertions(+), 291 deletions(-) delete mode 100644 src/quicktune.cpp delete mode 100644 src/quicktune.h delete mode 100644 src/quicktune_shortcutter.h create mode 100644 src/util/quicktune.cpp create mode 100644 src/util/quicktune.h create mode 100644 src/util/quicktune_shortcutter.h (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ebf5b2871..70a5ab3c8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -406,7 +406,6 @@ set(common_SRCS player.cpp porting.cpp profiler.cpp - quicktune.cpp raycast.cpp reflowscan.cpp remoteplayer.cpp @@ -739,7 +738,7 @@ if(WIN32) if(VCPKG_APPLOCAL_DEPS) # Collect the dll's from the output path install(DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/Release/ - DESTINATION ${BINDIR} + DESTINATION ${BINDIR} CONFIGURATIONS Release FILES_MATCHING PATTERN "*.dll") install(DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/Debug/ diff --git a/src/client/game.cpp b/src/client/game.cpp index fb2a81973..028d2d3bd 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -55,7 +55,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "particles.h" #include "porting.h" #include "profiler.h" -#include "quicktune_shortcutter.h" #include "raycast.h" #include "server.h" #include "settings.h" @@ -65,6 +64,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "util/basic_macros.h" #include "util/directiontables.h" #include "util/pointedthing.h" +#include "util/quicktune_shortcutter.h" #include "irrlicht_changes/static_text.h" #include "version.h" #include "script/scripting_client.h" diff --git a/src/main.cpp b/src/main.cpp index 6323fa50e..4629f92ce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,7 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "defaultsettings.h" #include "gettext.h" #include "log.h" -#include "quicktune.h" +#include "util/quicktune.h" #include "httpfetch.h" #include "gameparams.h" #include "database/database.h" diff --git a/src/quicktune.cpp b/src/quicktune.cpp deleted file mode 100644 index 37d4933de..000000000 --- a/src/quicktune.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* -Minetest -Copyright (C) 2013 celeron55, Perttu Ahola - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include "quicktune.h" -#include "threading/mutex_auto_lock.h" -#include "util/string.h" - -std::string QuicktuneValue::getString() -{ - switch(type){ - case QVT_NONE: - return "(none)"; - case QVT_FLOAT: - return ftos(value_QVT_FLOAT.current); - } - return ""; -} -void QuicktuneValue::relativeAdd(float amount) -{ - switch(type){ - case QVT_NONE: - break; - case QVT_FLOAT: - value_QVT_FLOAT.current += amount * (value_QVT_FLOAT.max - value_QVT_FLOAT.min); - if(value_QVT_FLOAT.current > value_QVT_FLOAT.max) - value_QVT_FLOAT.current = value_QVT_FLOAT.max; - if(value_QVT_FLOAT.current < value_QVT_FLOAT.min) - value_QVT_FLOAT.current = value_QVT_FLOAT.min; - break; - } -} - -static std::map g_values; -static std::vector g_names; -std::mutex *g_mutex = NULL; - -static void makeMutex() -{ - if(!g_mutex){ - g_mutex = new std::mutex(); - } -} - -std::vector getQuicktuneNames() -{ - return g_names; -} - -QuicktuneValue getQuicktuneValue(const std::string &name) -{ - makeMutex(); - MutexAutoLock lock(*g_mutex); - std::map::iterator i = g_values.find(name); - if(i == g_values.end()){ - QuicktuneValue val; - val.type = QVT_NONE; - return val; - } - return i->second; -} - -void setQuicktuneValue(const std::string &name, const QuicktuneValue &val) -{ - makeMutex(); - MutexAutoLock lock(*g_mutex); - g_values[name] = val; - g_values[name].modified = true; -} - -void updateQuicktuneValue(const std::string &name, QuicktuneValue &val) -{ - makeMutex(); - MutexAutoLock lock(*g_mutex); - std::map::iterator i = g_values.find(name); - if(i == g_values.end()){ - g_values[name] = val; - g_names.push_back(name); - return; - } - QuicktuneValue &ref = i->second; - if(ref.modified) - val = ref; - else{ - ref = val; - ref.modified = false; - } -} - diff --git a/src/quicktune.h b/src/quicktune.h deleted file mode 100644 index 1943d19c2..000000000 --- a/src/quicktune.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -Minetest -Copyright (C) 2013 celeron55, Perttu Ahola - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -/* - Used for tuning constants when developing. - - Eg. if you have this constant somewhere that you just can't get right - by changing it and recompiling all over again: - v3f wield_position = v3f(55, -35, 65); - - Make it look like this: - v3f wield_position = v3f(55, -35, 65); - QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.X, 0, 100); - QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Y, -80, 20); - QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Z, 0, 100); - - Then you can modify the values at runtime, using the keys - keymap_quicktune_prev - keymap_quicktune_next - keymap_quicktune_dec - keymap_quicktune_inc - - Once you have modified the values at runtime and then quit, the game - will print out all the modified values at the end: - Modified quicktune values: - wield_position.X = 60 - wield_position.Y = -30 - wield_position.Z = 65 - - The QUICKTUNE macros shouldn't generally be left in committed code. -*/ - -#pragma once - -#include -#include -#include - -enum QuicktuneValueType{ - QVT_NONE, - QVT_FLOAT -}; -struct QuicktuneValue -{ - QuicktuneValueType type = QVT_NONE; - union{ - struct{ - float current; - float min; - float max; - } value_QVT_FLOAT; - }; - bool modified = false; - - QuicktuneValue() = default; - - std::string getString(); - void relativeAdd(float amount); -}; - -std::vector getQuicktuneNames(); -QuicktuneValue getQuicktuneValue(const std::string &name); -void setQuicktuneValue(const std::string &name, const QuicktuneValue &val); - -void updateQuicktuneValue(const std::string &name, QuicktuneValue &val); - -#ifndef NDEBUG - #define QUICKTUNE(type_, var, min_, max_, name){\ - QuicktuneValue qv;\ - qv.type = type_;\ - qv.value_##type_.current = var;\ - qv.value_##type_.min = min_;\ - qv.value_##type_.max = max_;\ - updateQuicktuneValue(name, qv);\ - var = qv.value_##type_.current;\ - } -#else // NDEBUG - #define QUICKTUNE(type, var, min_, max_, name){} -#endif - -#define QUICKTUNE_AUTONAME(type_, var, min_, max_)\ - QUICKTUNE(type_, var, min_, max_, #var) diff --git a/src/quicktune_shortcutter.h b/src/quicktune_shortcutter.h deleted file mode 100644 index 70a7b70b3..000000000 --- a/src/quicktune_shortcutter.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -Minetest -Copyright (C) 2013 celeron55, Perttu Ahola - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#pragma once - -#include "quicktune.h" - -class QuicktuneShortcutter -{ -private: - std::vector m_names; - u32 m_selected_i; - std::string m_message; -public: - bool hasMessage() const - { - return !m_message.empty(); - } - - std::string getMessage() - { - std::string s = m_message; - m_message = ""; - if (!s.empty()) - return std::string("[quicktune] ") + s; - return ""; - } - std::string getSelectedName() - { - if(m_selected_i < m_names.size()) - return m_names[m_selected_i]; - return "(nothing)"; - } - void next() - { - m_names = getQuicktuneNames(); - if(m_selected_i < m_names.size()-1) - m_selected_i++; - else - m_selected_i = 0; - m_message = std::string("Selected \"")+getSelectedName()+"\""; - } - void prev() - { - m_names = getQuicktuneNames(); - if(m_selected_i > 0) - m_selected_i--; - else - m_selected_i = m_names.size()-1; - m_message = std::string("Selected \"")+getSelectedName()+"\""; - } - void inc() - { - QuicktuneValue val = getQuicktuneValue(getSelectedName()); - val.relativeAdd(0.05); - m_message = std::string("\"")+getSelectedName() - +"\" = "+val.getString(); - setQuicktuneValue(getSelectedName(), val); - } - void dec() - { - QuicktuneValue val = getQuicktuneValue(getSelectedName()); - val.relativeAdd(-0.05); - m_message = std::string("\"")+getSelectedName() - +"\" = "+val.getString(); - setQuicktuneValue(getSelectedName(), val); - } -}; diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index bf208693b..199d3aeaa 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -7,6 +7,7 @@ set(UTIL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/ieee_float.cpp ${CMAKE_CURRENT_SOURCE_DIR}/numeric.cpp ${CMAKE_CURRENT_SOURCE_DIR}/pointedthing.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/quicktune.cpp ${CMAKE_CURRENT_SOURCE_DIR}/serialize.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sha1.cpp ${CMAKE_CURRENT_SOURCE_DIR}/sha256.c @@ -14,4 +15,3 @@ set(UTIL_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/srp.cpp ${CMAKE_CURRENT_SOURCE_DIR}/timetaker.cpp PARENT_SCOPE) - diff --git a/src/util/quicktune.cpp b/src/util/quicktune.cpp new file mode 100644 index 000000000..37d4933de --- /dev/null +++ b/src/util/quicktune.cpp @@ -0,0 +1,104 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "quicktune.h" +#include "threading/mutex_auto_lock.h" +#include "util/string.h" + +std::string QuicktuneValue::getString() +{ + switch(type){ + case QVT_NONE: + return "(none)"; + case QVT_FLOAT: + return ftos(value_QVT_FLOAT.current); + } + return ""; +} +void QuicktuneValue::relativeAdd(float amount) +{ + switch(type){ + case QVT_NONE: + break; + case QVT_FLOAT: + value_QVT_FLOAT.current += amount * (value_QVT_FLOAT.max - value_QVT_FLOAT.min); + if(value_QVT_FLOAT.current > value_QVT_FLOAT.max) + value_QVT_FLOAT.current = value_QVT_FLOAT.max; + if(value_QVT_FLOAT.current < value_QVT_FLOAT.min) + value_QVT_FLOAT.current = value_QVT_FLOAT.min; + break; + } +} + +static std::map g_values; +static std::vector g_names; +std::mutex *g_mutex = NULL; + +static void makeMutex() +{ + if(!g_mutex){ + g_mutex = new std::mutex(); + } +} + +std::vector getQuicktuneNames() +{ + return g_names; +} + +QuicktuneValue getQuicktuneValue(const std::string &name) +{ + makeMutex(); + MutexAutoLock lock(*g_mutex); + std::map::iterator i = g_values.find(name); + if(i == g_values.end()){ + QuicktuneValue val; + val.type = QVT_NONE; + return val; + } + return i->second; +} + +void setQuicktuneValue(const std::string &name, const QuicktuneValue &val) +{ + makeMutex(); + MutexAutoLock lock(*g_mutex); + g_values[name] = val; + g_values[name].modified = true; +} + +void updateQuicktuneValue(const std::string &name, QuicktuneValue &val) +{ + makeMutex(); + MutexAutoLock lock(*g_mutex); + std::map::iterator i = g_values.find(name); + if(i == g_values.end()){ + g_values[name] = val; + g_names.push_back(name); + return; + } + QuicktuneValue &ref = i->second; + if(ref.modified) + val = ref; + else{ + ref = val; + ref.modified = false; + } +} + diff --git a/src/util/quicktune.h b/src/util/quicktune.h new file mode 100644 index 000000000..1943d19c2 --- /dev/null +++ b/src/util/quicktune.h @@ -0,0 +1,98 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +/* + Used for tuning constants when developing. + + Eg. if you have this constant somewhere that you just can't get right + by changing it and recompiling all over again: + v3f wield_position = v3f(55, -35, 65); + + Make it look like this: + v3f wield_position = v3f(55, -35, 65); + QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.X, 0, 100); + QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Y, -80, 20); + QUICKTUNE_AUTONAME(QVT_FLOAT, wield_position.Z, 0, 100); + + Then you can modify the values at runtime, using the keys + keymap_quicktune_prev + keymap_quicktune_next + keymap_quicktune_dec + keymap_quicktune_inc + + Once you have modified the values at runtime and then quit, the game + will print out all the modified values at the end: + Modified quicktune values: + wield_position.X = 60 + wield_position.Y = -30 + wield_position.Z = 65 + + The QUICKTUNE macros shouldn't generally be left in committed code. +*/ + +#pragma once + +#include +#include +#include + +enum QuicktuneValueType{ + QVT_NONE, + QVT_FLOAT +}; +struct QuicktuneValue +{ + QuicktuneValueType type = QVT_NONE; + union{ + struct{ + float current; + float min; + float max; + } value_QVT_FLOAT; + }; + bool modified = false; + + QuicktuneValue() = default; + + std::string getString(); + void relativeAdd(float amount); +}; + +std::vector getQuicktuneNames(); +QuicktuneValue getQuicktuneValue(const std::string &name); +void setQuicktuneValue(const std::string &name, const QuicktuneValue &val); + +void updateQuicktuneValue(const std::string &name, QuicktuneValue &val); + +#ifndef NDEBUG + #define QUICKTUNE(type_, var, min_, max_, name){\ + QuicktuneValue qv;\ + qv.type = type_;\ + qv.value_##type_.current = var;\ + qv.value_##type_.min = min_;\ + qv.value_##type_.max = max_;\ + updateQuicktuneValue(name, qv);\ + var = qv.value_##type_.current;\ + } +#else // NDEBUG + #define QUICKTUNE(type, var, min_, max_, name){} +#endif + +#define QUICKTUNE_AUTONAME(type_, var, min_, max_)\ + QUICKTUNE(type_, var, min_, max_, #var) diff --git a/src/util/quicktune_shortcutter.h b/src/util/quicktune_shortcutter.h new file mode 100644 index 000000000..70a7b70b3 --- /dev/null +++ b/src/util/quicktune_shortcutter.h @@ -0,0 +1,84 @@ +/* +Minetest +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#pragma once + +#include "quicktune.h" + +class QuicktuneShortcutter +{ +private: + std::vector m_names; + u32 m_selected_i; + std::string m_message; +public: + bool hasMessage() const + { + return !m_message.empty(); + } + + std::string getMessage() + { + std::string s = m_message; + m_message = ""; + if (!s.empty()) + return std::string("[quicktune] ") + s; + return ""; + } + std::string getSelectedName() + { + if(m_selected_i < m_names.size()) + return m_names[m_selected_i]; + return "(nothing)"; + } + void next() + { + m_names = getQuicktuneNames(); + if(m_selected_i < m_names.size()-1) + m_selected_i++; + else + m_selected_i = 0; + m_message = std::string("Selected \"")+getSelectedName()+"\""; + } + void prev() + { + m_names = getQuicktuneNames(); + if(m_selected_i > 0) + m_selected_i--; + else + m_selected_i = m_names.size()-1; + m_message = std::string("Selected \"")+getSelectedName()+"\""; + } + void inc() + { + QuicktuneValue val = getQuicktuneValue(getSelectedName()); + val.relativeAdd(0.05); + m_message = std::string("\"")+getSelectedName() + +"\" = "+val.getString(); + setQuicktuneValue(getSelectedName(), val); + } + void dec() + { + QuicktuneValue val = getQuicktuneValue(getSelectedName()); + val.relativeAdd(-0.05); + m_message = std::string("\"")+getSelectedName() + +"\" = "+val.getString(); + setQuicktuneValue(getSelectedName(), val); + } +}; -- cgit v1.2.3