Refactor Controller: Replace SetupScreen with Initialize and clean up unused code

This commit is contained in:
scawful
2024-12-31 11:46:39 -05:00
parent 33dc1983bc
commit bac4660bac
2 changed files with 46 additions and 67 deletions

View File

@@ -18,37 +18,6 @@
namespace yaze { namespace yaze {
namespace core { namespace core {
namespace {
constexpr ImGuiWindowFlags kMainEditorFlags =
ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_MenuBar |
ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar;
using ImGui::Begin;
using ImGui::End;
using ImGui::GetIO;
using ImGui::NewFrame;
using ImGui::SetNextWindowPos;
using ImGui::SetNextWindowSize;
void NewMasterFrame() {
const ImGuiIO &io = GetIO();
ImGui_ImplSDLRenderer2_NewFrame();
ImGui_ImplSDL2_NewFrame();
NewFrame();
SetNextWindowPos(gui::kZeroPos);
ImVec2 dimensions(io.DisplaySize.x, io.DisplaySize.y);
SetNextWindowSize(dimensions, ImGuiCond_Always);
if (!Begin("##YazeMain", nullptr, kMainEditorFlags)) {
End();
return;
}
}
} // namespace
absl::Status Controller::OnEntry(std::string filename) { absl::Status Controller::OnEntry(std::string filename) {
#if defined(__APPLE__) && defined(__MACH__) #if defined(__APPLE__) && defined(__MACH__)
#if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
@@ -67,7 +36,7 @@ absl::Status Controller::OnEntry(std::string filename) {
RETURN_IF_ERROR(CreateRenderer()) RETURN_IF_ERROR(CreateRenderer())
RETURN_IF_ERROR(CreateGuiContext()) RETURN_IF_ERROR(CreateGuiContext())
RETURN_IF_ERROR(LoadAudioDevice()) RETURN_IF_ERROR(LoadAudioDevice())
editor_manager_.SetupScreen(filename); editor_manager_.Initialize(filename);
active_ = true; active_ = true;
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -80,30 +49,30 @@ void Controller::OnInput() {
while (SDL_PollEvent(&event)) { while (SDL_PollEvent(&event)) {
ImGui_ImplSDL2_ProcessEvent(&event); ImGui_ImplSDL2_ProcessEvent(&event);
switch (event.type) { switch (event.type) {
case SDL_KEYDOWN: case SDL_KEYDOWN:
case SDL_KEYUP: { case SDL_KEYUP: {
ImGuiIO &io = ImGui::GetIO(); ImGuiIO &io = ImGui::GetIO();
io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0); io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0); io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0); io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0);
io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0); io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
break;
}
case SDL_WINDOWEVENT:
switch (event.window.event) {
case SDL_WINDOWEVENT_CLOSE:
active_ = false;
break; break;
} case SDL_WINDOWEVENT_SIZE_CHANGED:
case SDL_WINDOWEVENT: io.DisplaySize.x = static_cast<float>(event.window.data1);
switch (event.window.event) { io.DisplaySize.y = static_cast<float>(event.window.data2);
case SDL_WINDOWEVENT_CLOSE:
active_ = false;
break;
case SDL_WINDOWEVENT_SIZE_CHANGED:
io.DisplaySize.x = static_cast<float>(event.window.data1);
io.DisplaySize.y = static_cast<float>(event.window.data2);
break;
default:
break;
}
break; break;
default: default:
break; break;
}
break;
default:
break;
} }
} }
@@ -124,15 +93,26 @@ absl::Status Controller::OnLoad() {
active_ = false; active_ = false;
} }
#if TARGET_OS_IPHONE != 1 #if TARGET_OS_IPHONE != 1
if (platform_ != Platform::kiOS) { constexpr ImGuiWindowFlags kMainEditorFlags =
NewMasterFrame(); ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse |
ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_MenuBar |
ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar;
const ImGuiIO &io = ImGui::GetIO();
ImGui_ImplSDLRenderer2_NewFrame();
ImGui_ImplSDL2_NewFrame();
ImGui::NewFrame();
ImGui::SetNextWindowPos(gui::kZeroPos);
ImVec2 dimensions(io.DisplaySize.x, io.DisplaySize.y);
ImGui::SetNextWindowSize(dimensions, ImGuiCond_Always);
if (!ImGui::Begin("##YazeMain", nullptr, kMainEditorFlags)) {
ImGui::End();
} }
#endif #endif
RETURN_IF_ERROR(editor_manager_.Update()); RETURN_IF_ERROR(editor_manager_.Update());
#if TARGET_OS_IPHONE != 1 #if TARGET_OS_IPHONE != 1
if (platform_ != Platform::kiOS) { ImGui::End();
End();
}
#endif #endif
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -176,11 +156,11 @@ absl::Status Controller::CreateWindow() {
int screen_height = display_mode.h * 0.8; int screen_height = display_mode.h * 0.8;
window_ = std::unique_ptr<SDL_Window, core::SDL_Deleter>( window_ = std::unique_ptr<SDL_Window, core::SDL_Deleter>(
SDL_CreateWindow("Yet Another Zelda3 Editor", // window title SDL_CreateWindow("Yet Another Zelda3 Editor", // window title
SDL_WINDOWPOS_UNDEFINED, // initial x position SDL_WINDOWPOS_UNDEFINED, // initial x position
SDL_WINDOWPOS_UNDEFINED, // initial y position SDL_WINDOWPOS_UNDEFINED, // initial y position
screen_width, // width, in pixels screen_width, // width, in pixels
screen_height, // height, in pixels screen_height, // height, in pixels
SDL_WINDOW_RESIZABLE), SDL_WINDOW_RESIZABLE),
core::SDL_Deleter()); core::SDL_Deleter());
if (window_ == nullptr) { if (window_ == nullptr) {
@@ -234,7 +214,7 @@ absl::Status Controller::LoadAudioDevice() {
want.format = AUDIO_S16; want.format = AUDIO_S16;
want.channels = 2; want.channels = 2;
want.samples = 2048; want.samples = 2048;
want.callback = NULL; // Uses the queue want.callback = NULL; // Uses the queue
audio_device_ = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0); audio_device_ = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
if (audio_device_ == 0) { if (audio_device_ == 0) {
return absl::InternalError( return absl::InternalError(
@@ -276,6 +256,5 @@ absl::Status Controller::LoadConfigFiles() {
return absl::OkStatus(); return absl::OkStatus();
} }
} // namespace core } // namespace core
} // namespace yaze
} // namespace yaze

View File

@@ -44,7 +44,7 @@ class Controller : public ExperimentFlags {
absl::Status LoadConfigFiles(); absl::Status LoadConfigFiles();
void SetupScreen(std::string filename = "") { void SetupScreen(std::string filename = "") {
editor_manager_.SetupScreen(filename); editor_manager_.Initialize(filename);
} }
auto editor_manager() -> editor::EditorManager & { return editor_manager_; } auto editor_manager() -> editor::EditorManager & { return editor_manager_; }
auto renderer() -> SDL_Renderer * { auto renderer() -> SDL_Renderer * {