diff --git a/src/editor/editloop.cpp b/src/editor/editloop.cpp index b7f6da2a8..7d4345870 100644 --- a/src/editor/editloop.cpp +++ b/src/editor/editloop.cpp @@ -244,8 +244,8 @@ void EditTile(const Vec2i &pos, int tile) mf->Flags |= Map.Tileset.FlagsTable[GetTileNumber(tile, 0, 0)]; - UI.Minimap.UpdateSeenXY(pos.x, pos.y); - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); + UI.Minimap.UpdateXY(pos); EditorTileChanged(pos); UpdateMinimap = true; diff --git a/src/editor/edmap.cpp b/src/editor/edmap.cpp index 7a7784902..3c9e2cce3 100644 --- a/src/editor/edmap.cpp +++ b/src/editor/edmap.cpp @@ -436,8 +436,8 @@ static void EditorChangeTile(const Vec2i &pos, int tile, int d) mf->Flags |= Map.Tileset.FlagsTable[tile]; - UI.Minimap.UpdateSeenXY(pos.x, pos.y); - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); + UI.Minimap.UpdateXY(pos); EditorTileChanged2(pos, d); } diff --git a/src/include/minimap.h b/src/include/minimap.h index 5f0a9f9b2..e9ce66c88 100644 --- a/src/include/minimap.h +++ b/src/include/minimap.h @@ -53,13 +53,13 @@ public: WithTerrain(false), ShowSelected(false), Transparent(false), UpdateCache(false) {} - void UpdateXY(int tx, int ty); - void UpdateSeenXY(int, int) {} - void Update(void); - void Create(void); - void FreeOpenGL(void); - void Reload(void); - void Destroy(void); + void UpdateXY(const Vec2i &pos); + void UpdateSeenXY(const Vec2i &pos) {} + void Update(); + void Create(); + void FreeOpenGL(); + void Reload(); + void Destroy(); void Draw(int vx, int vy); void DrawCursor(int vx, int vy); void AddEvent(int x, int y); diff --git a/src/map/map.cpp b/src/map/map.cpp index ab339fe27..1bb124177 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -129,7 +129,7 @@ void CMap::MarkSeenTile(const unsigned int index) } #ifdef MINIMAP_UPDATE - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); #endif } @@ -517,7 +517,7 @@ void CMap::FixTile(unsigned short type, int seen, const Vec2i &pos) mf->Tile = removedtile; mf->Flags &= ~flags; mf->Value = 0; - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); } } else if (seen && this->Tileset.MixedLookupTable[mf->SeenTile] == this->Tileset.MixedLookupTable[tile]) { //Same Type @@ -532,7 +532,7 @@ void CMap::FixTile(unsigned short type, int seen, const Vec2i &pos) //maybe isExplored if (IsTileVisible(ThisPlayer, index) > 0) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); if (!seen) { MarkSeenTile(pos); } @@ -588,12 +588,12 @@ void CMap::ClearTile(unsigned short type, const Vec2i &pos) mf->Flags &= ~flags; mf->Value = 0; - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); FixNeighbors(type, 0, pos); //maybe isExplored if (IsTileVisible(ThisPlayer, index) > 0) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); MarkSeenTile(pos); } } diff --git a/src/map/map_wall.cpp b/src/map/map_wall.cpp index 9572eb11e..c0cf9b685 100644 --- a/src/map/map_wall.cpp +++ b/src/map/map_wall.cpp @@ -162,7 +162,7 @@ void MapFixSeenWallTile(const Vec2i &pos) // FIXME: can this only happen if seen? if (Map.IsFieldVisible(ThisPlayer, pos)) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); } } } @@ -254,10 +254,10 @@ void MapFixWallTile(const Vec2i &pos) if (mf->Tile != tile) { mf->Tile = tile; - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); if (Map.IsFieldVisible(ThisPlayer, pos)) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); Map.MarkSeenTile(pos); } } @@ -291,12 +291,12 @@ void CMap::RemoveWall(const Vec2i &pos) // FIXME: support more walls of different races. mf->Flags &= ~(MapFieldHuman | MapFieldWall | MapFieldUnpassable); - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); MapFixWallTile(pos); MapFixWallNeighbors(pos); if (Map.IsFieldVisible(ThisPlayer, pos)) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); this->MarkSeenTile(pos); } } @@ -326,12 +326,12 @@ void CMap::SetWall(const Vec2i &pos, int humanwall) mf->Value = UnitTypeOrcWall->Variable[HP_INDEX].Max; } - UI.Minimap.UpdateXY(pos.x, pos.y); + UI.Minimap.UpdateXY(pos); MapFixWallTile(pos); MapFixWallNeighbors(pos); if (Map.IsFieldVisible(ThisPlayer, pos)) { - UI.Minimap.UpdateSeenXY(pos.x, pos.y); + UI.Minimap.UpdateSeenXY(pos); this->MarkSeenTile(pos); } } diff --git a/src/map/minimap.cpp b/src/map/minimap.cpp index 768cdc487..b6f7d580e 100644 --- a/src/map/minimap.cpp +++ b/src/map/minimap.cpp @@ -311,22 +311,10 @@ void CMinimap::UpdateTerrain(void) /** ** Update a single minimap tile after a change ** -** @param tx The X map position to update in the minimap -** @param ty The Y map position to update in the minimap +** @param pos The map position to update in the minimap */ -void CMinimap::UpdateXY(int tx, int ty) +void CMinimap::UpdateXY(const Vec2i &pos) { - int mx; - int my; - int x; - int y; - int scalex; - int scaley; - int xofs; - int yofs; - int tilepitch; - int bpp; - if (!UseOpenGL) { if (!MinimapTerrainSurface) { return; @@ -337,17 +325,17 @@ void CMinimap::UpdateXY(int tx, int ty) } } - scalex = MinimapScaleX * SCALE_PRECISION / MINIMAP_FAC; + int scalex = MinimapScaleX * SCALE_PRECISION / MINIMAP_FAC; if (scalex == 0) { scalex = 1; } - scaley = MinimapScaleY * SCALE_PRECISION / MINIMAP_FAC; + int scaley = MinimapScaleY * SCALE_PRECISION / MINIMAP_FAC; if (scaley == 0) { scaley = 1; } - tilepitch = Map.TileGraphic->Surface->w / TileSizeX; - bpp = Map.TileGraphic->Surface->format->BytesPerPixel; + const int tilepitch = Map.TileGraphic->Surface->w / TileSizeX; + const int bpp = Map.TileGraphic->Surface->format->BytesPerPixel; // // Pixel 7,6 7,14, 15,6 15,14 are taken for the minimap picture. @@ -357,9 +345,10 @@ void CMinimap::UpdateXY(int tx, int ty) } SDL_LockSurface(Map.TileGraphic->Surface); - ty *= Map.Info.MapWidth; - for (my = YOffset; my < H - YOffset; ++my) { - y = Minimap2MapY[my]; + const int ty = pos.y * Map.Info.MapWidth; + const int tx = pos.x; + for (int my = YOffset; my < H - YOffset; ++my) { + const int y = Minimap2MapY[my]; if (y < ty) { continue; } @@ -367,11 +356,9 @@ void CMinimap::UpdateXY(int tx, int ty) break; } - for (mx = XOffset; mx < W - XOffset; ++mx) { - int tile; - Uint32 c; + for (int mx = XOffset; mx < W - XOffset; ++mx) { + const int x = Minimap2MapX[mx]; - x = Minimap2MapX[mx]; if (x < tx) { continue; } @@ -379,24 +366,22 @@ void CMinimap::UpdateXY(int tx, int ty) break; } - tile = Map.Fields[x + y].SeenTile; + int tile = Map.Fields[x + y].SeenTile; if (!tile) { tile = Map.Fields[x + y].Tile; } - xofs = TileSizeX * (tile % tilepitch); - yofs = TileSizeY * (tile / tilepitch); + const int xofs = TileSizeX * (tile % tilepitch); + const int yofs = TileSizeY * (tile / tilepitch); if (!UseOpenGL) { if (bpp == 1) { ((Uint8 *)MinimapTerrainSurface->pixels)[mx + my * MinimapTerrainSurface->pitch] = *GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); } else if (bpp == 3) { - Uint8 *d; - Uint8 *s; + Uint8 *d = &((Uint8 *)MinimapTerrainSurface->pixels)[mx * bpp + my * MinimapTerrainSurface->pitch]; + Uint8 *s = GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); - d = &((Uint8 *)MinimapTerrainSurface->pixels)[mx * bpp + my * MinimapTerrainSurface->pitch]; - s = GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); *d++ = *s++; *d++ = *s++; *d++ = *s++; @@ -405,16 +390,16 @@ void CMinimap::UpdateXY(int tx, int ty) *(Uint32 *)GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); } } else { - if (bpp == 1) { - SDL_Color color; + Uint32 c; + + if (bpp == 1) { + const int colorIndex = *GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); + const SDL_Color color = Map.TileGraphic->Surface->format->palette->colors[colorIndex]; - color = Map.TileGraphic->Surface->format->palette->colors[ - *GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp)]; c = Video.MapRGB(0, color.r, color.g, color.b); } else { - SDL_PixelFormat *f; + SDL_PixelFormat *f = Map.TileGraphic->Surface->format; - f = Map.TileGraphic->Surface->format; c = *(Uint32 *)GetTileGraphicPixel(xofs, yofs, mx, my, scalex, scaley, bpp); c = Video.MapRGB(0, ((c & f->Rmask) >> f->Rshift),