Skip to content
This repository was archived by the owner on Sep 6, 2023. It is now read-only.

Commit c732242

Browse files
simulator default config + refactor
1 parent 81195e9 commit c732242

12 files changed

Lines changed: 75 additions & 59 deletions

src/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ project(OpenFunscripter)
33
set(OPEN_FUNSCRIPTER_SOURCES
44
"main.cpp"
55
"OpenFunscripter.cpp"
6-
"ScriptingMode.cpp"
6+
"OFS_ScriptingMode.cpp"
77
"OFS_Project.cpp"
88

99
"Funscript/OFS_ScriptSettings.cpp"
1010

11-
"UI/OpenFunscripterSettings.cpp"
12-
"UI/ScriptSimulator.cpp"
13-
"UI/SpecialFunctions.cpp"
11+
"UI/OFS_Settings.cpp"
12+
"UI/OFS_ScriptSimulator.cpp"
13+
"UI/OFS_SpecialFunctions.cpp"
1414
"UI/OFS_ScriptPositionsOverlays.cpp"
1515
"UI/OFS_DownloadFfmpeg.cpp"
1616

src/OFS_Project.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include "OFS_BinarySerialization.h"
33
#include "OFS_ScriptSettings.h"
44
#include "Funscript.h"
5-
#include "ScriptSimulator.h"
5+
#include "OFS_ScriptSimulator.h"
66

77
#include <vector>
88

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#include "ScriptingMode.h"
2-
31
#include "OpenFunscripter.h"
2+
#include "OFS_ScriptingMode.h"
43
#include "OFS_Util.h"
54
#include "OFS_Profiling.h"
65

src/OpenFunscripter.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
#include "imgui_impl_opengl3.h"
1919

2020
#include "ImGuizmo.h"
21-
2221
#include "asap.h"
23-
2422
#include "glad/gl.h"
2523

2624
// FIX: Add type checking to the deserialization. It does crash if a field type doesn't match.
@@ -136,7 +134,7 @@ bool OpenFunscripter::setup(int argc, char* argv[])
136134
auto prefPath = Util::Prefpath("");
137135
Util::CreateDirectories(prefPath);
138136

139-
settings = std::make_unique<OpenFunscripterSettings>(Util::Prefpath("config.json"));
137+
settings = std::make_unique<OFS_Settings>(Util::Prefpath("config.json"));
140138

141139
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_GAMECONTROLLER) != 0) {
142140
LOGF_ERROR("Error: %s\n", SDL_GetError());
@@ -1531,9 +1529,8 @@ void OpenFunscripter::MpvVideoLoaded(SDL_Event& ev) noexcept
15311529

15321530
Status |= OFS_Status::OFS_GradientNeedsUpdate;
15331531
const char* VideoName = (const char*)ev.user.data1;
1534-
if (VideoName)
1535-
{
1536-
auto recentFile = OpenFunscripterSettings::RecentFile{ LoadedProject->Metadata.title, LoadedProject->LastPath };
1532+
if (VideoName) {
1533+
auto recentFile = OFS_Settings::RecentFile{ LoadedProject->Metadata.title, LoadedProject->LastPath };
15371534
settings->addRecentFile(recentFile);
15381535
scriptPositions.ClearAudioWaveform();
15391536
}

src/OpenFunscripter.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#pragma once
2-
#include "ScriptingMode.h"
2+
#include "OFS_ScriptingMode.h"
33
#include "KeybindingSystem.h"
4-
#include "OpenFunscripterSettings.h"
4+
#include "OFS_Settings.h"
55
#include "OFS_ScriptTimeline.h"
66
#include "OFS_Videoplayer.h"
77
#include "OFS_UndoSystem.h"
88
#include "EventSystem.h"
9-
#include "ScriptSimulator.h"
9+
#include "OFS_ScriptSimulator.h"
1010
#include "OFS_ControllerInput.h"
1111
#include "GradientBar.h"
12-
#include "SpecialFunctions.h"
12+
#include "OFS_SpecialFunctions.h"
1313
#include "OFS_Events.h"
1414
#include "OFS_VideoplayerControls.h"
1515
#include "OFS_TCode.h"
@@ -144,7 +144,7 @@ class OpenFunscripter {
144144
std::unique_ptr<ScriptingMode> scripting;
145145
std::unique_ptr<EventSystem> events;
146146
std::unique_ptr<ControllerInput> controllerInput;
147-
std::unique_ptr<OpenFunscripterSettings> settings;
147+
std::unique_ptr<OFS_Settings> settings;
148148
std::unique_ptr<UndoSystem> undoSystem;
149149
std::unique_ptr<OFS_LuaExtensions> extensions;
150150

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#include "ScriptSimulator.h"
2-
#include "OFS_ImGui.h"
31
#include "OpenFunscripter.h"
2+
#include "OFS_ScriptSimulator.h"
3+
#include "OFS_ImGui.h"
44
#include "imgui.h"
55
#include "imgui_internal.h"
66
#include "stb_sprintf.h"
@@ -137,7 +137,7 @@ void ScriptSimulator::ShowSimulator(bool* open)
137137
ImVec2 canvasSize = ImGui::GetContentRegionAvail();
138138
auto& style = ImGui::GetStyle();
139139

140-
140+
ImGui::Checkbox(simulator.LockedPosition ? "Lock " ICON_LINK : "Lock " ICON_UNLINK, &simulator.LockedPosition);
141141
ImGui::Columns(2, 0, false);
142142
if (ImGui::Button("Center", ImVec2(-1.f, 0.f))) { CenterSimulator(); }
143143
ImGui::NextColumn();
@@ -147,8 +147,25 @@ void ScriptSimulator::ShowSimulator(bool* open)
147147
simulator.P2 = tmp;
148148
}
149149
ImGui::Columns(1);
150-
ImGui::Checkbox(simulator.LockedPosition ? "Lock " ICON_LINK : "Lock " ICON_UNLINK, &simulator.LockedPosition);
151150

151+
ImGui::Columns(2, 0, false);
152+
if (ImGui::Button("Load config", ImVec2(-1.f, 0.f))) {
153+
simulator = app->settings->data().defaultSimulatorConfig;
154+
}
155+
ImGui::NextColumn();
156+
if (ImGui::Button("Save config", ImVec2(-1.f, 0.f))) {
157+
Util::YesNoCancelDialog("Save simulator configuration",
158+
"Do you want do save the current config?\n"
159+
"This will override any existing default config.",
160+
[this](Util::YesNoCancel result) {
161+
if(result == Util::YesNoCancel::Yes) {
162+
auto app = OpenFunscripter::ptr;
163+
app->settings->data().defaultSimulatorConfig = simulator;
164+
}
165+
}
166+
);
167+
}
168+
ImGui::Columns(1);
152169
if (ImGui::CollapsingHeader("Configuration", ImGuiTreeNodeFlags_SpanAvailWidth)) {
153170
ImGui::ColorEdit4("Text", &simulator.Text.Value.x);
154171
ImGui::ColorEdit4("Border", &simulator.Border.Value.x);
@@ -179,12 +196,13 @@ void ScriptSimulator::ShowSimulator(bool* open)
179196
simulator.ExtraLinesCount = Util::Clamp(simulator.ExtraLinesCount, 0, 10);
180197
}
181198
ImGui::Checkbox("Show position", &simulator.EnablePosition);
199+
ImGui::Checkbox("Vanilla", &EnableVanilla);
200+
OFS::Tooltip("The original simulator from day one.");
201+
if(ImGui::Button("Reset to defaults", ImVec2(-1.f, 0.f))) {
202+
simulator = SimulatorSettings();
203+
}
182204
}
183205

184-
if (ImGui::Button("Vanilla")) {
185-
EnableVanilla = true;
186-
}
187-
OFS::Tooltip("Switch to vanilla simulator.");
188206

189207
// Because the simulator is always drawn on top
190208
// we don't draw if there is a popup modal
Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,28 @@ class ScriptSimulator {
4444
bool EnableHeightLines = true;
4545
bool LockedPosition = false;
4646

47-
//template <class Archive>
48-
//inline void reflect(Archive& ar)
49-
//{
50-
// OFS_REFLECT(P1, ar);
51-
// OFS_REFLECT(P2, ar);
52-
// OFS_REFLECT(Width, ar);
53-
// OFS_REFLECT(BorderWidth, ar);
54-
// OFS_REFLECT(LineWidth, ar);
55-
// OFS_REFLECT(ExtraLineWidth, ar);
56-
// OFS_REFLECT(Text, ar);
57-
// OFS_REFLECT(Front, ar);
58-
// OFS_REFLECT(Back, ar);
59-
// OFS_REFLECT(Border, ar);
60-
// OFS_REFLECT(ExtraLines, ar);
61-
// OFS_REFLECT(Indicator, ar);
62-
// OFS_REFLECT(GlobalOpacity, ar);
63-
// OFS_REFLECT(EnableIndicators, ar);
64-
// OFS_REFLECT(EnablePosition, ar);
65-
// OFS_REFLECT(EnableHeightLines, ar);
66-
// OFS_REFLECT(ExtraLinesCount, ar);
67-
// OFS_REFLECT(LockedPosition, ar);
68-
//}
47+
template <class Archive>
48+
inline void reflect(Archive& ar)
49+
{
50+
OFS_REFLECT(P1, ar);
51+
OFS_REFLECT(P2, ar);
52+
OFS_REFLECT(Width, ar);
53+
OFS_REFLECT(BorderWidth, ar);
54+
OFS_REFLECT(LineWidth, ar);
55+
OFS_REFLECT(ExtraLineWidth, ar);
56+
OFS_REFLECT(Text, ar);
57+
OFS_REFLECT(Front, ar);
58+
OFS_REFLECT(Back, ar);
59+
OFS_REFLECT(Border, ar);
60+
OFS_REFLECT(ExtraLines, ar);
61+
OFS_REFLECT(Indicator, ar);
62+
OFS_REFLECT(GlobalOpacity, ar);
63+
OFS_REFLECT(EnableIndicators, ar);
64+
OFS_REFLECT(EnablePosition, ar);
65+
OFS_REFLECT(EnableHeightLines, ar);
66+
OFS_REFLECT(ExtraLinesCount, ar);
67+
OFS_REFLECT(LockedPosition, ar);
68+
}
6969

7070
template<typename S>
7171
void serialize(S& s) {
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "OpenFunscripterSettings.h"
1+
#include "OFS_Settings.h"
22
#include "OFS_Util.h"
33
#include "OpenFunscripter.h"
44

@@ -8,7 +8,7 @@
88
#include "imgui.h"
99
#include "imgui_stdlib.h"
1010

11-
OpenFunscripterSettings::OpenFunscripterSettings(const std::string& config)
11+
OFS_Settings::OFS_Settings(const std::string& config) noexcept
1212
: config_path(config)
1313
{
1414
bool success = false;
@@ -26,23 +26,23 @@ OpenFunscripterSettings::OpenFunscripterSettings(const std::string& config)
2626
load_config();
2727
}
2828

29-
void OpenFunscripterSettings::save_config()
29+
void OFS_Settings::save_config()
3030
{
3131
Util::WriteJson(configObj, config_path, true);
3232
}
3333

34-
void OpenFunscripterSettings::load_config()
34+
void OFS_Settings::load_config()
3535
{
3636
OFS::serializer::load(&scripterSettings, &config());
3737
}
3838

39-
void OpenFunscripterSettings::saveSettings()
39+
void OFS_Settings::saveSettings()
4040
{
4141
OFS::serializer::save(&scripterSettings, &config());
4242
save_config();
4343
}
4444

45-
bool OpenFunscripterSettings::ShowPreferenceWindow() noexcept
45+
bool OFS_Settings::ShowPreferenceWindow() noexcept
4646
{
4747
bool save = false;
4848
if (ShowWindow)
@@ -146,7 +146,7 @@ bool OpenFunscripterSettings::ShowPreferenceWindow() noexcept
146146
return save;
147147
}
148148

149-
void OpenFunscripterSettings::SetTheme(OFS_Theme theme) noexcept
149+
void OFS_Settings::SetTheme(OFS_Theme theme) noexcept
150150
{
151151
auto& style = ImGui::GetStyle();
152152
auto& io = ImGui::GetIO();
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <vector>
77
#include <string>
88

9-
#include "ScriptSimulator.h"
9+
#include "OFS_ScriptSimulator.h"
1010

1111
#include "OFS_Reflection.h"
1212
#include "OFS_Util.h"
@@ -20,7 +20,7 @@ enum class OFS_Theme : uint32_t
2020
light
2121
};
2222
constexpr const char* CurrentSettingsVersion = "1";
23-
class OpenFunscripterSettings
23+
class OFS_Settings
2424
{
2525
public:
2626
struct RecentFile {
@@ -77,6 +77,7 @@ class OpenFunscripterSettings
7777
} heatmapSettings;
7878

7979
Funscript::Metadata defaultMetadata;
80+
ScriptSimulator::SimulatorSettings defaultSimulatorConfig;
8081

8182
std::vector<RecentFile> recentFiles;
8283
template <class Archive>
@@ -116,6 +117,7 @@ class OpenFunscripterSettings
116117
OFS_REFLECT(show_debug_log, ar);
117118
OFS_REFLECT_NAMED("SplineMode", BaseOverlay::SplineMode, ar);
118119
OFS_REFLECT_NAMED("SyncLineEnable", BaseOverlay::SyncLineEnable, ar);
120+
OFS_REFLECT(defaultSimulatorConfig, ar);
119121
}
120122
} scripterSettings;
121123

@@ -128,7 +130,7 @@ class OpenFunscripterSettings
128130
void save_config();
129131
void load_config();
130132
public:
131-
OpenFunscripterSettings(const std::string& config);
133+
OFS_Settings(const std::string& config) noexcept;
132134
ScripterSettingsData& data() noexcept { return scripterSettings; }
133135
void saveSettings();
134136

0 commit comments

Comments
 (0)