Compare commits
3 commits
dfd0d56ab0
...
4ea694ea6e
Author | SHA1 | Date | |
---|---|---|---|
4ea694ea6e | |||
722cc511d6 | |||
924838ecb4 |
8 changed files with 93 additions and 68 deletions
|
@ -14,16 +14,10 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#ifdef SAVETOOL_DEBUG_BUILD
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#endif
|
|
||||||
#include <mutex>
|
|
||||||
|
|
||||||
#include <Corrade/Containers/GrowableArray.h>
|
|
||||||
#include <Corrade/Utility/Debug.h>
|
#include <Corrade/Utility/Debug.h>
|
||||||
|
|
||||||
#include <Magnum/Types.h>
|
|
||||||
|
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
using Containers::Array;
|
using Containers::Array;
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#ifndef SAVETOOL_DEBUG_BUILD
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <Corrade/Containers/String.h>
|
#include <Corrade/Containers/String.h>
|
||||||
#include <Corrade/Containers/ArrayView.h>
|
#include <Corrade/Containers/ArrayView.h>
|
||||||
|
|
|
@ -167,6 +167,7 @@ SaveTool::~SaveTool() {
|
||||||
LOG_INFO("Saving the configuration.");
|
LOG_INFO("Saving the configuration.");
|
||||||
|
|
||||||
_conf.setValue("cheat_mode"_s, _cheatMode);
|
_conf.setValue("cheat_mode"_s, _cheatMode);
|
||||||
|
_conf.setValue("advanced_mode"_s, _advancedMode);
|
||||||
_conf.setValue("startup_update_check"_s, _checkUpdatesOnStartup);
|
_conf.setValue("startup_update_check"_s, _checkUpdatesOnStartup);
|
||||||
_conf.setValue("skip_disclaimer"_s, _skipDisclaimer);
|
_conf.setValue("skip_disclaimer"_s, _skipDisclaimer);
|
||||||
|
|
||||||
|
|
|
@ -291,4 +291,5 @@ class SaveTool: public Platform::Sdl2Application, public efsw::FileWatchListener
|
||||||
bool _eLaunchersDirty{false};
|
bool _eLaunchersDirty{false};
|
||||||
|
|
||||||
bool _cheatMode{false};
|
bool _cheatMode{false};
|
||||||
|
bool _advancedMode{false};
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,6 +58,13 @@ void SaveTool::initialiseConfiguration() {
|
||||||
_conf.setValue("cheat_mode"_s, _cheatMode);
|
_conf.setValue("cheat_mode"_s, _cheatMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_conf.hasValue("advanced_mode"_s)) {
|
||||||
|
_advancedMode = _conf.value<bool>("advanced_mode"_s);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_conf.setValue("advanced_mode"_s, _advancedMode);
|
||||||
|
}
|
||||||
|
|
||||||
if(_conf.hasValue("startup_update_check"_s)) {
|
if(_conf.hasValue("startup_update_check"_s)) {
|
||||||
_checkUpdatesOnStartup = _conf.value<bool>("startup_update_check"_s);
|
_checkUpdatesOnStartup = _conf.value<bool>("startup_update_check"_s);
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,9 +394,12 @@ auto SaveTool::drawCustomStyle(CustomStyle& style) -> DCSResult {
|
||||||
void SaveTool::drawDecalEditor(Decal& decal) {
|
void SaveTool::drawDecalEditor(Decal& decal) {
|
||||||
ImGui::Text("ID: %i", decal.id);
|
ImGui::Text("ID: %i", decal.id);
|
||||||
|
|
||||||
if(ImGui::BeginTable("##DecalTable", 2, ImGuiTableFlags_BordersInnerV)) {
|
if(ImGui::BeginTable("##DecalTable", _advancedMode ? 2 : 1, ImGuiTableFlags_BordersInnerV)) {
|
||||||
ImGui::TableSetupColumn("##Normal", ImGuiTableColumnFlags_WidthStretch);
|
ImGui::TableSetupColumn("##Normal", ImGuiTableColumnFlags_WidthStretch);
|
||||||
|
|
||||||
|
if(_advancedMode) {
|
||||||
ImGui::TableSetupColumn("##Advanced", ImGuiTableColumnFlags_WidthStretch);
|
ImGui::TableSetupColumn("##Advanced", ImGuiTableColumnFlags_WidthStretch);
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
|
|
||||||
|
@ -440,7 +443,7 @@ void SaveTool::drawDecalEditor(Decal& decal) {
|
||||||
ImGui::Checkbox("##Wrap", &decal.wrap);
|
ImGui::Checkbox("##Wrap", &decal.wrap);
|
||||||
ImGui::EndGroup();
|
ImGui::EndGroup();
|
||||||
|
|
||||||
|
if(_advancedMode) {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
ImGui::TextColored(ImColor(255, 255, 0), ICON_FA_EXCLAMATION_TRIANGLE);
|
ImGui::TextColored(ImColor(255, 255, 0), ICON_FA_EXCLAMATION_TRIANGLE);
|
||||||
|
@ -486,6 +489,7 @@ void SaveTool::drawDecalEditor(Decal& decal) {
|
||||||
ImGui::DragFloat("##VZ", &decal.vAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f");
|
ImGui::DragFloat("##VZ", &decal.vAxis.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f");
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
ImGui::EndGroup();
|
ImGui::EndGroup();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
|
@ -632,9 +636,13 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<C
|
||||||
|
|
||||||
ImGui::BeginGroup();
|
ImGui::BeginGroup();
|
||||||
drawAlignedText("Styles:");
|
drawAlignedText("Styles:");
|
||||||
|
if(_advancedMode) {
|
||||||
drawAlignedText("Base position:");
|
drawAlignedText("Base position:");
|
||||||
|
}
|
||||||
drawAlignedText("Position offset:");
|
drawAlignedText("Position offset:");
|
||||||
|
if(_advancedMode) {
|
||||||
drawAlignedText("Base rotation:");
|
drawAlignedText("Base rotation:");
|
||||||
|
}
|
||||||
drawAlignedText("Rotation offset:");
|
drawAlignedText("Rotation offset:");
|
||||||
drawAlignedText("Scale:");
|
drawAlignedText("Scale:");
|
||||||
ImGui::EndGroup();
|
ImGui::EndGroup();
|
||||||
|
@ -665,6 +673,7 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<C
|
||||||
}
|
}
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
|
||||||
|
if(_advancedMode) {
|
||||||
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
||||||
ImGui::DragFloat("##PosX", &accessory.relativePosition.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f");
|
ImGui::DragFloat("##PosX", &accessory.relativePosition.x(), 1.0f, -FLT_MAX, +FLT_MAX, "X: %.3f");
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
@ -674,6 +683,7 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<C
|
||||||
ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x);
|
ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x);
|
||||||
ImGui::DragFloat("##PosZ", &accessory.relativePosition.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f");
|
ImGui::DragFloat("##PosZ", &accessory.relativePosition.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Z: %.3f");
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
||||||
ImGui::SliderFloat("##PosOffsetX", &accessory.relativePositionOffset.x(), -500.0f, +500.0f, "X: %.3f");
|
ImGui::SliderFloat("##PosOffsetX", &accessory.relativePositionOffset.x(), -500.0f, +500.0f, "X: %.3f");
|
||||||
|
@ -687,6 +697,7 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<C
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
drawHelpMarker("+/-500.0 = +/-250 in-game");
|
drawHelpMarker("+/-500.0 = +/-250 in-game");
|
||||||
|
|
||||||
|
if(_advancedMode) {
|
||||||
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
||||||
ImGui::DragFloat("##RotX", &accessory.relativeRotation.x(), 1.0f, -FLT_MAX, +FLT_MAX, "Roll: %.3f");
|
ImGui::DragFloat("##RotX", &accessory.relativeRotation.x(), 1.0f, -FLT_MAX, +FLT_MAX, "Roll: %.3f");
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
@ -696,6 +707,7 @@ void SaveTool::drawAccessoryEditor(Accessory& accessory, Containers::ArrayView<C
|
||||||
ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x);
|
ImGui::SameLine(0.0f, ImGui::GetStyle().ItemInnerSpacing.x);
|
||||||
ImGui::DragFloat("##RotZ", &accessory.relativeRotation.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Pitch: %.3f");
|
ImGui::DragFloat("##RotZ", &accessory.relativeRotation.z(), 1.0f, -FLT_MAX, +FLT_MAX, "Pitch: %.3f");
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth());
|
||||||
ImGui::SliderFloat("##RotOffsetX", &accessory.relativeRotationOffset.x(), -180.0f, +180.0f, "Roll: %.3f");
|
ImGui::SliderFloat("##RotOffsetX", &accessory.relativeRotationOffset.x(), -180.0f, +180.0f, "Roll: %.3f");
|
||||||
|
|
|
@ -86,6 +86,12 @@ void SaveTool::drawMainMenu() {
|
||||||
drawHelpMarker("This gives access to save edition features that can be considered cheats.",
|
drawHelpMarker("This gives access to save edition features that can be considered cheats.",
|
||||||
Float(windowSize().x()) * 0.4f);
|
Float(windowSize().x()) * 0.4f);
|
||||||
|
|
||||||
|
ImGui::Checkbox("Advanced mode", &_advancedMode);
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::AlignTextToFramePadding();
|
||||||
|
drawHelpMarker("This gives access to editing values that have unknown purposes or are undocumented.",
|
||||||
|
Float(windowSize().x()) * 0.4f);
|
||||||
|
|
||||||
ImGui::Checkbox("Check for updates on startup", &_checkUpdatesOnStartup);
|
ImGui::Checkbox("Check for updates on startup", &_checkUpdatesOnStartup);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if(ImGui::Button(ICON_FA_SYNC_ALT " Check now")) {
|
if(ImGui::Button(ICON_FA_SYNC_ALT " Check now")) {
|
||||||
|
|
|
@ -36,6 +36,8 @@ int main(int argc, char** argv) {
|
||||||
Warning warning_intercept{&warning_intercept_stream};
|
Warning warning_intercept{&warning_intercept_stream};
|
||||||
Error error_intercept{&error_intercept_stream};
|
Error error_intercept{&error_intercept_stream};
|
||||||
|
|
||||||
|
logger().initialise();
|
||||||
|
|
||||||
LOG_INFO("Initialising M.A.S.S. Builder Save Tool version " SAVETOOL_VERSION ".");
|
LOG_INFO("Initialising M.A.S.S. Builder Save Tool version " SAVETOOL_VERSION ".");
|
||||||
|
|
||||||
auto str = std::setlocale(LC_ALL, ".utf-8");
|
auto str = std::setlocale(LC_ALL, ".utf-8");
|
||||||
|
|
Loading…
Reference in a new issue