私は MUD エンジンを作成しており、拡張可能である必要があるゲーム オブジェクト モデルを開始したばかりです。
主に私がやったことは面倒だと感じているので助けが必要ですが、よりうまく機能する別の解決策が思いつきません.
というクラスと というMudObject
別のクラスContainer
があります。コンテナには複数の を含めることができますMudObjects
が、MudObject
それ自体ですが、MudObject
コンテナが何に含まれているかを知る必要があります。
したがって、それらは次のようになります。
public abstract class MudObject
{
Container containedBy;
}
public abstract class Container : MudObject
{
List<MudObject> Contains;
}
(これらは単なる例であり、一部の修飾子とアクセス修飾子、プロパティなどが見落とされていることに注意してください)
これだけでも面倒に思えますが、何か他のものをミックスに追加しましょう。
Item
は、MudObject
すべてのビジュアル アイテム (武器など) が継承されるものですが、これらの一部はコンテナ (チェストなど) である必要もあります。しかし、C#には多重継承などはありません。したがって、インターフェースに行き着きます。最良の選択は、コンテナーをインターフェースにすることです(私が見る限り)しかし、そうしたくない理由がありました。つまり、コンテナに を追加するMudObject
と、コンテナがMudObject
s.containedBy
値を更新します。
これを機能させるアイデアはありますか、それとも物事を複雑にしすぎるという罠に陥っていますか?
もしそうなら、他に何を提案できますか?