-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mousePressed() werkt niet voor Dashboards #26
Comments
Hoi Stijn, Ja klopt. Dank @stijnb1234 voor je issue. edited TL; DRHopelijk kun je met feedback die wij vanmiddag bespraken verder zonder meteen een aanpassing in Game Engine. Je kunt ook een eigen GameEngine extends maken waarin je de mousePressed() override. Maar kudo's voor aanmaken issue, met ook concrete code suggesties; dat weeg ik mee bij de beoordeling! The long versionOmdat je binnen Het probleem ligt feitelijk in de game engine, al kun je in plaats van een bug dit ook een feature noemen. Want een Dashboard is bedoeld om info te tonen, niet om clicks en andere mousevents af te handelen. Al beschrijft de api docs dit nu nog niet zo expliciet. En is daarnaast het feit dat Dashboard inderdaad GameObject extend verwarrend. Of eigenlijk het feit dat superklasse GameObject implements IMouseEvent. Dat laatste is wat mij betreft de ontwerpfout in OOPG. Ik heb me nog niet precies genoeg verdiept in de functionaliteit van A Voorkomen dubbele for loopEen andere optie is dat er een enkele abstracte superklasse boven GameObject en Dashboard zet Verder dat je voor beide als ontwikkelaar zelf expliciet moet aangeven in je eigen specifieke extended klasse of deze IMouseEvent en IKeybioardEvent implementen, net zoals je dit doet voor B Voorkomen lege methodesVanwege Interface seggregation principe zou je in plaats van een enkele IMouseEvent interface moeten opsplitsen eigenlijk aparte IClickable, IMouseMovable, etc. moeten maken, met elke een of enkele methodes (mousePressed en mouseReleased zouden wel in 1 interface kunnen). Analoog voor de keyboard interface. Wellicht hier een onderscheid ook maken tussen handlen van alleen keypress, of ook keyrRelease cq. het ingedrukt houden van een toets, waar je nu ook zelf workaround moet maken. Anders eindig je weer met een boel methodes met een lege method body (wat ik voor het gemak vaak gewoon kort 'lege methodes' noem in les en bij assessments...). Vanwege ontwikkelen nieuwe game engine Yaeger is het onwaarschijnlijk dat we dit oppakken. Maar wellicht treden hier soortgelijke issues in op. Waar bovengenoemde aanpak wellicht ook iets van kan oplossen. |
mousePressed() bestaat gewoon in een Dashboard, omdat het een GameObject extend.
Alleen wordt de mousePressed() niet aangeroepen in de GameEngine voor een dashboard, omdat die niet in de gameobject lijst aanwezig zijn.
oopg/src/main/java/nl/han/ica/oopg/engine/GameEngine.java
Lines 386 to 396 in d00d327
Dit valt simpel te fixen, door dezelfde code ook te gebruiken voor de dashboards lijst.
Bijvoorbeeld:
(Dit geldt overigens ook voor alle andere mouse events)
The text was updated successfully, but these errors were encountered: