#include "fiko/sahne/pafta_nesne.hpp" #include #include "fiko/cekirdek/olay.hpp" namespace fiko { std::string PaftaNesnesi::ad() const { const Dugum* d = dugum(); return d ? d->ad : std::string(); } void PaftaNesnesi::adAyarla(const std::string& yeni) { if (Dugum* d = dugum()) d->ad = yeni; } std::vector PaftaNesnesi::bagimliliklar() const { std::vector b; for (const pafta::Gorunum& g : veri_.gorunumler()) if (g.kaynak && std::find(b.begin(), b.end(), (Varlik)g.kaynak) == b.end()) b.push_back((Varlik)g.kaynak); return b; } OzellikSeti PaftaNesnesi::ozellikler(Dunya& dunya) { OzellikSeti s; const Varlik k = kimlik_; pafta::Pafta* v = &veri_; Ozellik sayfa = Ozellik::metin( "Sayfa", [v] { return std::string(pafta::sayfaAdi(v->sayfa)); }, nullptr); sayfa.saltOkunur = true; // sayfa değişimi mod içinden (bağlam menüsü) yapılır s.push_back(std::move(sayfa)); Ozellik olcek = Ozellik::metin("Ölçek", [v] { return v->olcek.metin(); }, nullptr); olcek.saltOkunur = true; s.push_back(std::move(olcek)); Ozellik adet = Ozellik::sayi( "Görünüm", [v] { return (f64)v->sayi(); }, nullptr); adet.saltOkunur = true; s.push_back(std::move(adet)); s.push_back(Ozellik::metin("Parça", [v] { return v->antet.parca; }, [v](const std::string& m) { v->antet.parca = m; })); s.push_back(Ozellik::metin("Çizen", [v] { return v->antet.cizen; }, [v](const std::string& m) { v->antet.cizen = m; })); s.push_back(Ozellik::bayrak( "Görünür", [&dunya, k] { Dugum* d = dunya.bul(k); return d ? d->gorunur : false; }, [&dunya, k](bool g) { if (Dugum* d = dunya.bul(k)) d->gorunur = g; })); return s; } // ---- PaftaGorunum ---- bool PaftaGorunum::gorunur() const { const Dugum* d = dugum(); return d ? d->gorunur : false; } void PaftaGorunum::gorunurAyarla(bool g) { if (Dugum* d = dugum()) d->gorunur = g; } Vec3f PaftaGorunum::agacRengi() const { const Dugum* d = dugum(); return d ? d->renk : Vec3f{0.65f, 0.8f, 0.95f}; } pafta::Pafta* paftaVerisi(Dunya& dunya, Varlik kimlik) { NesneKok* nk = dunya.bul(kimlik); auto* pn = (nk && *nk) ? dynamic_cast(nk->get()) : nullptr; return pn ? &pn->veri() : nullptr; } std::string PaftaGorunum::agacMiniBilgi(Dunya& dunya) const { const pafta::Pafta* v = paftaVerisi(dunya, kimlik_); if (!v) return {}; return std::string(pafta::sayfaAdi(v->sayfa)) + " · " + v->olcek.metin() + " · " + std::to_string(v->sayi()) + " görünüm"; } void PaftaGorunum::agacRozetleri(Dunya& dunya, std::vector& out) const { const pafta::Pafta* v = paftaVerisi(dunya, kimlik_); if (!v) return; AgacRozet r; if (v->sayi() == 0) { // boş pafta: kullanıcı gövde bırakmalı (DM ipucu) r.metin = "boş"; r.renk = agacRenk(255, 180, 60); } else { r.metin = v->olcek.metin(); r.renk = agacRenk(64, 210, 110); } out.push_back(std::move(r)); } void PaftaGorunum::agacSanalCocuklar(Dunya& dunya, std::vector& out) const { const pafta::Pafta* v = paftaVerisi(dunya, kimlik_); if (!v) return; for (const pafta::Gorunum& g : v->gorunumler()) { AgacDugum d; d.etiket = g.ad.empty() ? "Görünüm" : g.ad; d.simge = g.hiza == pafta::Gorunum::Hiza::Bagimsiz ? "▭" : "⊞"; d.arketip = Arketip::Genel; d.camKimlik = kimlik_; out.push_back(std::move(d)); } } } // namespace fiko