#pragma once // Makro önerisi: kullanıcının ARDIŞIK tekrarladığı komut dizisini yakalar → "bunu makro // yap?" çipi. Kabul edince Lua makrosu ÜRETİR (fiko.komut.calistir satırları) + diske // yazar. Öğrenen menü verisi (arama_menu) sıklık tutuyor; bu ARDIŞIK PERİYOT tutar — // farklı iş: [A B A B A B] gibi bir döngü fark eder. // // Saf durum makinesi (GUI/dosya/Lua bilmez) → testlenebilir. Uygulama KomutCalisti // olayından besler, çip çizer, kabulde Lua üretir. #include #include #include namespace fiko { // Bir komut = (grup, ad). Registry anahtarıyla aynı (Cekirdek::komutCalistir). using KomutAnahtar = std::pair; class MakroOneriMotoru { public: // Eşikler (uygulama AyarSistemi'nden besleyebilir). int minPeriyot = 2; // en kısa anlamlı döngü (tek komut = "tekrarla" ile örtüşür) int maksPeriyot = 4; // daha uzun döngü nadir + gürültü int minTekrar = 2; // dizinin ardışık kaç kez geçmesi öneri sayılır size_t maksGecmis = 32; // Başarılı komut çalıştıkça çağrılır (KomutCalisti). Geçmişe ekler + tespit eder. void komutIsle(const std::string& grup, const std::string& ad); // Şu an bir öneri var mı (çip bunu okur). bool oneriVar() const { return oneri_.var; } const std::vector& oneriDizi() const { return oneri_.dizi; } int oneriTekrar() const { return oneri_.tekrar; } // Kullanıcı KABUL etti: öneriyi tüket (aynı dizi tekrar önerilmesin) → geçmiş temizlenir. // Dönen: makroya girecek komut listesi (oneriDizi kopyası; çağıran Lua üretir). std::vector kabulEt(); // Kullanıcı REDDETTİ: bu diziyi bir süre önerme (imza yok sayılır, geçmiş temizlenir). void reddet(); private: struct Oneri { bool var = false; std::vector dizi; int tekrar = 0; }; void tespitEt(); std::string imza(const std::vector& d) const; std::vector gecmis_; Oneri oneri_; std::string sonReddedilen_; // son reddedilen dizi imzası (tekrar önerme) }; // Öneri dizisinden Lua makro metni üretir (fiko.komut.calistir satırları). Saf/testli. // baslik yorum satırı olarak eklenir. std::string makroLuaUret(const std::vector& dizi, const std::string& baslik); // ---- AyarSistemi köprüsü (uygulama global durumu) ---- // Motor saf/testli kalsın diye ayarlar ayrı global; PencereOrtami::makroOneri her kare // bunlardan beslenir (esleme/ayar kalıbının aynısı). ayar_kayitlari bunları bağlar. bool& makroOnerisiAktif(); // "makro.oneri_aktif" (vars AÇIK); kapalı → hiç öneri çıkmaz int& makroOnerisiMinTekrar(); // "makro.min_tekrar" (vars 2); dizinin kaç kez tekrarı öneri sayılır } // namespace fiko