1 /* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
2
3 #include "System/Net/UDPConnection.h"
4 #include "Rendering/TeamHighlight.h"
5 #include "System/Config/ConfigHandler.h"
6 #include "System/GlobalConfig.h"
7 #include "Lua/LuaConfig.h"
8
9 CONFIG(int, NetworkLossFactor)
10 .defaultValue(netcode::UDPConnection::MIN_LOSS_FACTOR)
11 .minimumValue(netcode::UDPConnection::MIN_LOSS_FACTOR)
12 .maximumValue(netcode::UDPConnection::MAX_LOSS_FACTOR);
13
14 CONFIG(int, InitialNetworkTimeout)
15 .defaultValue(30)
16 .minimumValue(10);
17
18 CONFIG(int, NetworkTimeout)
19 .defaultValue(120)
20 .minimumValue(0);
21
22 CONFIG(int, ReconnectTimeout)
23 .defaultValue(15)
24 .minimumValue(0);
25
26 CONFIG(int, MaximumTransmissionUnit)
27 .defaultValue(1400)
28 .minimumValue(400);
29
30 CONFIG(int, LinkOutgoingBandwidth)
31 .defaultValue(64 * 1024)
32 .minimumValue(0);
33
34 CONFIG(int, LinkIncomingSustainedBandwidth)
35 .defaultValue(2 * 1024)
36 .minimumValue(0);
37
38 CONFIG(int, LinkIncomingPeakBandwidth)
39 .defaultValue(32 * 1024)
40 .minimumValue(0);
41
42 CONFIG(int, LinkIncomingMaxPacketRate)
43 .defaultValue(64)
44 .minimumValue(0);
45
46 // maximum lag induced by command spam is:
47 // LinkIncomingMaxWaitingPackets / LinkIncomingMaxPacketRate = 8 seconds
48 CONFIG(int, LinkIncomingMaxWaitingPackets)
49 .defaultValue(512)
50 .minimumValue(0);
51
52 CONFIG(int, TeamHighlight)
53 .defaultValue(CTeamHighlight::HIGHLIGHT_PLAYERS)
54 .minimumValue(CTeamHighlight::HIGHLIGHT_FIRST)
55 .maximumValue(CTeamHighlight::HIGHLIGHT_LAST);
56
57 CONFIG(bool, UseNetMessageSmoothingBuffer).defaultValue(true);
58
59 CONFIG(bool, LuaWritableConfigFile).defaultValue(true);
60
61 CONFIG(bool, EnableDrawCallIns).defaultValue(true);
62
63 GlobalConfig* globalConfig = NULL;
64
GlobalConfig()65 GlobalConfig::GlobalConfig()
66 {
67 // Recommended semantics for "expert" type config values:
68 // <0 = disable (if applicable)
69 networkLossFactor = configHandler->GetInt("NetworkLossFactor");
70 initialNetworkTimeout = configHandler->GetInt("InitialNetworkTimeout");
71 networkTimeout = configHandler->GetInt("NetworkTimeout");
72 reconnectTimeout = configHandler->GetInt("ReconnectTimeout");
73 mtu = configHandler->GetInt("MaximumTransmissionUnit");
74
75 linkOutgoingBandwidth = configHandler->GetInt("LinkOutgoingBandwidth");
76 linkIncomingSustainedBandwidth = configHandler->GetInt("LinkIncomingSustainedBandwidth");
77 linkIncomingPeakBandwidth = configHandler->GetInt("LinkIncomingPeakBandwidth");
78 linkIncomingMaxPacketRate = configHandler->GetInt("LinkIncomingMaxPacketRate");
79 linkIncomingMaxWaitingPackets = configHandler->GetInt("LinkIncomingMaxWaitingPackets");
80
81 if (linkIncomingSustainedBandwidth > 0 && linkIncomingPeakBandwidth < linkIncomingSustainedBandwidth)
82 linkIncomingPeakBandwidth = linkIncomingSustainedBandwidth;
83 if (linkIncomingPeakBandwidth > 0 && linkIncomingSustainedBandwidth <= 0)
84 linkIncomingSustainedBandwidth = linkIncomingPeakBandwidth;
85 if (linkIncomingMaxPacketRate > 0 && linkIncomingSustainedBandwidth <= 0)
86 linkIncomingSustainedBandwidth = linkIncomingPeakBandwidth = 1024 * 1024;
87
88 useNetMessageSmoothingBuffer = configHandler->GetBool("UseNetMessageSmoothingBuffer");
89 luaWritableConfigFile = configHandler->GetBool("LuaWritableConfigFile");
90
91 teamHighlight = configHandler->GetInt("TeamHighlight");
92 }
93
Instantiate()94 void GlobalConfig::Instantiate()
95 {
96 Deallocate();
97 globalConfig = new GlobalConfig();
98 }
99
Deallocate()100 void GlobalConfig::Deallocate()
101 {
102 delete globalConfig;
103 globalConfig = NULL;
104 }
105