Skip to content

Commit 7a7ad8a

Browse files
committed
Move getBigSymbolPosition into cGraphicsData
1 parent 4ff5fb3 commit 7a7ad8a

File tree

4 files changed

+35
-44
lines changed

4 files changed

+35
-44
lines changed

src/lib/resources/uidata.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,29 @@ SDL_Rect cGraphicsData::getSmallSymbolPosition (eUnitDataSymbolType symbolType)
5555
return {};
5656
}
5757

58+
//------------------------------------------------------------------------------
59+
SDL_Rect cGraphicsData::getBigSymbolPosition (eUnitDataBigSymbolType symbolType)
60+
{
61+
switch (symbolType)
62+
{
63+
case eUnitDataBigSymbolType::Speed: return getRect_BigSymbol_Speed();
64+
case eUnitDataBigSymbolType::Hits: return getRect_BigSymbol_Hitpoints();
65+
case eUnitDataBigSymbolType::Ammo: return getRect_BigSymbol_Ammo();
66+
case eUnitDataBigSymbolType::Attack: return getRect_BigSymbol_Attack();
67+
case eUnitDataBigSymbolType::Shots: return getRect_BigSymbol_Shots();
68+
case eUnitDataBigSymbolType::Range: return getRect_BigSymbol_Range();
69+
case eUnitDataBigSymbolType::Armor: return getRect_BigSymbol_Armor();
70+
case eUnitDataBigSymbolType::Scan: return getRect_BigSymbol_Scan();
71+
case eUnitDataBigSymbolType::Metal: return getRect_BigSymbol_Metal();
72+
case eUnitDataBigSymbolType::MetalEmpty: return getRect_BigSymbol_MetalEmpty();
73+
case eUnitDataBigSymbolType::Oil: return getRect_BigSymbol_Oil();
74+
case eUnitDataBigSymbolType::Gold: return getRect_BigSymbol_Gold();
75+
case eUnitDataBigSymbolType::Energy: return getRect_BigSymbol_Energy();
76+
case eUnitDataBigSymbolType::Human: return getRect_BigSymbol_Human();
77+
}
78+
return {};
79+
}
80+
5881
//------------------------------------------------------------------------------
5982
cUnitsUiData::cUnitsUiData() :
6083
rubbleBig (std::make_unique<sBuildingUIData>()),

src/lib/resources/uidata.h

+1
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ class cGraphicsData
185185

186186
// Position in gfx_hud_stuff
187187
static SDL_Rect getSmallSymbolPosition (eUnitDataSymbolType);
188+
static SDL_Rect getBigSymbolPosition (eUnitDataBigSymbolType);
188189

189190
static SDL_Rect getRect_SmallSymbol_Speed() { return {0, 98, 7, 7}; }
190191
static SDL_Rect getRect_SmallSymbol_HitsGreen() { return {14, 98, 6, 9}; }

src/ui/graphical/menu/widgets/special/unitdetails.cpp

