Jadi, saya membuat game sederhana menggunakan DirectX 9 dan C++. Saya melihat GUI SDK, tapi saya rasa saya bisa mengimplementasikan sesuatu yang lebih sederhana.
Yang saya inginkan hanyalah jendela, label, tombol, kotak teks, dan kotak centang.
Saya telah membuat GUIObject kelas dasar, yang semuanya diwarisi. Ini mencakup dasar-dasar seperti ukuran dan fokus dan yang lainnya. Kemudian kelas turunannya, GUILabel misalnya, semuanya mendefinisikan render(), update() dan yang lainnya.
Pertanyaan saya adalah bagaimana menangani peristiwa, seperti klik? Saya membuatnya bekerja dengan GUILabel::Click() yang mendefinisikan setiap kemungkinan berdasarkan nilai anggota teks instance saat ini. Rasanya salah dan saya menyadari bahwa setiap label yang perlu diklik harus didefinisikan di kelas GUILabel. Saya ingin memindahkannya ke kode setiap negara permainan.
Jadi, saya mencoba sebentar membuat GUILabel::Click() mengambil penunjuk fungsi sebagai argumen. Tapi kemudian saya menyadari bahwa saya perlu memiliki metode anggota kelas negara bagian sebagai statis (tidak mungkin, kecuali semua yang ada di dalamnya juga statis, bukan?) atau juga meneruskannya ke kelas GUIObject juga. Apakah itu cara yang harus dilakukan?
Bisakah saya mendefinisikan derivasi GUILabel (atau tombol, atau yang lainnya) dalam status permainan dan hanya mengganti tindakan apa pun yang saya perlukan? Dan kemudian melakukan itu untuk kontrol apa pun yang saya perlukan di negara bagian itu?
Apa cara yang tepat untuk menerapkan penanganan acara?