mirror of
https://github.com/spicetools/spicetools.git
synced 2026-03-21 18:04:17 -05:00
82 lines
2.9 KiB
C++
82 lines
2.9 KiB
C++
#include <games/io.h>
|
|
|
|
#include "screen_resize.h"
|
|
#include "cfg/screen_resize.h"
|
|
#include "misc/eamuse.h"
|
|
#include "util/logging.h"
|
|
|
|
namespace overlay::windows {
|
|
|
|
ScreenResize::ScreenResize(SpiceOverlay *overlay) : Window(overlay) {
|
|
this->title = "Screen Resize";
|
|
this->flags = ImGuiWindowFlags_AlwaysAutoResize;
|
|
this->init_pos = ImVec2(
|
|
ImGui::GetIO().DisplaySize.x / 2 - this->init_size.x / 2,
|
|
ImGui::GetIO().DisplaySize.y / 2 - this->init_size.y / 2);
|
|
this->toggle_button = games::OverlayButtons::ToggleScreenResize;
|
|
this->toggle_screen_resize = games::OverlayButtons::ScreenResize;
|
|
}
|
|
|
|
ScreenResize::~ScreenResize() {
|
|
}
|
|
|
|
void ScreenResize::build_content() {
|
|
|
|
// enable checkbox
|
|
ImGui::Checkbox("Enable Screen Resize", &cfg::SCREENRESIZE->enable_screen_resize);
|
|
if (cfg::SCREENRESIZE->enable_screen_resize) {
|
|
|
|
// general settings
|
|
ImGui::Checkbox("Enable Linear Filter", &cfg::SCREENRESIZE->enable_linear_filter);
|
|
ImGui::InputInt("X Offset", &cfg::SCREENRESIZE->offset_x);
|
|
ImGui::InputInt("Y Offset", &cfg::SCREENRESIZE->offset_y);
|
|
|
|
// aspect ratio
|
|
ImGui::Checkbox("Keep Aspect Ratio", &cfg::SCREENRESIZE->keep_aspect_ratio);
|
|
if (cfg::SCREENRESIZE->keep_aspect_ratio) {
|
|
if (ImGui::SliderFloat("Scale", &cfg::SCREENRESIZE->scale_x, 0.65f, 2.0f)) {
|
|
cfg::SCREENRESIZE->scale_y = cfg::SCREENRESIZE->scale_x;
|
|
}
|
|
} else {
|
|
ImGui::SliderFloat("Width Scale", &cfg::SCREENRESIZE->scale_x, 0.65f, 2.0f);
|
|
ImGui::SliderFloat("Height Scale", &cfg::SCREENRESIZE->scale_y, 0.65f, 2.0f);
|
|
}
|
|
|
|
// reset button
|
|
if (ImGui::Button("Reset")) {
|
|
cfg::SCREENRESIZE->offset_x = 0;
|
|
cfg::SCREENRESIZE->offset_y = 0;
|
|
cfg::SCREENRESIZE->scale_x = 1;
|
|
cfg::SCREENRESIZE->scale_y = 1;
|
|
}
|
|
}
|
|
|
|
// load button
|
|
ImGui::SameLine();
|
|
if (ImGui::Button("Load")) {
|
|
cfg::SCREENRESIZE->config_load();
|
|
}
|
|
|
|
// save button
|
|
ImGui::SameLine();
|
|
if (ImGui::Button("Save")) {
|
|
cfg::SCREENRESIZE->config_save();
|
|
}
|
|
}
|
|
|
|
void ScreenResize::update() {
|
|
Window::update();
|
|
if (this->toggle_screen_resize != ~0u) {
|
|
auto overlay_buttons = games::get_buttons_overlay(eamuse_get_game());
|
|
bool toggle_screen_resize_new = overlay_buttons
|
|
&& this->overlay->hotkeys_triggered()
|
|
&& GameAPI::Buttons::getState(RI_MGR, overlay_buttons->at(this->toggle_screen_resize));
|
|
|
|
if (toggle_screen_resize_new && !this->toggle_screen_resize_state) {
|
|
cfg::SCREENRESIZE->enable_screen_resize = !cfg::SCREENRESIZE->enable_screen_resize;
|
|
}
|
|
this->toggle_screen_resize_state = toggle_screen_resize_new;
|
|
}
|
|
}
|
|
}
|