47 ImGuiIO &io = ImGui::GetIO();
49 while (SDL_PollEvent(&event)) {
50 ImGui_ImplSDL2_ProcessEvent(&event);
54 ImGuiIO &io = ImGui::GetIO();
55 io.KeyShift = ((SDL_GetModState() & KMOD_SHIFT) != 0);
56 io.KeyCtrl = ((SDL_GetModState() & KMOD_CTRL) != 0);
57 io.KeyAlt = ((SDL_GetModState() & KMOD_ALT) != 0);
58 io.KeySuper = ((SDL_GetModState() & KMOD_GUI) != 0);
62 switch (event.window.event) {
63 case SDL_WINDOWEVENT_CLOSE:
66 case SDL_WINDOWEVENT_SIZE_CHANGED:
67 io.DisplaySize.x =
static_cast<float>(
event.window.data1);
68 io.DisplaySize.y =
static_cast<float>(
event.window.data2);
81 const int buttons = SDL_GetMouseState(&mouseX, &mouseY);
83 io.DeltaTime = 1.0f / 60.0f;
84 io.MousePos = ImVec2(
static_cast<float>(mouseX),
static_cast<float>(mouseY));
85 io.MouseDown[0] = buttons & SDL_BUTTON(SDL_BUTTON_LEFT);
86 io.MouseDown[1] = buttons & SDL_BUTTON(SDL_BUTTON_RIGHT);
87 io.MouseDown[2] = buttons & SDL_BUTTON(SDL_BUTTON_MIDDLE);
88 io.MouseWheel =
static_cast<float>(wheel);
95#if TARGET_OS_IPHONE != 1
96 constexpr ImGuiWindowFlags kMainEditorFlags =
97 ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse |
98 ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_MenuBar |
99 ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoTitleBar;
101 const ImGuiIO &io = ImGui::GetIO();
102 ImGui_ImplSDLRenderer2_NewFrame();
103 ImGui_ImplSDL2_NewFrame();
106 ImVec2 dimensions(io.DisplaySize.x, io.DisplaySize.y);
107 ImGui::SetNextWindowSize(dimensions, ImGuiCond_Always);
109 if (!ImGui::Begin(
"##YazeMain",
nullptr, kMainEditorFlags)) {
114#if TARGET_OS_IPHONE != 1
117 return absl::OkStatus();
143 auto sdl_flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER;
145 if (SDL_Init(sdl_flags) != 0) {
146 return absl::InternalError(
147 absl::StrFormat(
"SDL_Init: %s\n", SDL_GetError()));
150 SDL_DisplayMode display_mode;
151 SDL_GetCurrentDisplayMode(0, &display_mode);
152 int screen_width = display_mode.w * 0.8;
153 int screen_height = display_mode.h * 0.8;
155 window_ = std::unique_ptr<SDL_Window, core::SDL_Deleter>(
156 SDL_CreateWindow(
"Yet Another Zelda3 Editor",
157 SDL_WINDOWPOS_UNDEFINED,
158 SDL_WINDOWPOS_UNDEFINED,
161 SDL_WINDOW_RESIZABLE),
164 return absl::InternalError(
165 absl::StrFormat(
"SDL_CreateWindow: %s\n", SDL_GetError()));
168 return absl::OkStatus();
205 SDL_AudioSpec want, have;
206 SDL_memset(&want, 0,
sizeof(want));
208 want.format = AUDIO_S16;
211 want.callback = NULL;
212 audio_device_ = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
214 return absl::InternalError(
215 absl::StrFormat(
"Failed to open audio: %s\n", SDL_GetError()));
222 return absl::OkStatus();
231 if (!std::filesystem::exists(config_directory)) {
232 if (!std::filesystem::create_directory(config_directory)) {
233 return absl::InternalError(absl::StrFormat(
234 "Failed to create config directory %s", config_directory));
239 std::string config_file = config_directory +
"yaze.cfg";
240 if (!std::filesystem::exists(config_file)) {
242 std::ofstream file(config_file);
243 if (!file.is_open()) {
244 return absl::InternalError(
245 absl::StrFormat(
"Failed to create config file %s", config_file));
250 return absl::OkStatus();