Pertanyaanku adalah:
Bagaimana saya bisa menangani keadaan gim dalam sistem entitas saya, tanpa menggunakan tumpukan benda keadaan gim di sekitar?
Jadi desain sistem entitas saya berarti bahwa ketika entitas perlu mendaftar untuk acara input misalnya, komponen input memanggil sistem input dan mengatakan "daftarkan entitas ini untuk input ini". Ini semua baik-baik saja dan baik, namun jika Anda menambahkan ke dalam konsep ini kondisi permainan (katakanlah layar jeda), itu menjadi masalah untuk diselesaikan jika suatu entitas berada dalam kondisi saat ini dan harus menerima input.
Saya dapat menambah komponen input / sistem sehingga dikatakan, "daftarkan entitas ini untuk input ini saat berada di status permainan ini", tetapi ini mengharuskan setiap entitas tahu di mana menyatakan akan digunakan, dan itu mungkin tidak jelas. Selain itu, menjaga daftar status permainan sekitar per input yang terdaftar (dan sistem lain yang menggunakan panggilan balik) kedengarannya tidak terlalu efisien.
Gagasan lain yang saya miliki adalah karena akan ada entitas yang mewakili kondisi permainan, tandai sebagai dinonaktifkan, lalu saat membuat acara masukan, periksa apakah entitas tersebut bukan turunan dari entitas kondisi permainan yang dinonaktifkan. Tampaknya mahal untuk melatih orang tua untuk setiap panggilan balik.
Gagasan lain adalah membuat semua sistem menyimpan data mereka dikunci melawan keadaan saat ini, sehingga ketika menghasilkan input, entitas target bahkan tidak akan menjadi kandidat. Namun ini benar-benar menyakiti kemampuan untuk memungkinkan komunikasi antara entitas di negara yang berbeda (tidak begitu menjadi masalah untuk layar jeda, tetapi berpikir memilih kunci di Oblivion / Skyrim).
Satu-satunya ide lain yang saya miliki adalah meminta semua komponen menangani perubahan keadaan dan berkomunikasi dengan sistem yang relevan untuk menonaktifkan apa pun yang telah mereka daftarkan, dan mengaktifkannya kembali ketika beralih kembali ke keadaan ini.
Yang kedua (tandai objek sebagai dinonaktifkan) dan sebagainya (masing-masing komponen berurusan dengan perubahan keadaan) tampak seperti yang terbaik dari ide-ide saya, tetapi tidak satu pun dari mereka yang menganggap saya sangat hebat.
Apakah ada orang lain yang punya ide lain tentang cara melakukan ini?
sunting Sementara saya berbicara tentang input secara khusus dalam pertanyaan ini, ini dapat berarti sistem apa pun yang mampu mengirim pesan / acara ke entitas, seperti tabrakan, acara pengatur waktu, dll ...