• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Return-To-The-Roots / s25client / 25211055249

01 May 2026 10:23AM UTC coverage: 50.263% (+0.03%) from 50.232%
25211055249

Pull #1919

github

web-flow
Merge e0e9bf987 into 37e4166c0
Pull Request #1919: Add military warehouse focus

53 of 93 new or added lines in 7 files covered. (56.99%)

16 existing lines in 4 files now uncovered.

23137 of 46032 relevant lines covered (50.26%)

43428.64 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.74
/libs/s25main/GameCommand.cpp
1
// Copyright (C) 2005 - 2024 Settlers Freaks (sf-team at siedler25.org)
2
//
3
// SPDX-License-Identifier: GPL-2.0-or-later
4

5
#include "GameCommand.h"
6
#include "GameCommands.h"
7
#include "helpers/toString.h"
8
#include <stdexcept>
9

10
namespace gc {
11

12
/// Current version of the game commands, see VersionedDeserializer.
13
unsigned Deserializer::getCurrentVersion()
999✔
14
{
15
    // 1: Add wine addon --> 3 new values in distribution
16
    // 2: Add leather addon --> 3 new values in distribution, 1 new value in transport order and transport order default
17
    // values changed, 3 new values in custom build order, 3 new jobs/wares in setAllInventory settings
18
    // 3: Add SetMilitaryWarehouse command
19
    return 3;
999✔
20
}
21

22
GameCommandPtr GameCommand::Deserialize(Deserializer& ser)
994✔
23
{
24
    auto gcType = helpers::popEnum<GCType>(ser);
994✔
25
    GameCommand* gc;
26
    switch(gcType)
994✔
27
    {
28
        case GCType::SetFlag: gc = new SetFlag(ser); break;
255✔
29
        case GCType::DestroyFlag: gc = new DestroyFlag(ser); break;
209✔
30
        case GCType::BuildRoad: gc = new BuildRoad(ser); break;
62✔
31
        case GCType::DestroyRoad: gc = new DestroyRoad(ser); break;
12✔
32
        case GCType::ChangeDistribution: gc = new ChangeDistribution(ser); break;
2✔
33
        case GCType::ChangeBuildOrder: gc = new ChangeBuildOrder(ser); break;
2✔
34
        case GCType::SetBuildingsite: gc = new SetBuildingSite(ser); break;
8✔
35
        case GCType::DestroyBuilding: gc = new DestroyBuilding(ser); break;
3✔
36
        case GCType::ChangeTransport: gc = new ChangeTransport(ser); break;
2✔
37
        case GCType::ChangeMilitary: gc = new ChangeMilitary(ser); break;
71✔
38
        case GCType::ChangeTools: gc = new ChangeTools(ser); break;
6✔
39
        case GCType::CallSpecialist: gc = new CallSpecialist(ser); break;
32✔
40
        case GCType::Attack: gc = new Attack(ser); break;
34✔
41
        case GCType::SeaAttack: gc = new SeaAttack(ser); break;
35✔
42
        case GCType::SetCoinsAllowed: gc = new SetCoinsAllowed(ser); break;
8✔
43
        case GCType::SetArmorAllowed: gc = new SetArmorAllowed(ser); break;
5✔
44
        case GCType::SetProductionEnabled: gc = new SetProductionEnabled(ser); break;
9✔
45
        case GCType::SetInventorySetting: gc = new SetInventorySetting(ser); break;
102✔
46
        case GCType::SetAllInventorySettings: gc = new SetAllInventorySettings(ser); break;
4✔
47
        case GCType::ChangeReserve: gc = new ChangeReserve(ser); break;
15✔
48
        case GCType::SuggestPact: gc = new SuggestPact(ser); break;
7✔
49
        case GCType::AcceptPact: gc = new AcceptPact(ser); break;
19✔
50
        case GCType::CancelPact: gc = new CancelPact(ser); break;
5✔
51
        case GCType::SetShipyardMode: gc = new SetShipYardMode(ser); break;
5✔
52
        case GCType::SetTempleProductionMode: gc = new SetTempleProductionMode(ser); break;
×
53
        case GCType::StartStopExpedition: gc = new StartStopExpedition(ser); break;
7✔
54
        case GCType::StartStopExplorationExpedition: gc = new StartStopExplorationExpedition(ser); break;
8✔
55
        case GCType::ExpeditionCommand: gc = new ExpeditionCommand(ser); break;
15✔
56
        case GCType::Trade: gc = new TradeOverLand(ser); break;
23✔
57
        case GCType::Surrender: gc = new Surrender(ser); break;
1✔
58
        case GCType::CheatArmageddon: gc = new CheatArmageddon(ser); break;
1✔
59
        case GCType::DestroyAll: gc = new DestroyAll(ser); break;
1✔
60
        case GCType::UpgradeRoad: gc = new UpgradeRoad(ser); break;
5✔
61
        case GCType::SetTroopLimit: gc = new SetTroopLimit(ser); break;
13✔
62
        case GCType::NotifyAlliesOfLocation: gc = new NotifyAlliesOfLocation(ser); break;
6✔
63
        case GCType::SetMilitaryWarehouse: gc = new SetMilitaryWarehouse(ser); break;
2✔
UNCOV
64
        default: throw std::logic_error("Invalid GC Type: " + helpers::toString(rttr::enum_cast(gcType)));
×
65
    }
66
    RTTR_Assert(gc->gcType == gcType);
994✔
67
    return gc;
1,988✔
68
}
69

70
void GameCommand::Serialize(Serializer& ser) const
1,982✔
71
{
72
    helpers::pushEnum<uint8_t>(ser, gcType);
1,982✔
73
}
1,982✔
74

75
} // namespace gc
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc