Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat
Jetzt mache ich ein Ingamemenü auf und jetzt übernimmt das Menü die Verarbeitung der Eingaben und das normale
Spiel soll die Eingabe nicht mehr mitbekommen!
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
if (curGameState == GameState.Paused) { if (mouseState.LeftButton == ButtonState.Pressed && oldMouseState.LeftButton == ButtonState.Released) { string actionToBeTriggered = inputHandler.HandleMouseclick(mousePosition); if (actionToBeTriggered == "quit") Exit(); if (actionToBeTriggered == "resume") curGameState = GameState.Playing; if (actionToBeTriggered == "load") gameStorage.InitiateLoad(); if (actionToBeTriggered == "save") gameStorage.InitiateSave(); } } |
Erinnerst du dich noch an meinen Vorschlag, eine grosse Tabelle für alle Aktionen, in der dann steht welche Tasten diese die Aktion ausloesen können? Die Tabelle erweiterst du einfach um eine Spalte, die beschreibt wann diese Aktion ausgeführt werden kann. Wenn man den Inputhandler nun nach Aktion X fragt, kann schaut er in der Tabelle nach und überprüft halt nicht nur ob die zugewiesene Taste gedrueckt ist, sondern auch diese Bedingung noch dazu. IsPressed(Jump) liefert im Menu nun immer ein false.Ein Beispiel: Ich habe aktuell ein Level offen und die normale Spiellogik kümmert sich um die Verarbeitung
der Benutzereingaben. Jetzt mache ich ein Ingamemenü auf und jetzt übernimmt das Menü die Verarbeitung der Eingaben und das normale
Spiel soll die Eingabe nicht mehr mitbekommen!
Ah, das Chain of Responsibility-Pattern. Daran hatte ich bislang genausowenig wie an die Tabelle von TGGC gedacht.
Werbeanzeige