小さなRPGプロジェクトに一種のオブザーバーパターンを使用して中央イベントディスパッチングシステムを作成しようとしていますが、イベントデータを最適に表現する方法についてアドバイスが必要です。
Event_Input_KeyPressedやEvent_Game_ActorMovedなどの静的列挙型で定義されたさまざまなイベントタイプのリスナークラスを登録するEventManagerがあります。イベントをキューに格納し、対応するリスナーにディスパッチします。リスナーには、それぞれメソッドhandleEvent(Event e)などがあります。
各イベントは、イベントタイプなどのデータを保持するイベントタイプのオブジェクトになります。
私の質問は、イベントデータの性質はイベントタイプ間でかなり異なるため、このデータをどのように表現する必要があるかということです。将来どのような種類のイベントを作成したいかはまだわかりませんので、できるだけ柔軟に対応していきたいと思います。たとえば、特定の条件が当てはまる場合(つまり、プレーヤーがアクションキーを押したときに、プレーヤーが特定の場所にいてキーを持っている場合にドアが開く)、イベントが他のイベントをトリガーする可能性があります。XMLまたはスクリプトは良い選択ですか?私が考えることができるもう1つの方法は、ActorEventやMenuEventなどのすべての一般的なイベントに対してカスタムクラスを作成することですが、それは本当に非効率的で柔軟性がないようです。また、Characterなどの一部のオブジェクトは、「w」キーが押されたときなどの非常に特定のイベントのみを知る必要があるため、「h」などの他のキーが押されたときに通知される必要はないと思います。が押されます。特定のイベントタイプを作成することは実行可能ですか、それともより良い方法がありますか?すなわち。Event_Input_KeyPressed_W
ありがとう