From 84582d1930b42e058c3a3ca85f793383d66d65a1 Mon Sep 17 00:00:00 2001 From: johns <> Date: Fri, 28 Apr 2000 20:36:33 +0000 Subject: [PATCH] macros MAPFIELD,MAPMOVE,IMMAP,INMAP,... removed --- include/map.h | 17 ++-- map/map.cpp | 197 +++++++++++++++++++++++++++++++-------------- map/map_fog.cpp | 2 +- map/map_rock.cpp | 101 ++++++++++++++--------- map/map_wall.cpp | 34 +++++--- map/map_wood.cpp | 72 +++++++++++------ ui/mouse.cpp | 8 +- unit/unit_draw.cpp | 12 +-- 8 files changed, 282 insertions(+), 161 deletions(-) diff --git a/include/map.h b/include/map.h index 89e4ef301..b5c627473 100644 --- a/include/map.h +++ b/include/map.h @@ -72,8 +72,10 @@ typedef struct _map_field_ { #endif } MapField; +#ifndef NEW_FOW #define MapFieldVisible 0x0001 /// Field visible #define MapFieldExplored 0x0002 /// Field explored +#endif #define MapFieldArray 0x0004 /// More than one unit on the field @@ -254,18 +256,17 @@ extern void MapSetWall(unsigned x,unsigned y,int humanwall); -- Defines ----------------------------------------------------------------------------*/ + /// Can an unit with 'mask' can enter the field. #define CanMoveToMask(x,y,mask) \ !(TheMap.Fields[(x)+(y)*TheMap.Width].Flags&(mask)) -#define MAPFIELD(xx,yy) TheMap.Fields[(xx)+(yy)*TheMap.Width] -#define MAPMOVE(xx,yy) TheMap.MovementMap[(xx)+(yy)*TheMap.Width] -#define INMAP(xx,yy) ((xx)>=0&&(yy)>=0&&(xx)<TheMap.Width&&(yy)<TheMap.Height) -#define MAPVISIBLE(xx,yy) (INMAP(xx,yy) ? !!(TheMap.Fields[(yy)*TheMap.Width+(xx)].Flags&MapFieldVisible ) : 1) -#define MAPEXPLORED(xx,yy) (INMAP(xx,yy) ? !!(TheMap.Fields[(yy)*TheMap.Width+(xx)].Flags&MapFieldExplored) : 1) + /// Check if a field for the user is explored +#define IsMapFieldExplored(x,y) \ + (TheMap.Fields[(y)*TheMap.Width+(x)].Flags&MapFieldExplored) -#define MAPTILE(xx,yy) (MAPFIELD(xx,yy).Tile) -#define MAPSEENTILE(xx,yy) (MAPFIELD(xx,yy).SeenTile) -#define TILETYPE(tile) (TheMap.Tileset->TileTypeTable[tile]) + /// Check if a field for the user is visibile +#define IsMapFieldVisible(x,y) \ + (TheMap.Fields[(y)*TheMap.Width+(x)].Flags&MapFieldVisible) #define UNEXPLORED_TILE 0 diff --git a/map/map.cpp b/map/map.cpp index 45e76c7dd..af316f67e 100644 --- a/map/map.cpp +++ b/map/map.cpp @@ -143,54 +143,63 @@ global void SaveMap(FILE* file) } /*---------------------------------------------------------------------------- --- +-- Visibile and explored handling ----------------------------------------------------------------------------*/ /** ** Marks seen tile -- used mainly for the Fog Of War +** +** @param x Map X position. +** @param y Map Y position. */ global void MapMarkSeenTile( int x, int y ) { - int t, st; // tile, seentile + int t, st; // tile, seentile + MapField* mf; - if (MAPFIELD(x,y).SeenTile == MAPFIELD(x,y).Tile) return; - - t = MAPFIELD(x,y).Tile; - st = MAPFIELD(x,y).SeenTile; - MAPFIELD(x,y).SeenTile = MAPFIELD(x,y).Tile; - - if( !TheMap.Tileset ) return; // FIXME: this is needed, because tileset - // is loaded after this function is needed - // LoadPud, PlaceUnit, ... MapMarkSeenTile - - // handle WOODs - - if ( st != TheMap.Tileset->NoWoodTile && t == TheMap.Tileset->NoWoodTile ) - MapFixWood( x, y ); - else - if ( st == TheMap.Tileset->NoWoodTile && t != TheMap.Tileset->NoWoodTile ) - FixWood( x, y ); - else - if ( MapWoodChk( x, y ) && t != st ) - { - FixWood( x, y ); - MapFixWood( x, y ); + mf=TheMap.Fields+x+y*TheMap.Width; + t = mf->Tile; + st = mf->SeenTile; + if ( st == t ) { // Nothing changed. + return; } - // handle WALLs -#define ISTILEWALL(t) (TILETYPE(t) == TileTypeHWall || TILETYPE(t) == TileTypeOWall) - if ( ISTILEWALL(st) && !ISTILEWALL(st) ) - MapFixWall( x, y ); - else - if ( !ISTILEWALL(st) && ISTILEWALL(st) ) - FixWall( x, y ); - else - if ( MapWallChk( x, y, -1 ) && t != st ) - { - FixWall( x, y ); - MapFixWall( x, y ); + mf->SeenTile=t; + + // FIXME: this is needed, because tileset is loaded after this function + // is needed LoadPud, PlaceUnit, ... MapMarkSeenTile + if( !TheMap.Tileset ) { + return; } -}; + + // handle WOODs + + if ( st != TheMap.Tileset->NoWoodTile + && t == TheMap.Tileset->NoWoodTile ) { + MapFixWood( x, y ); + } else if ( st == TheMap.Tileset->NoWoodTile + && t != TheMap.Tileset->NoWoodTile ) { + FixWood( x, y ); + } else if ( MapWoodChk( x, y ) ) { + FixWood( x, y ); + MapFixWood( x, y ); + } + + // handle WALLs + +#define ISTILEWALL(tile) \ + (TheMap.Tileset->TileTypeTable[(tile)] == TileTypeHWall \ + || TheMap.Tileset->TileTypeTable[(tile)] == TileTypeOWall) + + if ( ISTILEWALL(st) && !ISTILEWALL(st) ) + MapFixWall( x, y ); + else if ( !ISTILEWALL(st) && ISTILEWALL(st) ) + FixWall( x, y ); + else if ( MapWallChk( x, y, -1 ) ) { + FixWall( x, y ); + MapFixWall( x, y ); + } +} /** ** Reveal the entire map. @@ -201,10 +210,9 @@ global void RevealMap(void) for ( ix = 0; ix < TheMap.Width; ix++ ) { for ( iy = 0; iy < TheMap.Height; iy++ ) { - MAPFIELD(ix,iy).Flags |= MapFieldExplored; - if (TheMap.NoFogOfWar) { - MAPFIELD(ix,iy).Flags |= MapFieldVisible; - } + TheMap.Fields[ix+iy*TheMap.Width].Flags + |= MapFieldExplored + | TheMap.NoFogOfWar ? MapFieldVisible : 0; MapMarkSeenTile(ix,iy); } } @@ -255,6 +263,7 @@ global void MapCenter(int x,int y) ** ** @param x X map tile position. ** @param y Y map tile position. +** ** @return True if water, false otherwise. */ global int WaterOnMap(int tx,int ty) @@ -314,6 +323,11 @@ global int OrcWallOnMap(int tx,int ty) /** ** Forest on map tile. Checking version. +** +** @param x X map tile position. +** @param y Y map tile position. +** +** @return True if forest, false otherwise. */ global int CheckedForestOnMap(int tx,int ty) { @@ -325,6 +339,11 @@ global int CheckedForestOnMap(int tx,int ty) /** ** Forest on map tile. +** +** @param x X map tile position. +** @param y Y map tile position. +** +** @return True if forest, false otherwise. */ global int ForestOnMap(int tx,int ty) { @@ -342,6 +361,12 @@ global int ForestOnMap(int tx,int ty) /** ** Can move to this point, applying mask. +** +** @param x X map tile position. +** @param y Y map tile position. +** @param mask Mask for movement to apply. +** +** @return True if could be entered, false otherwise. */ global int CheckedCanMoveToMask(int x,int y,int mask) { @@ -355,6 +380,12 @@ global int CheckedCanMoveToMask(int x,int y,int mask) #ifndef CanMoveToMask /** ** Can move to this point, applying mask. +** +** @param x X map tile position. +** @param y Y map tile position. +** @param mask Mask for movement to apply. +** +** @return True if could be entered, false otherwise. */ global int CanMoveToMask(int x,int y,int mask) { @@ -376,6 +407,7 @@ global int CanMoveToMask(int x,int y,int mask) ** This flags are used to mark the field for this unit. ** ** @param unit Pointer to unit. +** ** @return Field flags to be set. */ global unsigned UnitFieldFlags(const Unit* unit) @@ -418,7 +450,7 @@ global int TypeMovementMask(const UnitType* type) case UnitTypeFly: // in air return MapFieldAirUnit; // already occuppied case UnitTypeNaval: // on water - if( type->Transporter ) { + if( type->Transporter ) { return MapFieldLandUnit | MapFieldSeaUnit | MapFieldBuilding // already occuppied @@ -448,35 +480,76 @@ global int UnitMovementMask(const Unit* unit) return TypeMovementMask(unit->Type); } -/*---------------------------------------------------------------------------- -*/ - /** ** Fixes initially the wood and seen tiles. */ global void PreprocessMap(void) { - unsigned ix, iy; + unsigned ix, iy; + MapField* mf; - for ( ix = 0; ix < TheMap.Width; ix++ ) - for ( iy = 0; iy < TheMap.Height; iy++ ) - { - MAPFIELD( ix, iy ).SeenTile = MAPFIELD( ix, iy ).Tile; - } + for ( ix = 0; ix < TheMap.Width; ix++ ) { + for ( iy = 0; iy < TheMap.Height; iy++ ) { + mf=TheMap.Fields+ix+iy*TheMap.Width; + mf->SeenTile=mf->Tile; + } + } // it is required for fixing the wood that all tiles are marked as seen! - for ( ix = 0; ix < TheMap.Width; ix++ ) - for ( iy = 0; iy < TheMap.Height; iy++ ) - { - FixWood( ix, iy ); - FixWall( ix, iy ); - } -}; + for ( ix = 0; ix < TheMap.Width; ix++ ) { + for ( iy = 0; iy < TheMap.Height; iy++ ) { + FixWood( ix, iy ); + FixWall( ix, iy ); + } + } +} +/** +** Convert a screen coordinate to map tile. +** +** @param x X screen coordinate. +** +** @returns X tile number. +*/ +global int Screen2MapX(int x) +{ + return (((x)-TheUI.MapX)/TileSizeX+MapX); +} -global int Screen2MapX(int x) { return (((x)-TheUI.MapX)/TileSizeX+MapX); } -global int Screen2MapY(int x) { return (((x)-TheUI.MapY)/TileSizeY+MapY); } -global int Map2ScreenX(int x) { return (TheUI.MapX+((x)-MapX)*TileSizeX); } -global int Map2ScreenY(int x) { return (TheUI.MapY+((x)-MapY)*TileSizeY); } +/** +** Convert a screen coordinate to map tile. +** +** @param y Y screen coordinate. +** +** @returns Y tile number. +*/ +global int Screen2MapY(int y) +{ + return (((y)-TheUI.MapY)/TileSizeY+MapY); +} + +/** +** Convert a map tile into screen coordinate. +** +** @param x X tile number. +** +** @returns X screen coordinate. +*/ +global int Map2ScreenX(int x) +{ + return (TheUI.MapX+((x)-MapX)*TileSizeX); +} + +/** +** Convert a map tile into screen coordinate. +** +** @param y Y tile number. +** +** @returns Y screen coordinate. +*/ +global int Map2ScreenY(int y) +{ + return (TheUI.MapY+((y)-MapY)*TileSizeY); +} //@} diff --git a/map/map_fog.cpp b/map/map_fog.cpp index d15d30301..8cf233577 100644 --- a/map/map_fog.cpp +++ b/map/map_fog.cpp @@ -191,7 +191,7 @@ global void MapUpdateVisible(void) if (TheMap.NoFogOfWar) { for( x=0; x<TheMap.Width; ++x ) { for( y=0; y<TheMap.Height; y++ ) { - if ( MAPVISIBLE(x,y) ) { + if ( IsMapFieldVisible(x,y) ) { MapMarkSeenTile( x,y ); } } diff --git a/map/map_rock.cpp b/map/map_rock.cpp index ccd695aa0..2ab9ff89d 100644 --- a/map/map_rock.cpp +++ b/map/map_rock.cpp @@ -31,7 +31,7 @@ -- Declarations ----------------------------------------------------------------------------*/ - // -1 is hack should be fixed later + // FIXME: -1 is hack should be fixed later #define FIRST_ROCK_TILE (TheMap.Tileset->FirstRockTile-1) /*---------------------------------------------------------------------------- @@ -47,50 +47,71 @@ local const int RockTable[16] = { -- Functions ----------------------------------------------------------------------------*/ -local int RockChk(int x,int y) // used by FixRock and PreprocessMap +/** +** Check if the tile type is rock. +** +** Used by @see FixRock and @see PreprocessMap +*/ +local int MapRockChk(int x,int y) { - if( !INMAP(x,y) ) return 1; // outside considered rock - return (TILETYPE(MAPSEENTILE(x,y)) == TileTypeRock); + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 1; // outside considered rock + } + + return TheMap.Tileset->TileTypeTable[ + TheMap.Fields[(x)+(y)*TheMap.Width].SeenTile + ] == TileTypeRock; } +// FIXME: docu local int FixRock(int x,int y) // used by MapRemoveRock and PreprocessMap { - int tile = 0; + int tile; + MapField* mf; - if ( !INMAP(x,y) ) return 0; - if ( RockChk(x,y) == 0 ) return 0; - - #define ROCK(xx,yy) (RockChk(xx,yy) != 0) - if (ROCK(x ,y-1)) tile |= 1<<0; - if (ROCK(x+1,y )) tile |= 1<<1; - if (ROCK(x ,y+1)) tile |= 1<<2; - if (ROCK(x-1,y )) tile |= 1<<3; - - tile = RockTable[tile]; - if (tile == -1) - MapRemoveRock(x,y); - else - { - if (tile == RockTable[15]) - { - // Vladi: still to filter tiles w. corner empties -- note: the original - // tiles and order are not perfect either. It's a hack but is enough and - // looks almost fine. - if (RockChk(x+1,y-1) == 0) tile = 7; else - if (RockChk(x+1,y+1) == 0) tile = 10; else - if (RockChk(x-1,y+1) == 0) tile = 11; else - if (RockChk(x-1,y-1) == 0) tile = 4; else - tile = RockTable[15]; // not required really - } - - tile += FIRST_ROCK_TILE; - if (MAPFIELD(x,y).SeenTile == tile) return 0; - MAPFIELD(x,y).SeenTile = tile; + // Outside map or no rock. + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 0; } - UpdateMinimapXY(x,y); - return 1; + if ( !MapRockChk(x,y) ) { + return 0; + } + +#define ROCK(xx,yy) (MapRockChk(xx,yy) != 0) + tile = 0; + if (ROCK(x ,y-1)) tile |= 1<<0; + if (ROCK(x+1,y )) tile |= 1<<1; + if (ROCK(x ,y+1)) tile |= 1<<2; + if (ROCK(x-1,y )) tile |= 1<<3; + + tile = RockTable[tile]; + if (tile == -1) { + MapRemoveRock(x,y); + } else { + if (tile == RockTable[15]) { + // Vladi: still to filter tiles w. corner empties -- note: the original + // tiles and order are not perfect either. It's a hack but is enough and + // looks almost fine. + if (MapRockChk(x+1,y-1) == 0) tile = 7; else + if (MapRockChk(x+1,y+1) == 0) tile = 10; else + if (MapRockChk(x-1,y+1) == 0) tile = 11; else + if (MapRockChk(x-1,y-1) == 0) tile = 4; else + tile = RockTable[15]; // not required really + } + + tile += FIRST_ROCK_TILE; + mf=TheMap.Fields+x+y*TheMap.Width; + + if ( mf->SeenTile == tile) { + return 0; + } + mf->SeenTile = tile; + } + UpdateMinimapXY(x,y); + return 1; } +// FIXME: docu global void MapFixRock(int x,int y) { // side neighbors @@ -115,8 +136,12 @@ global void MapRemoveRock(unsigned x,unsigned y) mf->Tile=TheMap.Tileset->NoRockTile; mf->Flags &= ~(MapFieldRocks|MapFieldUnpassable); - UpdateMinimapXY(x,y); - MustRedraw|=RedrawMaps; + UpdateMinimapXY(x,y); // FIXME: should be done if visible? + + // Must redraw map only if field is visibile + if( mf->Flags&MapFieldVisible ) { + MustRedraw|=RedrawMaps; + } } //@} diff --git a/map/map_wall.cpp b/map/map_wall.cpp index 79fe921ff..862378c7c 100644 --- a/map/map_wall.cpp +++ b/map/map_wall.cpp @@ -67,22 +67,30 @@ local int WallTable[16] = { global int MapWallChk(int x,int y,int walltype) // used by FixWall, walltype==-1 for auto { - if( !INMAP(x,y) ) return 1; // outside considered wall - // return !!(MAPFIELD(x,y).Flags & MapFieldForest); - if (walltype == -1) - return (TILETYPE(MAPSEENTILE(x,y)) == TileTypeHWall || - TILETYPE(MAPSEENTILE(x,y)) == TileTypeOWall ); - else - return (TILETYPE(MAPSEENTILE(x,y)) == walltype); + int t; + + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 1; // Outside considered wall + } + t=TheMap.Tileset->TileTypeTable[ + TheMap.Fields[(x)+(y)*TheMap.Width].SeenTile]; + if (walltype == -1) { + return t == TileTypeHWall || t == TileTypeOWall ; + } + return t == walltype; } global int FixWall(int x,int y) // used by MapRemoveWall and PreprocessMap { int tile; int walltype; + MapField* mf; - if ( !INMAP(x,y) ) return 0; - walltype = TILETYPE(MAPSEENTILE(x,y)); + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 0; + } + mf=TheMap.Fields+(x)+(y)*TheMap.Width; + walltype = TheMap.Tileset->TileTypeTable[mf->SeenTile]; if ( walltype != TileTypeHWall && walltype != TileTypeOWall ) return 0; #define WALL(xx,yy) (MapWallChk(xx,yy,walltype) != 0) @@ -96,23 +104,23 @@ global int FixWall(int x,int y) // used by MapRemoveWall and PreprocessMap if (walltype == TileTypeHWall) { - if (MAPFIELD(x,y).Value < WALL_50HP) + if (mf->Value < WALL_50HP) tile += TheMap.Tileset->HumanWall50Tile; else tile += TheMap.Tileset->HumanWall100Tile; } else { - if (MAPFIELD(x,y).Value < WALL_50HP) + if (mf->Value < WALL_50HP) tile += TheMap.Tileset->OrcWall50Tile; else tile += TheMap.Tileset->OrcWall100Tile; } // FIXME: Johns, Is this correct? Could this function be called under fog of war - if (MAPFIELD(x,y).SeenTile == tile) + if (mf->SeenTile == tile) return 0; - MAPFIELD(x,y).SeenTile = tile; + mf->SeenTile = tile; UpdateMinimapXY(x,y); return 1; diff --git a/map/map_wood.cpp b/map/map_wood.cpp index 06fc10d30..1a06e8ca6 100644 --- a/map/map_wood.cpp +++ b/map/map_wood.cpp @@ -45,42 +45,62 @@ local int WoodTable[16] = { -- Functions ----------------------------------------------------------------------------*/ -global int MapWoodChk(int x,int y) // used by FixWood +/** +** Check if the tile type is wood. +** +** Used by @see MapFixWood and @see PreprocessMap +*/ +local int MapWoodChk(int x,int y) { - if( !INMAP(x,y) ) return 1; // outside considered wood - // return !!(MAPFIELD(x,y).Flags & MapFieldForest); - return (TILETYPE(MAPSEENTILE(x,y)) == TileTypeWood); + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 1; // outside considered wood + } + + return TheMap.Tileset->TileTypeTable[ + TheMap.Fields[(x)+(y)*TheMap.Width].SeenTile + ] == TileTypeWood; } // FIXME: this function is called to often. +// FIXME: docu global int FixWood(int x,int y) // used by MapRemoveWood2 and PreprocessMap { - int tile = 0; + int tile; + MapField* mf; - if ( !INMAP(x,y) ) return 0; - if ( MapWoodChk(x,y) == 0 ) return 0; - - #define WOOD(xx,yy) (MapWoodChk(xx,yy) != 0) - if (WOOD(x ,y-1)) tile |= 1<<0; - if (WOOD(x+1,y )) tile |= 1<<1; - if (WOOD(x ,y+1)) tile |= 1<<2; - if (WOOD(x-1,y )) tile |= 1<<3; - - tile = WoodTable[tile]; - if (tile == -1) - MapRemoveWood(x,y); - else - { - // DON'T work EGCC failure tile += TheMap.Tileset->FirstWoodTile; - tile += 0x65; - DebugLevel3(__FUNCTION__":%x\n", TheMap.Tileset->FirstWoodTile); - if (MAPFIELD(x,y).SeenTile == tile) return 0; - MAPFIELD(x,y).SeenTile = tile; + // Outside map or no wood. + if( x<0 || y<0 || x>=TheMap.Width || y>=TheMap.Height ) { + return 0; } - UpdateMinimapXY(x,y); - return 1; + if ( !MapWoodChk(x,y) ) { + return 0; + } + + tile = 0; +#define WOOD(xx,yy) (MapWoodChk(xx,yy) != 0) + if (WOOD(x ,y-1)) tile |= 1<<0; + if (WOOD(x+1,y )) tile |= 1<<1; + if (WOOD(x ,y+1)) tile |= 1<<2; + if (WOOD(x-1,y )) tile |= 1<<3; + + tile = WoodTable[tile]; + if (tile == -1) { + MapRemoveWood(x,y); + } else { + // DON'T work EGCC failure tile += TheMap.Tileset->FirstWoodTile; + tile += 0x65; + DebugLevel3(__FUNCTION__":%x\n", TheMap.Tileset->FirstWoodTile); + mf=TheMap.Fields+x+y*TheMap.Width; + if ( mf->SeenTile == tile) { + return 0; + } + mf->SeenTile = tile; + } + UpdateMinimapXY(x,y); + return 1; } +// FIXME: docu global void MapFixWood(int x,int y) { // side neighbors diff --git a/ui/mouse.cpp b/ui/mouse.cpp index 02e2ffa72..675ff8495 100644 --- a/ui/mouse.cpp +++ b/ui/mouse.cpp @@ -521,7 +521,7 @@ global void UIHandleMouseMove(int x,int y) //cade: this is forbidden for unexplored and not visible space // FIXME: This must done new, moving units, scrolling... if( CursorOn==CursorOnMap ) { - if( MAPVISIBLE(Screen2MapX(x),Screen2MapY(y)) ) { + if( IsMapFieldVisible(Screen2MapX(x),Screen2MapY(y)) ) { DebugLevel3(__FUNCTION__": %d,%d\n" ,x-TheUI.MapX+MapX*TileSizeX ,y-TheUI.MapY+MapY*TileSizeY); @@ -530,7 +530,7 @@ global void UIHandleMouseMove(int x,int y) ,y-TheUI.MapY+MapY*TileSizeY); } } else if( CursorOn==CursorOnMinimap ) { - if( MAPVISIBLE(Minimap2MapX(x),Minimap2MapY(y)) ) { + if( IsMapFieldVisible(Minimap2MapX(x),Minimap2MapY(y)) ) { UnitUnderCursor=UnitOnMapTile(Minimap2MapX(x),Minimap2MapY(y)); } } @@ -897,7 +897,7 @@ global void UIHandleButtonDown(int b) if( CanBuildUnitType(Selected[0],CursorBuilding,x,y) // FIXME: vladi: should check all building footprint // but not just MAPEXPLORED(x,y) - && MAPEXPLORED(x,y) ) { + && IsMapFieldExplored(x,y) ) { PlayGameSound(GameSounds.PlacementSuccess.Sound ,MaxSampleVolume); SendCommandBuildBuilding(Selected[0],x,y,CursorBuilding @@ -1057,7 +1057,7 @@ global void UIHandleButtonUp(int b) } //cade: cannot select unit on invisible space // FIXME: johns: only complete invisibile units - if( MAPVISIBLE(Screen2MapX(CursorX),Screen2MapY(CursorY)) ) { + if( IsMapFieldVisible(Screen2MapX(CursorX),Screen2MapY(CursorY)) ) { unit=UnitOnScreen(unit ,CursorX-TheUI.MapX+MapX*TileSizeX ,CursorY-TheUI.MapY+MapY*TileSizeY); diff --git a/unit/unit_draw.cpp b/unit/unit_draw.cpp index 01633f8ad..c2dd6474a 100644 --- a/unit/unit_draw.cpp +++ b/unit/unit_draw.cpp @@ -522,11 +522,11 @@ local void DrawBuilding(Unit* unit) // FIXME: johns: under the fog are shown partly. // FIXME: There is already a check in the main loop UnitVisibile! - if ( !MAPEXPLORED( x, y ) ) { + if ( !IsMapFieldExplored( x, y ) ) { return; } - if ( !TheMap.NoFogOfWar && !MAPVISIBLE( x, y ) ) { + if ( !TheMap.NoFogOfWar && !IsMapFieldVisible( x, y ) ) { frame = unit->SeenFrame; if (frame == 255) { return; @@ -535,12 +535,6 @@ local void DrawBuilding(Unit* unit) frame = unit->SeenFrame = unit->Frame; } -#if 0 - if( type->Type==UnitOilPlatformHuman || type->Type==UnitOilPlatformOrc ) { - DebugLevel0("%d -> %d\n",unit->Frame,frame); - } -#endif - n_frame = 0; if ((frame & 128) == 0 && unit->Rs > 50) { n_frame = 128; // fancy buildings @@ -579,7 +573,7 @@ local void DrawBuilding(Unit* unit) DrawUnitType(type,frame+n_frame,x,y); } - // FIXME: johns: ugly check here should be removed! vanish could be used + // FIXME: johns: ugly check here should be removed! vanish could be used? if( unit->Command.Action!=UnitActionDie ) { DrawDecoration(unit,type,x,y); DrawSelectionRectangle(unit,type,x,y);