Vecka 5 – Meny och Ljud

Denna veckan har jag fortsatt med det som jag gjorde förra veckan, det vill säga första menyn. Det var dags att implementera så att man kunde använda musen i menyn istället för att behöva sitta och trycka på piltangenterna. Genom att byta till musen så slapp jag också “sleep” funktionen som inte är den bästa och kan ställa till med problem. Det som behövde göras var:

  • Musen skall kunna flyttas över texten och texten skall då byta färg för att indikera att den kan tryckas på.
  • Man skall kunna trycka med musen för att kunna gå vidare i menyn.
  • Olika ljud beroende på om man markerar ett val eller om man trycker sig vidare.

I det förra inlägget så nämnde jag hur jag gick till väga för att skapa en meny men denna veckan så har jag ändrat hyfsat mycket. Jag tog bort “MenuState” så nu finns det endast en klass som heter “Menu” som sköter allt. Den börjar med att ladda in all text med den font, storlek och vart den ska vara på skärmen.

Denna gången så skapas också en ruta runt alla de olika texter som finns. Jag kollar då hela tiden om musens koordinater går inom den rutan jag skapade och om det skulle ske så byts färgen på den texten inom den rutan till en annan. Detta använder jag också för att kolla ifall musknapp ett har blivit intryckt inom den rutan. Detta kan leda till besvär om man kollar med storleken på skärmen som jag gjorde först, för då kollar den efter musens koordinater på din skärm och inte i den rutan som spelet är i. Därför får man säga till den att kolla efter musens koordinater i rutan som man har skapat.
Ungefär såhär:
if (text.contains(sf::Mouse::getPosition(m_xSystem.m_pxWindowManager->GetWindow())))
{
  menu[0].setColor(sf::Color::Black);
}

Ett problem som jag har just nu är att den inte slutar räkna knappen som nertryckt efter man har tryckt en gång utan håller man nere knappen så fortsätter den att trycka tills man släpper. Detta leder till att om man trycker en gång så kan den gå in i en meny och sen ur den för knappen “Go back” är på samma ställe i en annan del av menyn som “Options”.
Detta kommer jag försöka lösa genom att sätta en boolean som kolla att ifall knappen är nedtryckt så sätts den till true och knapptryck kan endast registreras om den är false. Detta har jag inte försökt med än men det är något jag ska försöka lösa så snart som möjligt.

output_RhwPdI.gif

*Ni ser inte detta tydligen men det är en muspekare där, ni får använda fantasin!
**Bilden vid “Controls” är också för liten, fråga mig inte varför.. Den ska egentligen läggas över den andra när man går in där och sen tas bort när man går ur.

Leave a comment