私はopentk経由でopenglを使用しており、エンティティ用のコントロールコンポーネントを実装する必要があります。 opentkが入力を処理する方法は、キーボードキーとマウスボタンを異なる列挙型で格納することです。理想的には、私は私の入力このような何かしたいのですが:キーが押された場合、私は容易に判断できるように、それを通して、私はリストにそれを置くことができるように構造化入力管理
class Control
{
ActionsEnum Action;
KeyClass Key;
}
と「foreachのを」、そしてもしどのアクションを実行する必要があるか(moveX、ジャンプ、攻撃など)
私はそれを動作させる方法を理解できないので、異なるコントロールタイプの複数のリストを格納するクラスしか考えられません
class Controls
{
public List<KeyboardInput> KeyboardInputs { get; private set; }
public List<KeyboardRangeInput> KeyboardRangeInputs { get; private set; }
public List<MouseInput> MouseInputs { get; private set; }
public List<MouseRangeInput> MouseRangeInputs { get; private set; }
public List<MouseMoveRangeInput> MouseMoveRangeInputs { get; private set; }
public Controls
{
//don't initialize lists since that would take up memory
}
public void AddKeyboardInput(KeyboardInput keyInput)
{
if(KeyboardInputs == null)
{
KeyboardInputs = new List<KeyboardInput>();
}
KeyboardInputs.Add(keyInput);
}
public void AddKeyboardRangeInput(KeyboardRangeInput keyInput)
{
if(KeyboardRangeInputs == null)
{
KeyboardRangeInputs = new List<KeyboardRangeInput>();
}
KeyboardRangeInputs.Add(keyInput);
}
//and so on
}
誰もがこのような問題に取り組んでいたら、shあなたの経験は、任意のアドバイスは非常に有用だろう:)
抽象基本クラスを持ち、 'KeyboardInput'、' KeyboardRangeInput' ...をそのサブクラスにすることができます。 –
この質問をhttps://codereview.stackexchange.com/に移動することをお勧めします。 –
関数を返すことで抽象クラスを返そうとしましたが、関数が別の変数型を返すことはできません。 この質問を移動するにはどうすればよいですか?私はフラグを立てて報告しますか? –