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