Open bartvanderwal opened 4 years ago
Het lijkt erop dat we voor het volgend collegejaar overgaan op een nieuwe GameEngine. Ontwikkelingen aan de huidige engine liggen dan ook stil
Dank @meronbrouwer voor snelle reactie. Maar ik heb dit issue aangemaakt n.a.v. gewenste functionaliteit in game van studenten uit mijn klas 1DD van deze editie. Die zijn te eager om te kunnen wachten op yaeger 😛.
Ontwikkelingen aan engine liggen niet geheel stil, want ik heb het in combi 'oopg en waterworld' repo nu ook al gefixed, getest en gecommit. Zie issue nummer 1 daar. De code wijzigingen in GameEngine
en GameThread
zijn zo over te nemen vanaf daar om de pauze functionaliteit voor iedereen beschikbaar te maken (op p
drukken (of andere knop instellen via setPauseButton
).
Uiteraard moet dan wel de oopg online documentatie (JavaDoc) ook opnieuw gegenereerd en geüpdatet worden. En de maven versie gebumped (naar 2.1.0
stel ik voor), dus ik snap wel dat je daar niet op zit te wachten. Ik wil het ook wel doen.
Pauzeren in het spel werkt praktisch gezien niet. Hieronder een verdere uitleg, met ook oplossingsrichting.
De
GameEngine
klasse heeftpauseGame()
enresumeGame()
methodes. Alleen praktisch gezien zijn deze niet te gebruiken. Want typisch wil je op basis van keypressed het spel pauzeren en ook weer onpauzer. Het eerste lukt nog wel, maar het tweede niet, want op het moment dat je vanuit een keypressed het spel op pauze zet kun je vervolgens geen toetseninput meer binnen omdat de GameThread dan op pause staat, en de keyPressed methode uit GameObjects allen op deze thread draaien.Het is logischer om op centraal niveau de pauzeknop af te handelen; dus buiten de gamethread. Een
togglePaused
methode is dan logischer, dan twee aparte methoden (zonder isPaused property en/of getter/methode op de GameEngine zou je deze elders moeten gaan bijhouden i.p.v. op de GameEngine wat ook onwenselijk is.De pauzeknop is dan wel in te stellen via een
GameEngine.setPauseButton(int key)
button, maar heeft een logische default, namelijk dep
toets (kleine letter of grote letter).Andere toetsen dan de pauzeknop forward de
keyPressed
methode dan nog steeds naar alle klassen die `IKeyInputz implementeren, zoals al het geval is.