20 "Edit overworld maps, entrances, and properties",
"Ctrl+1",
false,
true,
21 ImVec4(0.133f, 0.545f, 0.133f, 1.0f)},
24 "Design dungeon rooms, layouts, and mechanics",
"Ctrl+2",
false,
true,
25 ImVec4(0.502f, 0.0f, 0.502f, 1.0f)},
28 "Modify tiles, palettes, and graphics sets",
"Ctrl+3",
false,
true,
29 ImVec4(1.0f, 0.843f, 0.0f, 1.0f)},
32 "Edit sprite graphics and properties",
"Ctrl+4",
false,
true,
33 ImVec4(1.0f, 0.647f, 0.0f, 1.0f)},
36 "Edit dialogue, signs, and text",
"Ctrl+5",
false,
true,
37 ImVec4(0.196f, 0.6f, 0.8f, 1.0f)},
40 "Configure music and sound effects",
"Ctrl+6",
false,
true,
41 ImVec4(0.416f, 0.353f, 0.804f, 1.0f)},
44 "Edit color palettes and animations",
"Ctrl+7",
false,
true,
45 ImVec4(0.863f, 0.078f, 0.235f, 1.0f)},
48 "Edit title screen and ending screens",
"Ctrl+8",
false,
true,
49 ImVec4(0.4f, 0.8f, 1.0f, 1.0f)},
52 "Write and edit assembly code",
"Ctrl+9",
false,
false,
53 ImVec4(0.8f, 0.8f, 0.8f, 1.0f)},
56 "Direct ROM memory editing and comparison",
"Ctrl+0",
false,
true,
57 ImVec4(0.2f, 0.8f, 0.4f, 1.0f)},
60 "Test and debug your ROM in real-time with live debugging",
"Ctrl+Shift+E",
false,
true,
61 ImVec4(0.2f, 0.6f, 1.0f, 1.0f)},
64 "Configure AI agent, collaboration, and automation",
"Ctrl+Shift+A",
false,
false,
65 ImVec4(0.8f, 0.4f, 1.0f, 1.0f)},
68 "Configure ROM and project settings",
"",
false,
true,
69 ImVec4(0.6f, 0.6f, 0.6f, 1.0f)},
209 ImGui::PushID(index);
211 ImVec2 button_size(180, 120);
212 ImVec2 cursor_pos = ImGui::GetCursorScreenPos();
213 ImDrawList* draw_list = ImGui::GetWindowDrawList();
220 ImVec4 base_color = info.
color;
221 ImU32 color_top = ImGui::GetColorU32(ImVec4(base_color.x * 0.4f, base_color.y * 0.4f,
222 base_color.z * 0.4f, 0.8f));
223 ImU32 color_bottom = ImGui::GetColorU32(ImVec4(base_color.x * 0.2f, base_color.y * 0.2f,
224 base_color.z * 0.2f, 0.9f));
227 draw_list->AddRectFilledMultiColor(
229 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
230 color_top, color_top, color_bottom, color_bottom);
233 ImU32 border_color = is_recent
234 ? ImGui::GetColorU32(ImVec4(base_color.x, base_color.y, base_color.z, 1.0f))
235 : ImGui::GetColorU32(ImVec4(base_color.x * 0.6f, base_color.y * 0.6f,
236 base_color.z * 0.6f, 0.7f));
237 draw_list->AddRect(cursor_pos,
238 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
239 border_color, 4.0f, 0, is_recent ? 3.0f : 2.0f);
243 ImVec2 badge_pos(cursor_pos.x + button_size.x - 25, cursor_pos.y + 5);
244 draw_list->AddCircleFilled(badge_pos, 12, ImGui::GetColorU32(base_color), 16);
245 ImGui::SetCursorScreenPos(ImVec2(badge_pos.x - 6, badge_pos.y - 8));
250 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0, 0, 0, 0));
251 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(base_color.x * 0.3f, base_color.y * 0.3f,
252 base_color.z * 0.3f, 0.5f));
253 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(base_color.x * 0.5f, base_color.y * 0.5f,
254 base_color.z * 0.5f, 0.7f));
256 ImGui::SetCursorScreenPos(cursor_pos);
257 bool clicked = ImGui::Button(absl::StrCat(
"##", info.
name).c_str(), button_size);
258 bool is_hovered = ImGui::IsItemHovered();
260 ImGui::PopStyleColor(3);
263 ImVec2 icon_center(cursor_pos.x + button_size.x / 2, cursor_pos.y + 30);
264 ImU32 icon_bg = ImGui::GetColorU32(base_color);
265 draw_list->AddCircleFilled(icon_center, 22, icon_bg, 32);
268 ImGui::PushFont(ImGui::GetIO().Fonts->Fonts[2]);
269 ImVec2 icon_size = ImGui::CalcTextSize(info.
icon);
270 ImGui::SetCursorScreenPos(ImVec2(icon_center.x - icon_size.x / 2, icon_center.y - icon_size.y / 2));
271 ImGui::TextColored(ImVec4(1, 1, 1, 1),
"%s", info.
icon);
275 ImGui::SetCursorScreenPos(ImVec2(cursor_pos.x + 10, cursor_pos.y + 65));
276 ImGui::PushTextWrapPos(cursor_pos.x + button_size.x - 10);
277 ImVec2 name_size = ImGui::CalcTextSize(info.
name);
278 ImGui::SetCursorScreenPos(ImVec2(cursor_pos.x + (button_size.x - name_size.x) / 2,
280 ImGui::TextColored(base_color,
"%s", info.
name);
281 ImGui::PopTextWrapPos();
285 ImGui::SetCursorScreenPos(ImVec2(cursor_pos.x + 10, cursor_pos.y + button_size.y - 20));
286 ImGui::TextColored(ImVec4(0.6f, 0.6f, 0.6f, 1.0f),
"%s", info.
shortcut);
291 ImU32 glow_color = ImGui::GetColorU32(ImVec4(base_color.x, base_color.y, base_color.z, 0.2f));
292 draw_list->AddRectFilled(cursor_pos,
293 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
300 ImGui::SetNextWindowSize(ImVec2(300, 0), ImGuiCond_Always);
301 ImGui::BeginTooltip();
302 ImGui::PushFont(ImGui::GetIO().Fonts->Fonts[1]);
303 ImGui::TextColored(base_color,
"%s %s", info.
icon, info.
name);
306 ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 280);
308 ImGui::PopTextWrapPos();
315 ImGui::TextColored(ImVec4(1.0f, 0.843f, 0.0f, 1.0f),
ICON_MD_STAR " Recently used");