Skip to content

Commit 06b69de

Browse files
FlamefireFlow86
authored andcommitted
Add isSoldierJob function
Unify uses of soldier checks in one place.
1 parent dc0ce04 commit 06b69de

4 files changed

Lines changed: 15 additions & 19 deletions

File tree

libs/s25main/GamePlayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2005 - 2024 Settlers Freaks (sf-team at siedler25.org)
1+
// Copyright (C) 2005 - 2026 Settlers Freaks (sf-team at siedler25.org)
22
//
33
// SPDX-License-Identifier: GPL-2.0-or-later
44

@@ -434,7 +434,7 @@ void GamePlayer::AddBuilding(noBuilding* bld, BuildingType bldType)
434434

435435
// Order a worker if needed
436436
const auto& description = BLD_WORK_DESC[bldType];
437-
if(description.job && description.job != Job::Private)
437+
if(description.job && !isSoldierJob(*description.job))
438438
{
439439
AddJobWanted(*description.job, bld);
440440
}

libs/s25main/buildings/nobBaseWarehouse.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2005 - 2024 Settlers Freaks (sf-team at siedler25.org)
1+
// Copyright (C) 2005 - 2026 Settlers Freaks (sf-team at siedler25.org)
22
//
33
// SPDX-License-Identifier: GPL-2.0-or-later
44

@@ -763,7 +763,7 @@ void nobBaseWarehouse::CheckJobsForNewFigure(const Job job)
763763
if(job == Job::Helper)
764764
TryRecruiting();
765765

766-
if(job >= Job::Private && job <= Job::General)
766+
if(isSoldierJob(job))
767767
{
768768
// Reserve prüfen
769769
RefreshReserve(getSoldierRank(job));

libs/s25main/figures/noFigure.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2005 - 2021 Settlers Freaks (sf-team at siedler25.org)
1+
// Copyright (C) 2005 - 2026 Settlers Freaks (sf-team at siedler25.org)
22
//
33
// SPDX-License-Identifier: GPL-2.0-or-later
44

@@ -123,16 +123,7 @@ noFigure::noFigure(SerializedGameData& sgd, const unsigned obj_id)
123123

124124
bool noFigure::IsSoldier() const
125125
{
126-
switch(job_)
127-
{
128-
case Job::Private:
129-
case Job::PrivateFirstClass:
130-
case Job::Sergeant:
131-
case Job::Officer:
132-
case Job::General: return true;
133-
default: break;
134-
}
135-
return false;
126+
return isSoldierJob(job_);
136127
}
137128

138129
void noFigure::ActAtFirst()

libs/s25main/gameTypes/JobTypes.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (C) 2005 - 2021 Settlers Freaks (sf-team at siedler25.org)
1+
// Copyright (C) 2005 - 2026 Settlers Freaks (sf-team at siedler25.org)
22
//
33
// SPDX-License-Identifier: GPL-2.0-or-later
44

@@ -52,10 +52,15 @@ constexpr auto maxEnumValue(Job)
5252
return Job::TempleServant;
5353
}
5454

55-
constexpr unsigned NUM_SOLDIER_RANKS = 5;
5655
/// Job types of soldiers, weak ones first
57-
static const std::array<Job, NUM_SOLDIER_RANKS> SUPPRESS_UNUSED SOLDIER_JOBS = {
58-
{Job::Private, Job::PrivateFirstClass, Job::Sergeant, Job::Officer, Job::General}};
56+
constexpr std::array SUPPRESS_UNUSED SOLDIER_JOBS = {Job::Private, Job::PrivateFirstClass, Job::Sergeant, Job::Officer,
57+
Job::General};
58+
constexpr bool isSoldierJob(const Job job)
59+
{
60+
return job >= Job::Private && job <= Job::General;
61+
}
62+
63+
constexpr unsigned NUM_SOLDIER_RANKS = SOLDIER_JOBS.size();
5964
constexpr unsigned getSoldierRank(Job soldierJob)
6065
{
6166
return static_cast<uint8_t>(soldierJob) - static_cast<uint8_t>(Job::Private);

0 commit comments

Comments
 (0)