From 08f58c2b1c25781190873efdb58bbb887f04ba9d Mon Sep 17 00:00:00 2001 From: johns <> Date: Sun, 21 Jul 2002 18:33:24 +0000 Subject: [PATCH] Fixed fog of war settings in multiplayer game. --- src/game/game.cpp | 6 ++++ src/map/map_fog.cpp | 88 +++------------------------------------------ src/ui/menus.cpp | 1 + 3 files changed, 11 insertions(+), 84 deletions(-) diff --git a/src/game/game.cpp b/src/game/game.cpp index fc2f06530..d63eb95e5 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -263,6 +263,12 @@ global void CreateGame(char* filename, WorldMap* map) } //GamePaused=1; + if( NetworkFildes!=-1 && TheMap.NoFogOfWar ) { + // FIXME: In multiplayer the map setup didn't reveal placed units. + TheMap.NoFogOfWar = 0; + MapUpdateVisible(); + TheMap.NoFogOfWar = 1; + } if( FlagRevealMap ) { RevealMap(); } diff --git a/src/map/map_fog.cpp b/src/map/map_fog.cpp index 183a93759..6d7d2e0d7 100644 --- a/src/map/map_fog.cpp +++ b/src/map/map_fog.cpp @@ -159,62 +159,6 @@ local int MapVisibleMask(void) */ global void MapMarkSight(const Player* player,int tx,int ty,int range) { -#if 0 - int i; - int x; - int y; - int height; - int width; - int mask; - - x=tx-range; - y=ty-range; - width=height=range+range; - - // Clipping - if( y<0 ) { - height+=y; - y=0; - } - if( x<0 ) { - width+=x; - x=0; - } - if( y+height>=TheMap.Height ) { - height=TheMap.Height-y-1; - } - if( x+width>=TheMap.Width ) { - width=TheMap.Width-x-1; - } - - mask=1<<player->Player; - ++range; - while( height-->=0 ) { - for( i=x; i<=x+width; ++i ) { - // FIXME: Can use quadrat table! - if( ((i-tx)*(i-tx)+(y-ty)*(y-ty))==range*range ) { - TheMap.Fields[i+y*TheMap.Width].ExploredMask=8; - TheMap.Fields[i+y*TheMap.Width].VisibleMask=8; - - TheMap.Fields[i+y*TheMap.Width].Visible|=mask; - TheMap.Fields[i+y*TheMap.Width].Explored|=mask; - if( player==ThisPlayer ) { - MapMarkSeenTile(i,y); - } - } else if( ((i-tx)*(i-tx)+(y-ty)*(y-ty))<range*range ) { - TheMap.Fields[i+y*TheMap.Width].ExploredMask=0; - TheMap.Fields[i+y*TheMap.Width].VisibleMask=0; - - TheMap.Fields[i+y*TheMap.Width].Visible|=mask; - TheMap.Fields[i+y*TheMap.Width].Explored|=mask; - if( player==ThisPlayer ) { - MapMarkSeenTile(i,y); - } - } - } - ++y; - } -#endif int i; int x; int y; @@ -1733,17 +1677,13 @@ local void DrawFogOfWarTile(int sx,int sy,int dx,int dy) /** ** Draw the map fog of war. ** +** @param v Viewport. ** @param x Map viewpoint x position. ** @param y Map viewpoint y position. */ -#ifdef SPLIT_SCREEN_SUPPORT -global void DrawMapFogOfWar (int v, int x,int y) +global void DrawMapFogOfWar(int v, int x,int y) { - Viewport *vp = &TheUI.VP[v]; -#else /* SPLIT_SCREEN_SUPPORT */ -global void DrawMapFogOfWar(int x,int y) -{ -#endif /* SPLIT_SCREEN_SUPPORT */ + Viewport* vp; int sx; int sy; int dx; @@ -1761,6 +1701,7 @@ global void DrawMapFogOfWar(int x,int y) static long mv=9999999; #endif + vp = &TheUI.VP[v]; redraw_row=MustRedrawRow; // flags must redraw or not redraw_tile=MustRedrawTile; @@ -1768,17 +1709,10 @@ global void DrawMapFogOfWar(int x,int y) p=ThisPlayer->Player; #endif -#ifdef SPLIT_SCREEN_SUPPORT ex = vp->EndX; sy = y*TheMap.Width; dy = vp->Y; ey = vp->EndY; -#else /* SPLIT_SCREEN_SUPPORT */ - ex=TheUI.MapEndX; - sy=y*TheMap.Width; - dy=TheUI.MapY; - ey=TheUI.MapEndY; -#endif /* SPLIT_SCREEN_SUPPORT */ while( dy<ey ) { if( *redraw_row ) { // row must be redrawn @@ -1788,11 +1722,7 @@ global void DrawMapFogOfWar(int x,int y) *redraw_row=0; #endif sx=x+sy; -#ifdef SPLIT_SCREEN_SUPPORT dx = vp->X; -#else /* SPLIT_SCREEN_SUPPORT */ - dx=TheUI.MapX; -#endif /* SPLIT_SCREEN_SUPPORT */ while( dx<ex ) { if( *redraw_tile ) { #if NEW_MAPDRAW > 1 @@ -1825,13 +1755,8 @@ extern int VideoDrawText(int x,int y,unsigned font,const unsigned char* text); if (PfHierShowRegIds || PfHierShowGroupIds) { regid = MapFieldGetRegId ( -#ifdef SPLIT_SCREEN_SUPPORT (dx-vp->X)/TileSizeX + vp->MapX, (dy-vp->Y)/TileSizeY + vp->MapY); -#else /* SPLIT_SCREEN_SUPPORT */ - (dx-TheUI.MapX)/TileSizeX + MapX, - (dy-TheUI.MapY)/TileSizeY + MapY); -#endif /* SPLIT_SCREEN_SUPPORT */ if (regid) { Region *r = RegionSetFind (regid); if (PfHierShowRegIds) { @@ -1852,11 +1777,7 @@ extern int VideoDrawText(int x,int y,unsigned font,const unsigned char* text); dx+=TileSizeX; } } else { -#ifdef SPLIT_SCREEN_SUPPORT redraw_tile += vp->MapWidth; -#else /* SPLIT_SCREEN_SUPPORT */ - redraw_tile+=MapWidth; -#endif /* SPLIT_SCREEN_SUPPORT */ } ++redraw_row; sy+=TheMap.Width; @@ -1870,7 +1791,6 @@ extern int VideoDrawText(int x,int y,unsigned font,const unsigned char* text); mv=sx; } - //DebugLevel0("%d\n",countit); DebugLevel1("%ld %ld %3ld\n",(long)sx,mv,(sx*100)/mv); #endif } diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp index e3a6ecd43..7d0feffab 100644 --- a/src/ui/menus.cpp +++ b/src/ui/menus.cpp @@ -3571,6 +3571,7 @@ local void CustomGameOPSAction(Menuitem *mi __attribute__((unused)), int i) local void MultiGameFWSAction(Menuitem *mi, int i) { if (!mi || mi->d.pulldown.curopt == i) { + DebugLevel0Fn("Update fow %d\n" _C_ i); switch (i) { case 0: TheMap.NoFogOfWar = 0;