leonscottkfm

Unreal MVP
31 May 2015
1,506
5
214
63
28
(34) İstanbul Avrupa
store.steampowered.com
Öncelikle yapacağım sistemden bahsedeyim.
Oyunumuzda sadece bir Widget arayüzü olacak. Bu arayüzde 5 adet item düşünün. Hepsi buttondan oluşuyor.
Örneğin ben bir button koyacağım ve bu button enumu masa seçili ise otomatik olarak masa ikonunu alacak, activated değil ise üzerinde çarpı işareti olacak.
Dolayısıyla bunu her button için tek tek yapmayayım diye bir adet button oluşturdum.

Ayrıca buttonların üstüne tıklandığında Clipboarda isim kopyalama işlemi yapacak. Kopyalama işlemi için elimde plugin bulunmakta ve çalışıyor.
Fakat bu master button içerisine girdiğimizde Onclick eventine erişemiyorum. Dolayısıyla kopyalamada yapamıyorum.

Bu evente sadece buttonun bulunduğu widgettan erişilebiliyor. Ee haliyle işlem böyle olursa her button için yine click eventi yazmam gerekecek. Sırf kopyalama yapsın diye.
Peki , ben bu buttonun masterinden nasıl Click eventini tetikleyebilirim ?
Çünkü her button ayrı bir nesnenin ismini kopyalayacak. Master buttonun içerisinde her nesnenin ismi bir name variablesinde kayıtlı zaten. Fakat Click eventine erişemiyorum.
Click eventininde master button içerisinde yer alması gerekmekte.
 
Master class'ta Click Event'ine EventConstruct kısmında fonksiyon bind edebilirsin. Sonrasında click ettiğinde zaten çalıştırabiliyor olması lazım.
 
Çalışmasına sevindim. Bu button'da user widget'ta soldaki panelden ekleyebildiğin buton class'ı aslında. Solda gözüksün temel buton işlevini karşılasın diye oluşturulmuştur muhtemelen.
 
Fakat şimdi başka bir problem mevcut...
Widgettaki buttonların blocked özelliği var. Yani block yemiş button kırmızıya dönüşüyor siz buna enabled=false de diyebilirsiniz. Yani aktif olmayan button konumuna geçiyor.
Fakat bunu savegame ile kayıt etmem lazım. Kayıt ettim ve load ettiğimde bir button block yemişse dolayısıyla savegame içerisindede blocked diye bir değişkenim var. Bir button block yerse savegame içerisindeki (savegame)isbuttonblocked boolean = (Childbutton) isbuttonblocked boolean yapıyorum.

Daha sonra buttonun Construct kısmında ise saveyi yüklüyorum ve savedeki booelan ile buttonumun blocked booleanını eşliyorum. Bu sefer tüm buttonlar kırmızıya dönüyor. Bunun önüne nasıl geçebiliriz ? Spesifik olarak unique olarak alması gerekiyor. Yani her button unique olmalı. Hepsi bir child ve masterdan türedi fakat unique davranmalılar. Ben birisini block ettiğimde hepsi block olmamalı.


EDİT: Çözdüm. Uğraştırdı biraz ama olsun. Benim buttonların zaten belli özellikleri var en basitinden ismi var. Gittim savegame objectinde string bir array oluşturdum. Sonra buttonuma geldim. Kayıt ederken buttonumun ismini o arrayın içine kayıt ettim. Yüklerkende arraydan çekip şuanki ile eşleşiyor mu ? Diye kontrol ettim. Eşleşiyorsa button blocked mi ? Zaten blocked olduğu için o ismi oraya yollamıştık. Dolayısıyla yüklerkende o arrayın içindeki string bizimkiyle eşleşiyorsa, otomatik olarak blockede çekiyor. Böylece tüm buttonlar yerine sadece listede adı olanlar blocked yiyor.