#pragma once // Makro öneri çipi (viewport ÜST-orta): motor tekrar yakaladığında "🔮 Bu N adımı makro // yap?" + [Yap] [✕]. Yap → çağıran Lua üretir + diske yazar (dosya/Lua bağımlılığı burada // DEĞİL — çip yalnız görsel + niyet). Akıllı seçim çipi ALTTA, bu ÜSTTE → çakışmaz. #include "fiko/ui/tema.hpp" #include "makro_oneri.hpp" #include "imgui.h" #include namespace fiko { // Çizer + butonları işler. Dönüş: 1 = KABUL (çağıran makroyu üretsin), -1 = RET, 0 = yok. inline int makroOneriCipCizVeIsle(MakroOneriMotoru& m, ImDrawList* dl, ImVec2 vpMin, ImVec2 vpBoy) { if (!m.oneriVar()) return 0; const std::string yazi = "🔮 Bu " + std::to_string((int)m.oneriDizi().size()) + " adımı makro yap? (" + std::to_string(m.oneriTekrar()) + "× tekrarladın)"; const ui::Tema& t = ui::tema(); const float pad = 12.0f, h = 32.0f; const ImVec2 ts = ImGui::CalcTextSize(yazi.c_str()); const float btnG = 52.0f, btnRet = 30.0f, ara = 6.0f; const float g = pad + ts.x + ara + btnG + ara + btnRet + pad; const ImVec2 p0{vpMin.x + vpBoy.x * 0.5f - g * 0.5f, vpMin.y + 14.0f}; const ImVec2 p1{p0.x + g, p0.y + h}; // Panel (magenta ton — akıllı seçim çipinden ayrışsın; o cyan). dl->AddRectFilled(p0, p1, ui::u32(t.vurgu2, 0.18f), h * 0.35f); dl->AddRect(p0, p1, ui::u32(t.vurgu2, 0.85f), h * 0.35f, 0, 1.4f); dl->AddText({p0.x + pad, p0.y + (h - ts.y) * 0.5f}, ui::u32(t.metin), yazi.c_str()); int sonuc = 0; const float by = p0.y + (h - 22.0f) * 0.5f; // [Yap] butonu const ImVec2 yb0{p0.x + pad + ts.x + ara, by}, yb1{yb0.x + btnG, by + 22.0f}; ImGui::SetCursorScreenPos(yb0); ImGui::InvisibleButton("##makroYap", {btnG, 22.0f}); const bool yapUst = ImGui::IsItemHovered(); if (ImGui::IsItemClicked()) sonuc = 1; dl->AddRectFilled(yb0, yb1, ui::u32(t.vurgu2, yapUst ? 0.55f : 0.32f), 5.0f); const ImVec2 yts = ImGui::CalcTextSize("Yap"); dl->AddText({yb0.x + (btnG - yts.x) * 0.5f, yb0.y + (22.0f - yts.y) * 0.5f}, ui::u32(t.metin), "Yap"); // [✕] reddet const ImVec2 rb0{yb1.x + ara, by}, rb1{rb0.x + btnRet, by + 22.0f}; ImGui::SetCursorScreenPos(rb0); ImGui::InvisibleButton("##makroRet", {btnRet, 22.0f}); const bool retUst = ImGui::IsItemHovered(); if (ImGui::IsItemClicked()) sonuc = -1; dl->AddRect(rb0, rb1, ui::u32(t.metin, retUst ? 0.9f : 0.5f), 5.0f, 0, 1.2f); const ImVec2 rts = ImGui::CalcTextSize("✕"); dl->AddText({rb0.x + (btnRet - rts.x) * 0.5f, rb0.y + (22.0f - rts.y) * 0.5f}, ui::u32(t.metin, retUst ? 1.0f : 0.6f), "✕"); if (sonuc == -1) m.reddet(); // kabul çağıran tarafta (Lua üretimi sonrası kabulEt) return sonuc; } } // namespace fiko