diff --git a/src/include/map.h b/src/include/map.h index 5f21e77bf..f3ef2adab 100644 --- a/src/include/map.h +++ b/src/include/map.h @@ -557,21 +557,21 @@ extern void MapSetWall(unsigned x,unsigned y,int humanwall); #ifdef NEW_FOW /// Check if a field for the user is explored -#define IsMapFieldExplored(x,y) \ - (IsTileVisible(ThisPlayer,x,y)) +#define IsMapFieldExplored(player,x,y) \ + (IsTileVisible(player,x,y)) /// Check if a field for the user is visibile -#define IsMapFieldVisible(x,y) \ - (IsTileVisible(ThisPlayer,x,y)>1) +#define IsMapFieldVisible(player,x,y) \ + (IsTileVisible(player,x,y)>1) #else /// Check if a field for the user is explored -#define IsMapFieldExplored(x,y) \ +#define IsMapFieldExplored(player,x,y) \ (TheMap.Fields[(y)*TheMap.Width+(x)].Flags&MapFieldExplored) /// Check if a field for the user is visibile -#define IsMapFieldVisible(x,y) \ +#define IsMapFieldVisible(player,x,y) \ (TheMap.Visible[0][((y)*TheMap.Width+(x))/32] \ &(1<<(((y)*TheMap.Width+(x))%32))) diff --git a/src/map/map_fog.cpp b/src/map/map_fog.cpp index 2c8134a1b..e2be97aef 100644 --- a/src/map/map_fog.cpp +++ b/src/map/map_fog.cpp @@ -450,7 +450,7 @@ global void MapMarkSight(int tx,int ty,int range) for( i=x; i<=x+width; ++i ) { if( PythagTree[abs(i-tx)][abs(y-ty)]<=range ) { // FIXME: can combine more bits - if( !IsMapFieldVisible(i,y) ) { + if( !IsMapFieldVisible(ThisPlayer,i,y) ) { TheMap.Fields[i+y*TheMap.Width].Flags |= MapFieldExplored; TheMap.Visible[0][(i+y*TheMap.Width)/32] |= 1<<((i+y*TheMap.Width)%32); @@ -588,7 +588,7 @@ global void UpdateFogOfWarChange(void) w=TheMap.Width; for( y=0; y<TheMap.Height; y++ ) { for( x=0; x<TheMap.Width; ++x ) { - if( IsMapFieldExplored(x,y) ) { + if( IsMapFieldExplored(ThisPlayer,x,y) ) { #ifndef NEW_FOW TheMap.Visible[0][(x+y*w)/32] |= 1<<((x+y*w)%32); #endif @@ -1784,66 +1784,66 @@ local void DrawFogOfWarTile(int sx,int sy,int dx,int dy) // if( sy ) { if( sx!=sy ) { - if( !IsMapFieldExplored(x-1,y-1) ) { + if( !IsMapFieldExplored(ThisPlayer,x-1,y-1) ) { tile2|=2; tile|=2; - } else if( !IsMapFieldVisible(x-1,y-1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x-1,y-1) ) { tile|=2; } } - if( !IsMapFieldExplored(x,y-1) ) { + if( !IsMapFieldExplored(ThisPlayer,x,y-1) ) { tile2|=3; tile|=3; - } else if( !IsMapFieldVisible(x,y-1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x,y-1) ) { tile|=3; } if( sx!=sy+w-1 ) { - if( !IsMapFieldExplored(x+1,y-1) ) { + if( !IsMapFieldExplored(ThisPlayer,x+1,y-1) ) { tile2|=1; tile|=1; - } else if( !IsMapFieldVisible(x+1,y-1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x+1,y-1) ) { tile|=1; } } } if( sx!=sy ) { - if( !IsMapFieldExplored(x-1,y) ) { + if( !IsMapFieldExplored(ThisPlayer,x-1,y) ) { tile2|=10; tile|=10; - } else if( !IsMapFieldVisible(x-1,y) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x-1,y) ) { tile|=10; } } if( sx!=sy+w-1 ) { - if( !IsMapFieldExplored(x+1,y) ) { + if( !IsMapFieldExplored(ThisPlayer,x+1,y) ) { tile2|=5; tile|=5; - } else if( !IsMapFieldVisible(x+1,y) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x+1,y) ) { tile|=5; } } if( sy+w<TheMap.Height*w ) { if( sx!=sy ) { - if( !IsMapFieldExplored(x-1,y+1) ) { + if( !IsMapFieldExplored(ThisPlayer,x-1,y+1) ) { tile2|=8; tile|=8; - } else if( !IsMapFieldVisible(x-1,y+1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x-1,y+1) ) { tile|=8; } } - if( !IsMapFieldExplored(x,y+1) ) { + if( !IsMapFieldExplored(ThisPlayer,x,y+1) ) { tile2|=12; tile|=12; - } else if( !IsMapFieldVisible(x,y+1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x,y+1) ) { tile|=12; } if( sx!=sy+w-1 ) { - if( !IsMapFieldExplored(x+1,y+1) ) { + if( !IsMapFieldExplored(ThisPlayer,x+1,y+1) ) { tile2|=4; tile|=4; - } else if( !IsMapFieldVisible(x+1,y+1) ) { + } else if( !IsMapFieldVisible(ThisPlayer,x+1,y+1) ) { tile|=4; } } @@ -1861,7 +1861,7 @@ local void DrawFogOfWarTile(int sx,int sy,int dx,int dy) tile=0; } } - if( IsMapFieldVisible(x,y) ) { + if( IsMapFieldVisible(ThisPlayer,x,y) ) { if( tile ) { VideoDrawFog(TheMap.Tiles[tile],dx,dy); // TheMap.Fields[sx].VisibleLastFrame|=MapFieldPartiallyVisible; diff --git a/src/map/map_rock.cpp b/src/map/map_rock.cpp index 746bd6784..006197e5d 100644 --- a/src/map/map_rock.cpp +++ b/src/map/map_rock.cpp @@ -168,7 +168,7 @@ global void MapFixSeenRockTile(int x, int y) } // FIXME: can this only happen if seen? - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MarkDrawPosMap(x, y); MustRedraw |= RedrawMinimap; @@ -307,7 +307,7 @@ global void MapFixRockTile(int x, int y) mf->Tile = tile; UpdateMinimapXY(x, y); - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); @@ -335,7 +335,7 @@ global void MapRemoveRock(unsigned x, unsigned y) UpdateMinimapXY(x, y); MapFixRockNeighbors(x, y); - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); diff --git a/src/map/map_save.cpp b/src/map/map_save.cpp index 37f7c74bf..0e8f5f291 100644 --- a/src/map/map_save.cpp +++ b/src/map/map_save.cpp @@ -100,7 +100,7 @@ global void SaveMap(FILE* file) } } #else - if( IsMapFieldVisible(w,h) ) { + if( IsMapFieldVisible(ThisPlayer,w,h) ) { fprintf(file," visible"); } if( mf->Flags&MapFieldExplored ) { diff --git a/src/map/map_wall.cpp b/src/map/map_wall.cpp index b9e3c2747..18d788a7a 100644 --- a/src/map/map_wall.cpp +++ b/src/map/map_wall.cpp @@ -158,7 +158,7 @@ global void MapFixSeenWallTile(int x, int y) mf->SeenTile = tile; // FIXME: can this only happen if seen? - if (IsMapFieldVisible(x, y)) { + if (IsMapFieldVisible(ThisPlayer, x, y)) { UpdateMinimapSeenXY(x, y); MarkDrawPosMap(x, y); MustRedraw |= RedrawMinimap; @@ -258,7 +258,7 @@ global void MapFixWallTile(int x, int y) mf->Tile = tile; UpdateMinimapXY(x, y); - if (IsMapFieldVisible(x, y)) { + if (IsMapFieldVisible(ThisPlayer, x, y)) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); @@ -299,7 +299,7 @@ global void MapRemoveWall(unsigned x, unsigned y) MapFixWallTile(x, y); MapFixWallNeighbors(x, y); - if (IsMapFieldVisible(x,y)) { + if (IsMapFieldVisible(ThisPlayer, x, y)) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); @@ -339,7 +339,7 @@ global void MapSetWall(unsigned x, unsigned y, int humanwall) MapFixWallTile(x, y); MapFixWallNeighbors(x, y); - if (IsMapFieldVisible(x, y)) { + if (IsMapFieldVisible(ThisPlayer, x, y)) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); diff --git a/src/map/map_wood.cpp b/src/map/map_wood.cpp index 1d4ec35a1..e2f0d06af 100644 --- a/src/map/map_wood.cpp +++ b/src/map/map_wood.cpp @@ -169,7 +169,7 @@ global void MapFixSeenWoodTile(int x, int y) } // FIXME: can this only happen if seen? - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MarkDrawPosMap(x, y); MustRedraw |= RedrawMinimap; @@ -306,7 +306,7 @@ global void MapFixWoodTile(int x, int y) UpdateMinimapXY(x, y); //MapFixWoodNeighbors(x, y); - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); @@ -334,7 +334,7 @@ global void MapRemoveWood(unsigned x, unsigned y) UpdateMinimapXY(x, y); MapFixWoodNeighbors(x, y); - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { UpdateMinimapSeenXY(x, y); MapMarkSeenTile(x, y); MarkDrawPosMap(x, y); @@ -389,10 +389,10 @@ global void RegenerateForest(void) mf->Tile = TheMap.Tileset->BotOneTree; mf->Value = 0; mf->Flags |= MapFieldForest | MapFieldUnpassable; - if ( IsMapFieldVisible(x,y) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y) ) { MapMarkSeenTile(x, y); } - if ( IsMapFieldVisible(x,y-1) ) { + if ( IsMapFieldVisible(ThisPlayer,x,y-1) ) { MapMarkSeenTile(x, y-1); } } diff --git a/src/map/minimap.cpp b/src/map/minimap.cpp index f1d8f3646..d4d843679 100644 --- a/src/map/minimap.cpp +++ b/src/map/minimap.cpp @@ -258,8 +258,8 @@ global void DrawMinimap(int vx __attribute__((unused)), for( my=0; my<MINIMAP_H; ++my ) { for( mx=0; mx<MINIMAP_W; ++mx ) { #ifdef NEW_FOW - if( IsMapFieldVisible(Minimap2MapX[mx],(Minimap2MapY[my]/TheMap.Width)) - || (IsMapFieldExplored(Minimap2MapX[mx], + if( IsMapFieldVisible(ThisPlayer,Minimap2MapX[mx],(Minimap2MapY[my]/TheMap.Width)) + || (IsMapFieldExplored(ThisPlayer,Minimap2MapX[mx], (Minimap2MapY[my]/TheMap.Width)) && ((mx&1)==(my&1)))) { VideoDrawPixel(((unsigned char*)MinimapGraphic->Frames) diff --git a/src/stratagus/missile.cpp b/src/stratagus/missile.cpp index 6fc677b44..4f5f7bd5b 100644 --- a/src/stratagus/missile.cpp +++ b/src/stratagus/missile.cpp @@ -721,8 +721,8 @@ local int MissileVisibleInViewport(const Viewport* vp, const Missile* missile) DebugLevel3Fn("Missile bounding box %d %d %d %d\n" _C_ min_x _C_ max_x _C_ min_y _C_ max_y); - if( !IsMapFieldVisible((missile->X-TileSizeX/2)/TileSizeX, - (missile->Y-TileSizeY/2)/TileSizeY)) { + if( !IsMapFieldVisible(ThisPlayer,(missile->X-TileSizeX/2)/TileSizeX, + (missile->Y-TileSizeY/2)/TileSizeY)) { return 0; } diff --git a/src/ui/mouse.cpp b/src/ui/mouse.cpp index 192d85501..02b609149 100644 --- a/src/ui/mouse.cpp +++ b/src/ui/mouse.cpp @@ -697,14 +697,15 @@ global void UIHandleMouseMove(int x,int y) const Viewport* vp; vp = TheUI.MouseViewport; - if (IsMapFieldVisible(Viewport2MapX(vp, x), Viewport2MapY(vp, y)) ) { + if (IsMapFieldVisible(ThisPlayer, Viewport2MapX(vp, x), + Viewport2MapY(vp, y)) ) { UnitUnderCursor = UnitOnScreen(NULL ,x-vp->X + vp->MapX*TileSizeX ,y-vp->Y + vp->MapY*TileSizeY); } } else if( CursorOn==CursorOnMinimap ) { mx=ScreenMinimap2MapX(x); my=ScreenMinimap2MapY(y); - if( IsMapFieldVisible(mx,my) ) { + if( IsMapFieldVisible(ThisPlayer,mx,my) ) { UnitUnderCursor=UnitOnMapTile(mx,my); } } @@ -1302,7 +1303,7 @@ global void UIHandleButtonDown(unsigned button) if( CanBuildUnitType(Selected[0],CursorBuilding,x,y) // FIXME: vladi: should check all building footprint // but not just MAPEXPLORED(x,y) - && IsMapFieldExplored(x,y) ) { + && IsMapFieldExplored(ThisPlayer,x,y) ) { PlayGameSound(GameSounds.PlacementSuccess.Sound ,MaxSampleVolume); SendCommandBuildBuilding(Selected[0],x,y,CursorBuilding @@ -1573,7 +1574,8 @@ global void UIHandleButtonUp(unsigned button) } // cade: cannot select unit on invisible space // FIXME: johns: only complete invisibile units - if( IsMapFieldVisible(Viewport2MapX(TheUI.MouseViewport,CursorX), + if( IsMapFieldVisible(ThisPlayer, + Viewport2MapX(TheUI.MouseViewport,CursorX), Viewport2MapY(TheUI.MouseViewport,CursorY)) ) { unit=UnitOnScreen(unit ,CursorX-TheUI.MouseViewport->X+ diff --git a/src/unit/unit.cpp b/src/unit/unit.cpp index 8239bf8e8..79ce048b6 100644 --- a/src/unit/unit.cpp +++ b/src/unit/unit.cpp @@ -999,7 +999,7 @@ global int UnitVisibleOnMap(const Unit* unit) // for( ; h-->0; ) { for( w=w0; w-->0; ) { - if( IsMapFieldVisible(x+w,y+h) ) { + if( IsMapFieldVisible(ThisPlayer,x+w,y+h) ) { return 1; } } @@ -1052,9 +1052,9 @@ global int UnitKnownOnMap(const Unit* unit) // for( ; h-->0; ) { for( w=w0; w-->0; ) { - if( IsMapFieldVisible(x+w,y+h) + if( IsMapFieldVisible(ThisPlayer,x+w,y+h) || (unit->Type->Building && unit->SeenFrame!=UnitNotSeen - && IsMapFieldExplored(x+w,y+h)) ) { + && IsMapFieldExplored(ThisPlayer,x+w,y+h)) ) { return 1; } } @@ -1120,9 +1120,9 @@ global int UnitVisibleInViewport(const Viewport* vp, const Unit* unit) // for( ; h-->0; ) { for( w=w0; w-->0; ) { - if( IsMapFieldVisible(x+w,y+h) + if( IsMapFieldVisible(ThisPlayer,x+w,y+h) || (unit->Type->Building && unit->SeenFrame!=UnitNotSeen - && IsMapFieldExplored(x+w,y+h)) ) { + && IsMapFieldExplored(ThisPlayer,x+w,y+h)) ) { return 1; } } @@ -2723,7 +2723,11 @@ global int FindWoodInSight(const Unit* unit,int* px,int* py) // // Look if there is wood // +#ifdef NEW_FOW + if ( ForestOnMap(x,y) && IsMapFieldExplored(unit->Player,x,y) ) { +#else if ( ForestOnMap(x,y) ) { +#endif if( destu ) { n=max(abs(destx-x),abs(desty-y)); if( n<bestd ) { diff --git a/src/video/cursor.cpp b/src/video/cursor.cpp index 271339440..e128008d1 100644 --- a/src/video/cursor.cpp +++ b/src/video/cursor.cpp @@ -736,7 +736,7 @@ local void DrawBuildingCursor(void) ((Selected[0] && Selected[0]->X==mx+w && Selected[0]->Y==my+h) ? ~(MapFieldLandUnit|MapFieldSeaUnit) : -1)) - && IsMapFieldExplored(mx+w,my+h) ) { + && IsMapFieldExplored(ThisPlayer,mx+w,my+h) ) { color=ColorGreen; } else { color=ColorRed;