kostenloser Webspace werbefrei: lima-city


Problem mit einer Switch Case

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    Hallo,

    Ich habe eine (eigentlich) recht einfache Switch Case, die nichts anderes machen soll, als ein Event nach 9000ms aufzurufen... Allerdings passiert dies nicht, sondern das Event wird direkt aufgerufen, ohne jegliche Spur der "Wartezeit"...


    uiWaveCount == Die Wellen, die gespawnt werden sollen (fängt bei eins an)
    events.ScheduleEvent(EVENT_NEXT_WAVE, 9000); == Hier soll das Event nach 9000ms Aufgerufen werden
    switch (events.ExecuteEvent()) == Hier wird das Event ausgeführt


    Das Event wird gestartet etwas weiter oben durch eine IF
    if (type == DATA_WAVE_COUNT && data == SPECIAL)
                {
    				  uiWaveCount == 0;
                      bIntroDone = true;
                      CloseDoor(uiFrontDoor);
                      CloseDoor(uiRunDoor);
                      if(uiWaveCount == 0){
    						events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    				  }
                    return;
                }

    Damit habe ich keine Probleme, das funktioniert so, bis auf das der Timer eben nicht geht...


    Hier werden die Wellen aufgezählt und die nächste Zeit der Welle bestimmt:
    void AddWave()
            {
    			if(uiWaveCount <= 10){
    				DoUpdateWorldState(WORLD_STATE_HOR, 1); //Counter Anzeige (unwichtig) weil funktioniert
    				DoUpdateWorldState(WORLD_STATE_HOR_WAVE_COUNT, uiWaveCount); //Counter (unwichtig) weil funktioniert
    			}
    
                switch (uiWaveCount)
                {
                    case 1:
    					if (Creature* falric = instance->GetCreature(uiFalric)){ //unwichtig, weil funktioniert
    							SpawnWave(falric);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);//Nächste Welle in 1:30 Min
    							return;
    					}
    					break;
                    case 2:
    					if (Creature* falric = instance->GetCreature(uiFalric)){ 
    							SpawnWave(falric);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
    					break;
                    case 3:
    					if (Creature* falric = instance->GetCreature(uiFalric)){
    							SpawnWave(falric);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
    					break;
                    case 4:
    					if (Creature* falric = instance->GetCreature(uiFalric)){
    							SpawnWave(falric);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
    					break;
                    case 5:
                        if (GetData(DATA_FALRIC_EVENT) == DONE) //unwichtig, weil funktioniert
                               events.ScheduleEvent(EVENT_NEXT_WAVE, 10000); //funktioniert nicht
                        else if (Creature* falric = instance->GetCreature(uiFalric))//unwichtig, weil funktioniert
                             if (falric->AI()) //unwichtig, weil funktioniert
                                    falric->AI()->DoAction(ACTION_ENTER_COMBAT); //unwichtig, weil funktioniert
                        break;
                    case 6:
    					if (Creature* marwyn  = instance->GetCreature(uiMarwyn)){ //unwichtig, weil funktioniert
    							SpawnWave(marwyn);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
                        break;
                    case 7:
    					if (Creature* marwyn  = instance->GetCreature(uiMarwyn)){
    							SpawnWave(marwyn);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
                        break;
                    case 8:
    					if (Creature* marwyn  = instance->GetCreature(uiMarwyn)){
    							SpawnWave(marwyn);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
                        break;
                    case 9:
    					if (Creature* marwyn  = instance->GetCreature(uiMarwyn)){
    							SpawnWave(marwyn);
    							events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
    							return;
    					}
                        break;
                    case 10:
                        if (GetData(DATA_MARWYN_EVENT) != DONE) //unwichtig, weil funktioniert
                             if (Creature* marwyn = instance->GetCreature(uiMarwyn)) //unwichtig, weil funktioniert
                                if (marwyn->AI()) //unwichtig, weil funktioniert
                                       marwyn->AI()->DoAction(ACTION_ENTER_COMBAT); //unwichtig, weil funktioniert
                        break;
                }
            }

    Die Wellen erscheinen und alles funktioniert wunderbar, nur die Zeit nicht


    Hier wird das Event ausgeführt:
    void Update(uint32 diff)
            {
                if (!instance->HavePlayers())
                    return;
    
                events.Update(diff);
    
                switch (events.ExecuteEvent())
                {
                    case EVENT_NEXT_WAVE:
    						uiWaveCount++; //Welle hoch Zählen für Counter und Switch Case
    						AddWave(); //Switch Case und Counter- Update ausführen
                        break;
                }
            }



    ScheduleEvent Referenz

    Es geht also NUR darum die Wellen (uiWavesCount) zeitgemäß auszuführen und nicht immer sofort... Ist es vielleicht ein Logik Fehler oder so?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. if (type == DATA_WAVE_COUNT && data == SPECIAL)  {
    
             /* uiWaveCount == 0;   */    /* vorher */
             uiWaveCount = 0;             /* nachher */
    
    
             bIntroDone = true;
             CloseDoor(uiFrontDoor);
             CloseDoor(uiRunDoor);
             if (uiWaveCount == 0) {
                events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
             }
             return;
    }



    Vielleicht funktioniert es, wenn man den Vergleich (==) durch eine Zuweisung (=) ersetzt?

    Beitrag zuletzt geändert: 15.5.2013 22:08:58 von perlbotics
  4. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    Okay, dummer Fehler.. Einen Unterschied hat's nun allerdings nicht gemacht :s
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!