24 "Edit overworld maps, entrances, and properties",
25 absl::StrFormat(
"%s+1", ctrl),
false,
true,
26 ImVec4(0.133f, 0.545f, 0.133f, 1.0f)},
29 "Design dungeon rooms, layouts, and mechanics",
30 absl::StrFormat(
"%s+2", ctrl),
false,
true,
31 ImVec4(0.502f, 0.0f, 0.502f, 1.0f)},
34 "Modify tiles, palettes, and graphics sets",
35 absl::StrFormat(
"%s+3", ctrl),
false,
true,
36 ImVec4(1.0f, 0.843f, 0.0f, 1.0f)},
39 "Edit sprite graphics and properties",
40 absl::StrFormat(
"%s+4", ctrl),
false,
true,
41 ImVec4(1.0f, 0.647f, 0.0f, 1.0f)},
44 "Edit dialogue, signs, and text",
45 absl::StrFormat(
"%s+5", ctrl),
false,
true,
46 ImVec4(0.196f, 0.6f, 0.8f, 1.0f)},
49 "Configure music and sound effects",
50 absl::StrFormat(
"%s+6", ctrl),
false,
true,
51 ImVec4(0.416f, 0.353f, 0.804f, 1.0f)},
54 "Edit color palettes and animations",
55 absl::StrFormat(
"%s+7", ctrl),
false,
true,
56 ImVec4(0.863f, 0.078f, 0.235f, 1.0f)},
59 "Edit title screen and ending screens",
60 absl::StrFormat(
"%s+8", ctrl),
false,
true,
61 ImVec4(0.4f, 0.8f, 1.0f, 1.0f)},
64 "Write and edit assembly code",
65 absl::StrFormat(
"%s+9", ctrl),
false,
false,
66 ImVec4(0.8f, 0.8f, 0.8f, 1.0f)},
69 "Direct ROM memory editing and comparison",
70 absl::StrFormat(
"%s+0", ctrl),
false,
true,
71 ImVec4(0.2f, 0.8f, 0.4f, 1.0f)},
74 "Test and debug your ROM in real-time with live debugging",
75 absl::StrFormat(
"%s+Shift+E", ctrl),
false,
true,
76 ImVec4(0.2f, 0.6f, 1.0f, 1.0f)},
79 "Configure AI agent, collaboration, and automation",
80 absl::StrFormat(
"%s+Shift+A", ctrl),
false,
false,
81 ImVec4(0.8f, 0.4f, 1.0f, 1.0f)},
230 ImGui::PushID(index);
232 ImVec2 button_size(180, 120);
233 ImVec2 cursor_pos = ImGui::GetCursorScreenPos();
234 ImDrawList* draw_list = ImGui::GetWindowDrawList();
241 ImVec4 base_color = info.
color;
242 ImU32 color_top = ImGui::GetColorU32(ImVec4(
243 base_color.x * 0.4f, base_color.y * 0.4f, base_color.z * 0.4f, 0.8f));
244 ImU32 color_bottom = ImGui::GetColorU32(ImVec4(
245 base_color.x * 0.2f, base_color.y * 0.2f, base_color.z * 0.2f, 0.9f));
248 draw_list->AddRectFilledMultiColor(
250 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
251 color_top, color_top, color_bottom, color_bottom);
256 ? ImGui::GetColorU32(
257 ImVec4(base_color.x, base_color.y, base_color.z, 1.0f))
258 : ImGui::GetColorU32(ImVec4(base_color.x * 0.6f, base_color.y * 0.6f,
259 base_color.z * 0.6f, 0.7f));
262 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
263 border_color, 4.0f, 0, is_recent ? 3.0f : 2.0f);
267 ImVec2 badge_pos(cursor_pos.x + button_size.x - 25, cursor_pos.y + 5);
268 draw_list->AddCircleFilled(badge_pos, 12, ImGui::GetColorU32(base_color),
270 ImGui::SetCursorScreenPos(ImVec2(badge_pos.x - 6, badge_pos.y - 8));
275 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0, 0, 0, 0));
276 ImGui::PushStyleColor(ImGuiCol_ButtonHovered,
277 ImVec4(base_color.x * 0.3f, base_color.y * 0.3f,
278 base_color.z * 0.3f, 0.5f));
279 ImGui::PushStyleColor(ImGuiCol_ButtonActive,
280 ImVec4(base_color.x * 0.5f, base_color.y * 0.5f,
281 base_color.z * 0.5f, 0.7f));
283 ImGui::SetCursorScreenPos(cursor_pos);
285 ImGui::Button(absl::StrCat(
"##", info.
name).c_str(), button_size);
286 bool is_hovered = ImGui::IsItemHovered();
288 ImGui::PopStyleColor(3);
291 ImVec2 icon_center(cursor_pos.x + button_size.x / 2, cursor_pos.y + 30);
292 ImU32 icon_bg = ImGui::GetColorU32(base_color);
293 draw_list->AddCircleFilled(icon_center, 22, icon_bg, 32);
296 ImGui::PushFont(ImGui::GetIO().Fonts->Fonts[2]);
297 ImVec2 icon_size = ImGui::CalcTextSize(info.
icon);
298 ImGui::SetCursorScreenPos(
299 ImVec2(icon_center.x - icon_size.x / 2, icon_center.y - icon_size.y / 2));
300 ImGui::TextColored(ImVec4(1, 1, 1, 1),
"%s", info.
icon);
304 ImGui::SetCursorScreenPos(ImVec2(cursor_pos.x + 10, cursor_pos.y + 65));
305 ImGui::PushTextWrapPos(cursor_pos.x + button_size.x - 10);
306 ImVec2 name_size = ImGui::CalcTextSize(info.
name);
307 ImGui::SetCursorScreenPos(ImVec2(
308 cursor_pos.x + (button_size.x - name_size.x) / 2, cursor_pos.y + 65));
309 ImGui::TextColored(base_color,
"%s", info.
name);
310 ImGui::PopTextWrapPos();
314 ImGui::SetCursorScreenPos(
315 ImVec2(cursor_pos.x + 10, cursor_pos.y + button_size.y - 20));
316 ImGui::TextColored(ImVec4(0.6f, 0.6f, 0.6f, 1.0f),
"%s", info.
shortcut.c_str());
321 ImU32 glow_color = ImGui::GetColorU32(
322 ImVec4(base_color.x, base_color.y, base_color.z, 0.2f));
323 draw_list->AddRectFilled(
325 ImVec2(cursor_pos.x + button_size.x, cursor_pos.y + button_size.y),
332 ImGui::SetNextWindowSize(ImVec2(300, 0), ImGuiCond_Always);
333 ImGui::BeginTooltip();
334 ImGui::PushFont(ImGui::GetIO().Fonts->Fonts[1]);
335 ImGui::TextColored(base_color,
"%s %s", info.
icon, info.
name);
338 ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + 280);
340 ImGui::PopTextWrapPos();
347 ImGui::TextColored(ImVec4(1.0f, 0.843f, 0.0f, 1.0f),