stratagus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Stratagus-CVS] stratagus/src/map map_fog.c


From: Jimmy Salmon
Subject: [Stratagus-CVS] stratagus/src/map map_fog.c
Date: Sun, 23 Nov 2003 15:13:13 -0500

CVSROOT:        /cvsroot/stratagus
Module name:    stratagus
Branch:         
Changes by:     Jimmy Salmon <address@hidden>   03/11/23 15:13:13

Modified files:
        src/map        : map_fog.c 

Log message:
        Speed up solid fog

Patches:
Index: stratagus/src/map/map_fog.c
diff -u stratagus/src/map/map_fog.c:1.118 stratagus/src/map/map_fog.c:1.119
--- stratagus/src/map/map_fog.c:1.118   Fri Nov 21 22:00:19 2003
+++ stratagus/src/map/map_fog.c Sun Nov 23 15:13:13 2003
@@ -27,7 +27,7 @@
 //      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //      02111-1307, USA.
 //
-//     $Id: map_fog.c,v 1.118 2003/11/22 03:00:19 nehalmistry Exp $
+//     $Id: map_fog.c,v 1.119 2003/11/23 20:13:13 jsalmon3 Exp $
 
 //@{
 
@@ -122,6 +122,8 @@
 global int* VisionLookup;
 
 #ifdef USE_SDL_SURFACE
+SDL_Surface* SolidFog;
+
 local void (*VideoDrawUnexplored)(const int, int, int);
 local void (*VideoDrawFog)(const int, int, int);
 local void (*VideoDrawOnlyFog)(const int, int x, int y);
@@ -2762,8 +2764,14 @@
        }
     } else {
 #ifdef USE_SDL_SURFACE
+       SDL_Rect drect;
+       drect.x = dx;
+       drect.y = dy;
        // Tile is fully FOW
+       SDL_BlitSurface(SolidFog, NULL, TheScreen, &drect);
+#else
        VideoFillTransRectangleClip(ColorBlack, dx, dy, TileSizeX, TileSizeY, 
128);
+#endif
 #else
        VideoDrawOnlyFog(TheMap.Tiles[UNEXPLORED_TILE], dx, dy);
 #endif
@@ -2939,6 +2947,14 @@
 #else
 
 #ifdef USE_SDL_SURFACE
+    if (!SolidFog) {
+       SDL_Surface* s;
+       s = SDL_CreateRGBSurface(SDL_SWSURFACE, TileSizeX, TileSizeY,
+           32, RMASK, GMASK, BMASK, AMASK);
+       SDL_FillRect(s, NULL, SDL_MapRGBA(s->format, 0, 0, 0, 128));
+       SolidFog = SDL_DisplayFormatAlpha(s);
+       SDL_FreeSurface(s);
+    }
     if (!OriginalFogOfWar) {
        VideoDrawFog = VideoDrawFogAlpha;
        VideoDrawOnlyFog = VideoDrawOnlyFogAlpha;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]