+11-43
Original file line numberDiff line numberDiff line change
@@ -250,79 +250,47 @@ void cUnitDetails::reset()
250250
//------------------------------------------------------------------------------
251251
void cUnitDetails::drawBigSymbols (eUnitDataBigSymbolType symbolType, const cPosition& position, int value1, int value2)
252252
{
253-
int maxX = 160;
254-
auto src = getBigSymbolPosition (symbolType);
255-
const auto srcSize = src.getSize();
256-
maxX -= srcSize.x();
253+
auto src = GraphicsData.getBigSymbolPosition (symbolType);
254+
int maxX = 160 - src.w;
257255

258-
if (value2 != value1) maxX -= srcSize.x() + 3;
256+
if (value2 != value1) maxX -= src.w + 3;
259257
if (value2 < value1) std::swap (value1, value2);
260-
int offX = srcSize.x();
258+
int offX = src.w;
261259
while (offX * value2 > maxX)
262260
{
263261
--offX;
264262
if (offX < 4)
265263
{
266264
value1 /= 2;
267265
value2 /= 2;
268-
offX = srcSize.x();
266+
offX = src.w;
269267
}
270268
}
271-
SDL_Rect dest = {position.x(), position.y() + (rowHeight - 4 - srcSize.y()) / 2, 0, 0};
269+
SDL_Rect dest = {position.x(), position.y() + (rowHeight - 4 - src.h) / 2, 0, 0};
272270

273271
for (int i = 0; i != value1; ++i)
274272
{
275-
auto srcRect = toSdlRect (src);
273+
auto srcRect = src;
276274
SDL_BlitSurface (GraphicsData.gfx_hud_stuff.get(), &srcRect, surface.get(), &dest);
277275

278276
dest.x += offX;
279277
}
280278
if (value1 == value2) return;
281279

282-
dest.x += srcSize.x() + 3;
283-
SDL_Rect mark = {Sint16 (dest.x - srcSize.x() / 2), dest.y, 1, srcSize.y()};
280+
dest.x += src.w + 3;
281+
SDL_Rect mark = {Sint16 (dest.x - src.w / 2), dest.y, 1, src.h};
284282

285283
SDL_FillRect (surface.get(), &mark, 0xFFFC0000);
286284

287285
if (symbolType == eUnitDataBigSymbolType::Metal)
288286
{
289-
src = getBigSymbolPosition (eUnitDataBigSymbolType::MetalEmpty);
287+
src = GraphicsData.getBigSymbolPosition (eUnitDataBigSymbolType::MetalEmpty);
290288
}
291289
for (int i = value1; i != value2; ++i)
292290
{
293-
auto srcRect = toSdlRect (src);
291+
auto srcRect = src;
294292
SDL_BlitSurface (GraphicsData.gfx_hud_stuff.get(), &srcRect, surface.get(), &dest);
295293

296294
dest.x += offX;
297295
}
298296
}
299-
300-
//------------------------------------------------------------------------------
301-
cBox<cPosition> cUnitDetails::getBigSymbolPosition (eUnitDataBigSymbolType symbolType)
302-
{
303-
SDL_Rect rect;
304-
305-
switch (symbolType)
306-
{
307-
case eUnitDataBigSymbolType::Speed: rect = cGraphicsData::getRect_BigSymbol_Speed(); break;
308-
case eUnitDataBigSymbolType::Hits: rect = cGraphicsData::getRect_BigSymbol_Hitpoints(); break;
309-
case eUnitDataBigSymbolType::Ammo: rect = cGraphicsData::getRect_BigSymbol_Ammo(); break;
310-
case eUnitDataBigSymbolType::Attack: rect = cGraphicsData::getRect_BigSymbol_Attack(); break;
311-
case eUnitDataBigSymbolType::Shots: rect = cGraphicsData::getRect_BigSymbol_Shots(); break;
312-
case eUnitDataBigSymbolType::Range: rect = cGraphicsData::getRect_BigSymbol_Range(); break;
313-
case eUnitDataBigSymbolType::Armor: rect = cGraphicsData::getRect_BigSymbol_Armor(); break;
314-
case eUnitDataBigSymbolType::Scan: rect = cGraphicsData::getRect_BigSymbol_Scan(); break;
315-
case eUnitDataBigSymbolType::Metal: rect = cGraphicsData::getRect_BigSymbol_Metal(); break;
316-
case eUnitDataBigSymbolType::MetalEmpty: rect = cGraphicsData::getRect_BigSymbol_MetalEmpty(); break;
317-
case eUnitDataBigSymbolType::Oil: rect = cGraphicsData::getRect_BigSymbol_Oil(); break;
318-
case eUnitDataBigSymbolType::Gold: rect = cGraphicsData::getRect_BigSymbol_Gold(); break;
319-
case eUnitDataBigSymbolType::Energy: rect = cGraphicsData::getRect_BigSymbol_Energy(); break;
320-
case eUnitDataBigSymbolType::Human: rect = cGraphicsData::getRect_BigSymbol_Human(); break;
321-
default:
322-
rect = {0, 109, 1, 1};
323-
break;
324-
}
325-
cPosition position (rect.x, rect.y);
326-
cPosition size (rect.w, rect.h);
327-
return cBox<cPosition> (position, position + size - 1);
328-
}

src/ui/graphical/menu/widgets/special/unitdetails.h

-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ class cUnitDetails : public cWidget
4848

4949
void drawRow (size_t index, eUnitDataBigSymbolType, int amount, const std::string& name, int value1, int value2);
5050
void drawBigSymbols (eUnitDataBigSymbolType, const cPosition&, int value1, int value2);
51-
cBox<cPosition> getBigSymbolPosition (eUnitDataBigSymbolType);
5251

5352
static const size_t maxRows = 9;
5453
static const int rowHeight = 19;

0 commit comments

Comments
 (0)