Aktuelle Zeit: 22.12.2024, 19:19

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 23.12.2008, 17:55 
Offline

Registriert: 09.07.2008, 13:03
Beiträge: 14
Hallo Leute,
also ich programmiere an etwas RTS ähnlichem.
Im Vordergrund möchte ich halt ein RTS typisches Menü machen, in dem man Bauoptionen usw. auswählen kann. Ich habe also erstmal ein paar Gui-Buttons da platziert.
Jetzt habe ich das Problem, dass ich nicht beide eventTypes verarbeiten kann. Entweder funktionieren nur die Klicks auf die GUI oder nur die auf die Spiel-Welt

Ich habe den GUI Code einfach in die OnEventfunktion reingeschrieben. Darf man das nicht?
Code:
bool Game::OnEvent(const SEvent& event)
{
if( event.EventType == EET_MOUSE_INPUT_EVENT && event.MouseInput.Event == EMIE_MOUSE_WHEEL ) { [...] }
[...]
if (event.EventType == EET_GUI_EVENT)
      {
         s32 id = event.GUIEvent.Caller->getID();
         env = pDevice->getGUIEnvironment();
        [...]
        switch(event.GUIEvent.EventType)
            {
           case EGET_BUTTON_CLICKED:
            if (id == 101)
              { [...] }
           break;
      }
    return false; // DIESES RETURN IST GEIMEINT!

    //Maus  Tastatur
   if( event.EventType == EET_KEY_INPUT_EVENT && event.KeyInput.Key == KEY_ESCAPE )
   {
        [...]
   }
return false;
}


Wenn ich das gekennzeichnete return false hinschreibe, funktionieren alle Klicks auf die GUI aber nicht mehr die Klicks "in die Welt". Wenn ich es weglasse, gehen alle Klicks im Spiel, aber nicht mehr dir in der GUI.

Was mache ich falsch,
Danke
Max


Nach oben
 Profil  
 
BeitragVerfasst: 23.12.2008, 18:21 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Das sieht eigentlich soweit richtig aus.
Gibts du denn auch immer true zurück, wenn du das Event verarbeitet hast ?

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 23.12.2008, 21:18 
Offline

Registriert: 09.07.2008, 13:03
Beiträge: 14
Danke für deine Antwort.

Ja ich gebe immer ein true zurück.

Komisch ist auch folgendes:
Wenn ich das im obigen Code markierte return false weglasse und in das event für die GUI ein printf einbaue, funktioniert zwar das klicken der Buttons nicht, aber jedesmal wenn ich über die Buttons fahre, wird mit GUI!!!! ausgegeben.

Code:
[...]if (event.EventType == EET_GUI_EVENT)
      {
         printf("GUI!!!!");
         s32 id = event.GUIEvent.Caller->getID();
         env = pDevice->getGUIEnvironment();

            switch(event.GUIEvent.EventType){
case EGET_BUTTON_CLICKED:
              if (id == 101)
              {
                 printf("close");
                 pDevice->closeDevice();
                 return true;
              }
[...]


Bei printf("close"); kommt er aber nie an.


Nach oben
 Profil  
 
BeitragVerfasst: 23.12.2008, 21:51 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Bist du denn schonmal mit nem Debugger durchgegangen und hast dir die Werte der einzelnen Variablen angeguckt ?

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de