Saat ini saya sedang membuat RPG 2D dalam C ++ 11 dengan Allegro 5 dan boost.
Tujuan saya adalah entah bagaimana memperbarui pengaturan gim saya ketika opsi diubah di Menu Opsi. Saya tidak ingin memaksa pengguna untuk memulai kembali gim saya. Game lain tidak membutuhkan restart saat mengubah resolusi atau beralih dari layar penuh ke windowed, jadi game saya juga tidak. Silakan lihat tampilan yang disederhanakan dari sistem di bawah ini.
Harap dicatat bahwa saya tidak selalu ingin langsung memanggil objek Game saya dari OptionsScreen. Garis putus-putus hanyalah untuk menggambarkan efek yang saya coba capai; entah bagaimana menyebabkan pembaruan game ketika opsi diubah di bagian yang berbeda dari sistem.
Penjelasan detail
ScreenManager berisi daftar semua GameScreenobjek yang saat ini ada. Ini akan menjadi berbagai layar dalam gim termasuk popup. Desain ini mematuhi kurang lebih sampel Manajemen Status Game di C # / XNA .
The ScreenManagerberisi referensi ke saya Gameobjek. The Gameobjek menginisialisasi dan memodifikasi pengaturan permainan. Jika saya ingin mengubah resolusi, buka layar penuh, atau bisu volume saya akan melakukannya di Gamekelas.
Namun, LayarScreen saat ini tidak dapat mengakses kelas Game. Lihat diagram di bawah ini:
GameScreen dapat memberi sinyal tiga peristiwa onFinished,, onTransitionStartdan onTransitionEnd. Tidak ada onOptionsChangedkarena hanya satu layar yang melakukan itu. ScreenManager tidak dapat mengatur penanganan acara untuk itu karena ia menangani semua layar GameScreens.
Pertanyaan saya adalah, bagaimana saya bisa mengubah desain saya sehingga perubahan pada OptionsMenu tidak memerlukan restart, tetapi segera diubah? Saya lebih baik meminta Gameobjek saya untuk memperbarui setelah tombol terapkan diklik.


