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

Return-To-The-Roots / s25client / 15702208672

17 Jun 2025 08:30AM UTC coverage: 50.444% (-0.02%) from 50.467%
15702208672

Pull #1534

github

web-flow
Merge 2b146592b into 67a057674
Pull Request #1534: Portrait support

58 of 162 new or added lines in 17 files covered. (35.8%)

23 existing lines in 5 files now uncovered.

22503 of 44610 relevant lines covered (50.44%)

35287.29 hits per line

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

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

5
#include "GameLobbyController.h"
6
#include "GameLobby.h"
7
#include "JoinPlayerInfo.h"
8
#include "network/GameMessages.h"
9
#include "network/NetworkPlayer.h"
10
#include <utility>
11

12
GameLobbyController::GameLobbyController(std::shared_ptr<GameLobby> lobby, NetworkPlayer& mainPlayer)
1✔
13
    : mainPlayer_(mainPlayer), lobby(std::move(lobby))
1✔
14
{}
1✔
15

16
GameLobbyController::~GameLobbyController() = default;
2✔
17

18
unsigned GameLobbyController::GetMaxNumPlayers() const
×
19
{
20
    return lobby->getNumPlayers();
×
21
}
22

23
JoinPlayerInfo& GameLobbyController::GetJoinPlayer(unsigned playerIdx)
×
24
{
25
    return lobby->getPlayer(playerIdx);
×
26
}
27

28
void GameLobbyController::CloseSlot(unsigned playerIdx)
×
29
{
30
    SetPlayerState(playerIdx, PlayerState::Locked, AI::Info());
×
31
}
×
32

33
void GameLobbyController::SetPlayerState(unsigned playerIdx, PlayerState state, const AI::Info& aiInfo)
×
34
{
35
    mainPlayer_.sendMsgAsync(new GameMessage_Player_State(playerIdx, state, aiInfo));
×
36
}
×
37

38
void GameLobbyController::TogglePlayerState(unsigned playerIdx)
×
39
{
40
    const JoinPlayerInfo& player = lobby->getPlayer(playerIdx);
×
41

42
    PlayerState newPs = player.ps;
×
43
    AI::Info aiInfo = player.aiInfo;
×
44

45
    // playerstatus weiterwechseln
46
    switch(newPs)
×
47
    {
48
        default: break;
×
49
        case PlayerState::Occupied: newPs = PlayerState::Free; break;
×
50
        case PlayerState::Free:
×
51
            newPs = PlayerState::AI;
×
52
            aiInfo = AI::Info(AI::Type::Default, AI::Level::Easy);
×
53
            break;
×
54
        case PlayerState::AI:
×
55
            // Verschiedene KIs durchgehen
56
            switch(aiInfo.type)
×
57
            {
58
                case AI::Type::Default:
×
59
                default:
60
                    switch(aiInfo.level)
×
61
                    {
62
                        case AI::Level::Easy: aiInfo.level = AI::Level::Medium; break;
×
63
                        case AI::Level::Medium: aiInfo.level = AI::Level::Hard; break;
×
64
                        case AI::Level::Hard: aiInfo = AI::Info(AI::Type::Dummy); break;
×
65
                    }
66
                    break;
×
67
                case AI::Type::Dummy: newPs = PlayerState::Locked;
×
68
            }
69
            break;
×
70
        case PlayerState::Locked: newPs = PlayerState::Free; break;
×
71
    }
72
    SetPlayerState(playerIdx, newPs, aiInfo);
×
73
}
×
74

75
void GameLobbyController::SetColor(unsigned playerIdx, unsigned newColor)
×
76
{
77
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Color(playerIdx, newColor));
×
78
}
×
79

80
void GameLobbyController::SetTeam(unsigned playerIdx, Team newTeam)
×
81
{
82
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Team(playerIdx, newTeam));
×
83
}
×
84

85
void GameLobbyController::SetNation(unsigned playerIdx, Nation newNation)
×
86
{
87
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Nation(playerIdx, newNation));
×
88
}
×
89

90
const GlobalGameSettings& GameLobbyController::GetGGS() const
×
91
{
92
    return lobby->getSettings();
×
93
}
94

95
void GameLobbyController::ChangeGlobalGameSettings(const GlobalGameSettings& ggs)
×
96
{
97
    // Already change this here or future changes will be ignored before the server acknowledges the change
98
    lobby->getSettings() = ggs;
×
99
    mainPlayer_.sendMsgAsync(new GameMessage_GGSChange(ggs));
×
100
}
×
101

102
void GameLobbyController::SwapPlayers(unsigned player1, unsigned player2)
×
103
{
104
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Swap(player1, player2));
×
105
}
×
106

107
void GameLobbyController::StartCountdown(unsigned numSecs)
×
108
{
109
    mainPlayer_.sendMsgAsync(new GameMessage_Countdown(numSecs));
×
110
}
×
111

112
void GameLobbyController::CancelCountdown()
×
113
{
114
    mainPlayer_.sendMsgAsync(new GameMessage_CancelCountdown());
×
115
}
×
116

117
void GameLobbyController::RemoveLuaScript()
×
118
{
119
    mainPlayer_.sendMsgAsync(new GameMessage_RemoveLua());
×
120
}
×
121

122
void GameLobbyController::SetName(unsigned playerIdx, const std::string& name)
×
123
{
124
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Name(playerIdx, name));
×
125
}
×
126

NEW
127
void GameLobbyController::SetPortrait(unsigned playerIdx, unsigned portraitIndex)
×
128
{
NEW
129
    mainPlayer_.sendMsgAsync(new GameMessage_Player_Portrait(playerIdx, portraitIndex));
×
NEW
130
}
×
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