static void DisplayLoop() { #if defined(USE_OPENGL) || defined(USE_GLES) if (UseOpenGL) { /* update only if screen changed */ ValidateOpenGLScreen(); } #endif /* update only if viewmode changed */ CheckViewportMode(); /* * update only if Update flag is set * FIXME: still not secure */ if (UI.Minimap.UpdateCache) { UI.Minimap.Update(); UI.Minimap.UpdateCache = false; } // // Map scrolling // DoScrollArea(MouseScrollState | KeyScrollState, (KeyModifiers & ModifierControl) != 0, MouseScrollState == 0 && KeyScrollState > 0); ColorCycle(); #ifdef REALVIDEO if (FastForwardCycle > GameCycle && RealVideoSyncSpeed != VideoSyncSpeed) { RealVideoSyncSpeed = VideoSyncSpeed; VideoSyncSpeed = 3000; } #endif if (FastForwardCycle <= GameCycle || GameCycle <= 10 || !(GameCycle & 0x3f)) { //FIXME: this might be better placed somewhere at front of the // program, as we now still have a game on the background and // need to go through the game-menu or supply a map file UpdateDisplay(); // // If double-buffered mode, we will display the contains of // VideoMemory. If direct mode this does nothing. In X11 it does // XFlush // RealizeVideoMemory(); } #ifdef REALVIDEO if (FastForwardCycle == GameCycle) { VideoSyncSpeed = RealVideoSyncSpeed; } #endif }
static void DisplayLoop() { #if defined(USE_OPENGL) || defined(USE_GLES) if (UseOpenGL) { /* update only if screen changed */ ValidateOpenGLScreen(); } #endif /* update only if viewmode changed */ CheckViewportMode(); /* * update only if Update flag is set * FIXME: still not secure */ if (UI.Minimap.UpdateCache) { UI.Minimap.Update(); UI.Minimap.UpdateCache = false; } // // Map scrolling // DoScrollArea(MouseScrollState | KeyScrollState, (KeyModifiers & ModifierControl) != 0, MouseScrollState == 0 && KeyScrollState > 0); ColorCycle(); //Wyrmgus start //do tile animation if (!GamePaused && GameCycle != 0 && GameCycle && GameCycle % (CYCLES_PER_SECOND / 4) == 0) { // same speed as color-cycling for (size_t z = 0; z < Map.Fields.size(); ++z) { for (int i = 0; i < Map.Info.MapWidths[z] * Map.Info.MapHeights[z]; ++i) { CMapField &mf = Map.Fields[z][i]; if (mf.Terrain && mf.Terrain->SolidAnimationFrames > 0) { mf.AnimationFrame += 1; if (mf.AnimationFrame >= mf.Terrain->SolidAnimationFrames) { mf.AnimationFrame = 0; } } if (mf.OverlayTerrain && mf.Terrain->SolidAnimationFrames > 0) { mf.OverlayAnimationFrame += 1; if (mf.OverlayAnimationFrame >= mf.Terrain->SolidAnimationFrames) { mf.OverlayAnimationFrame = 0; } } } } } //Wyrmgus end #ifdef REALVIDEO if (FastForwardCycle > GameCycle && RealVideoSyncSpeed != VideoSyncSpeed) { RealVideoSyncSpeed = VideoSyncSpeed; VideoSyncSpeed = 3000; } #endif if (FastForwardCycle <= GameCycle || GameCycle <= 10 || !(GameCycle & 0x3f)) { //FIXME: this might be better placed somewhere at front of the // program, as we now still have a game on the background and // need to go through the game-menu or supply a map file UpdateDisplay(); // // If double-buffered mode, we will display the contains of // VideoMemory. If direct mode this does nothing. In X11 it does // XFlush // RealizeVideoMemory(); } #ifdef REALVIDEO if (FastForwardCycle == GameCycle) { VideoSyncSpeed = RealVideoSyncSpeed; } #endif }