Wpis z mikrobloga

Teraz jakoś bez żadnych screenów, bardziej chodzi o sens podejścia. Robię sobie szkielet gry z użyciem MonoGame. Chcę aby zarówno w przypadku przycisków, jak i obsługi kursora osobno rozpatrywane trzy przypadki: zaczęcie wciśnięcia, przytrzymywanie oraz puszczenie. Czy rozwiązanie poniżej jest spoko czy przychodzi komuś do głowy coś lepszego(w sumie domyślam się, że szło by to zrobić wydajniej):

List mholdedKeys = new List(); // pole klasy
protected void HandleInput()// metoda wywoływana w Update()
{
List pressedKeys = new List(Keyboard.GetState().GetPressedKeys());

foreach( var key in pressedKeys )
{
if( m
holdedKeys.Contains( key ) )
OnKeyHold( key );
else
{
OnKeyPressed(key);
mholdedKeys.Add( key );
}
}
foreach( var key in m
holdedKeys )
{
if( !pressedKeys.Contains( key ) )
{
OnKeyReleased( key );
}
}
m_holdedKeys.RemoveAll( key => !pressedKeys.Contains( key ) );
}

#csharp #monogame #gamedev #programowanie
  • 3