64 ImGuiIO &io = ImGui::GetIO();
67 while (SDL_PollEvent(&event)) {
68 ImGui_ImplSDL2_ProcessEvent(&event);
72 io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
73 io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
74 io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0);
75 io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
79 switch (event.window.event) {
80 case SDL_WINDOWEVENT_CLOSE:
83 case SDL_WINDOWEVENT_SIZE_CHANGED:
84 io.DisplaySize.x =
static_cast<float>(
event.window.data1);
85 io.DisplaySize.y =
static_cast<float>(
event.window.data2);
98 const int buttons = SDL_GetMouseState(&mouseX, &mouseY);
100 io.DeltaTime = 1.0f / 60.0f;
101 io.MousePos = ImVec2(
static_cast<float>(mouseX),
static_cast<float>(mouseY));
102 io.MouseDown[0] = buttons & SDL_BUTTON(SDL_BUTTON_LEFT);
103 io.MouseDown[1] = buttons & SDL_BUTTON(SDL_BUTTON_RIGHT);
104 io.MouseDown[2] = buttons & SDL_BUTTON(SDL_BUTTON_MIDDLE);
107 io.MouseWheel =
static_cast<float>(wheel);
115#if TARGET_OS_IPHONE != 1
116 ImGui_ImplSDLRenderer2_NewFrame();
117 ImGui_ImplSDL2_NewFrame();
120 const ImGuiViewport *viewport = ImGui::GetMainViewport();
121 ImGui::SetNextWindowPos(viewport->WorkPos);
122 ImGui::SetNextWindowSize(viewport->WorkSize);
123 ImGui::SetNextWindowViewport(viewport->ID);
125 ImGuiWindowFlags window_flags =
126 ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoDocking;
127 window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse |
128 ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
130 ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
132 ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
133 ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
134 ImGui::Begin(
"DockSpaceWindow",
nullptr, window_flags);
135 ImGui::PopStyleVar(2);
138 ImGuiID dockspace_id = ImGui::GetID(
"MyDockSpace");
139 ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f),
140 ImGuiDockNodeFlags_PassthruCentralNode);
147 return absl::OkStatus();
167 auto sdl_flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER;
169 if (SDL_Init(sdl_flags) != 0) {
170 return absl::InternalError(
171 absl::StrFormat(
"SDL_Init: %s\n", SDL_GetError()));
174 SDL_DisplayMode display_mode;
175 SDL_GetCurrentDisplayMode(0, &display_mode);
176 int screen_width = display_mode.w * 0.8;
177 int screen_height = display_mode.h * 0.8;
179 window_ = std::unique_ptr<SDL_Window, core::SDL_Deleter>(
180 SDL_CreateWindow(
"Yet Another Zelda3 Editor",
181 SDL_WINDOWPOS_UNDEFINED,
182 SDL_WINDOWPOS_UNDEFINED,
185 SDL_WINDOW_RESIZABLE),
188 return absl::InternalError(
189 absl::StrFormat(
"SDL_CreateWindow: %s\n", SDL_GetError()));
192 return absl::OkStatus();
229 if (!std::filesystem::exists(config_directory)) {
230 if (!std::filesystem::create_directory(config_directory)) {
231 return absl::InternalError(absl::StrFormat(
232 "Failed to create config directory %s", config_directory));
237 std::string config_file = config_directory +
"yaze.cfg";
238 if (!std::filesystem::exists(config_file)) {
240 std::ofstream file(config_file);
241 if (!file.is_open()) {
242 return absl::InternalError(
243 absl::StrFormat(
"Failed to create config file %s", config_file));
248 return absl::OkStatus();