Allow changing the late-observer flag in a running game, fixes #3669.
Remove it from the game-attributes, since it is not used in the simulation, nor are they supposed to change in running games. This was SVN commit r17861.
This commit is contained in:
parent
2305218d9f
commit
e0a9dfd5a2
@ -353,6 +353,7 @@ enabledmods = "mod public"
|
||||
|
||||
[network]
|
||||
duplicateplayernames = false ; Rename joining player to "User (2)" if "User" is already connected, otherwise prohibit join.
|
||||
lateobserverjoins = false ; Allow observers to join the game after it started
|
||||
|
||||
[overlay]
|
||||
fps = "false" ; Show frames per second in top right corner
|
||||
|
@ -299,7 +299,7 @@ function initMapFilters()
|
||||
*/
|
||||
function resizeMoreOptionsWindow()
|
||||
{
|
||||
// For singleplayer reduce the size of more options dialog by three options (cheats, rated game, observer late join = 90px)
|
||||
// For singleplayer reduce the size of more options dialog by three options (cheats, rated game = 60px)
|
||||
if (!g_IsNetworked)
|
||||
{
|
||||
Engine.GetGUIObjectByName("moreOptions").size = "50%-200 50%-195 50%+200 50%+160";
|
||||
@ -308,9 +308,8 @@ function resizeMoreOptionsWindow()
|
||||
// For non-lobby multiplayergames reduce the size of the dialog by one option (rated game, 30px)
|
||||
else if (!Engine.HasXmppClient())
|
||||
{
|
||||
Engine.GetGUIObjectByName("moreOptions").size = "50%-200 50%-195 50%+200 50%+220";
|
||||
Engine.GetGUIObjectByName("hideMoreOptions").size = "50%-70 370 50%+70 396";
|
||||
Engine.GetGUIObjectByName("optionObserverLateJoin").size = "14 338 94% 366";
|
||||
Engine.GetGUIObjectByName("moreOptions").size = "50%-200 50%-195 50%+200 50%+190";
|
||||
Engine.GetGUIObjectByName("hideMoreOptions").size = "50%-70 340 50%+70 366";
|
||||
}
|
||||
}
|
||||
|
||||
@ -425,8 +424,7 @@ function initRadioButtons()
|
||||
"ExploreMap": "exploreMap",
|
||||
"DisableTreasures": "disableTreasures",
|
||||
"LockTeams": "lockTeams",
|
||||
"CheatsEnabled": "enableCheats",
|
||||
"ObserverLateJoin": "observerLateJoin"
|
||||
"CheatsEnabled": "enableCheats"
|
||||
};
|
||||
|
||||
Object.keys(options).forEach(attribute => {
|
||||
@ -502,7 +500,6 @@ function initMultiplayerSettings()
|
||||
Engine.GetGUIObjectByName("chatPanel").hidden = !g_IsNetworked;
|
||||
Engine.GetGUIObjectByName("optionCheats").hidden = !g_IsNetworked;
|
||||
Engine.GetGUIObjectByName("optionRating").hidden = !Engine.HasXmppClient();
|
||||
Engine.GetGUIObjectByName("optionObserverLateJoin").hidden = !g_IsNetworked;
|
||||
|
||||
Engine.GetGUIObjectByName("enableCheats").enabled = !Engine.IsRankedGame();
|
||||
Engine.GetGUIObjectByName("lockTeams").enabled = !Engine.IsRankedGame();
|
||||
@ -512,7 +509,6 @@ function initMultiplayerSettings()
|
||||
|
||||
hideControl("enableCheats", "enableCheatsText");
|
||||
hideControl("enableRating", "enableRatingText");
|
||||
hideControl("observerLateJoin", "observerLateJoinText");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1282,7 +1278,6 @@ function updateGUIObjects()
|
||||
setGUIBoolean("exploreMap", "exploreMapText", !!mapSettings.ExploreMap);
|
||||
setGUIBoolean("revealMap", "revealMapText", !!mapSettings.RevealMap);
|
||||
setGUIBoolean("lockTeams", "lockTeamsText", !!mapSettings.LockTeams);
|
||||
setGUIBoolean("observerLateJoin", "observerLateJoinText", !!mapSettings.ObserverLateJoin);
|
||||
setGUIBoolean("enableRating", "enableRatingText", !!mapSettings.RatingEnabled);
|
||||
|
||||
Engine.GetGUIObjectByName("cheatWarningText").hidden = !g_IsNetworked || !mapSettings.CheatsEnabled;
|
||||
|
@ -271,7 +271,7 @@
|
||||
|
||||
<!-- More Options -->
|
||||
<object hidden="true" name="moreOptionsFade" type="image" z="60" sprite="ModernFade"/>
|
||||
<object name="moreOptions" type="image" sprite="ModernDialog" size="50%-200 50%-195 50%+200 50%+250" z="70" hidden="true">
|
||||
<object name="moreOptions" type="image" sprite="ModernDialog" size="50%-200 50%-195 50%+200 50%+220" z="70" hidden="true">
|
||||
<object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14">
|
||||
<translatableAttribute id="caption">More Options</translatableAttribute>
|
||||
</object>
|
||||
@ -386,22 +386,12 @@
|
||||
</object>
|
||||
</object>
|
||||
|
||||
<object name="optionObserverLateJoin" size="14 368 94% 396" hidden="true">
|
||||
<object size="0 0 40% 28" type="text" hidden="false" style="ModernRightLabelText">
|
||||
<translatableAttribute id="caption">Late Observer Joins:</translatableAttribute>
|
||||
</object>
|
||||
<object name="observerLateJoinText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/>
|
||||
<object name="observerLateJoin" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip">
|
||||
<translatableAttribute id="tooltip">Allow observers to join after the game started.</translatableAttribute>
|
||||
</object>
|
||||
</object>
|
||||
|
||||
<!-- Hide More Options Button -->
|
||||
<object
|
||||
name="hideMoreOptions"
|
||||
type="button"
|
||||
style="StoneButton"
|
||||
size="50%-70 400 50%+70 426"
|
||||
size="50%-70 370 50%+70 396"
|
||||
tooltip_style="onscreenToolTip"
|
||||
hotkey="cancel"
|
||||
>
|
||||
|
@ -60,6 +60,12 @@
|
||||
"label": "Persist Match Settings",
|
||||
"tooltip": "Save and restore match settings for quick reuse when hosting another game",
|
||||
"parameters": { "config": "persistmatchsettings" }
|
||||
},
|
||||
{
|
||||
"type": "boolean",
|
||||
"label": "Late Observer Joins",
|
||||
"tooltip": "Allow observers to join the game after it started",
|
||||
"parameters": { "config": "network.lateobserverjoins" }
|
||||
}
|
||||
],
|
||||
"graphicsSetting":
|
||||
|
@ -927,13 +927,7 @@ bool CNetServerWorker::OnAuthenticate(void* context, CFsmEvent* event)
|
||||
|
||||
// Optionally allow observers to join after the game has started
|
||||
bool observerLateJoin = false;
|
||||
ScriptInterface& scriptInterface = server.GetScriptInterface();
|
||||
JSContext* cx = scriptInterface.GetContext();
|
||||
JSAutoRequest rq(cx);
|
||||
JS::RootedValue settings(cx);
|
||||
scriptInterface.GetProperty(server.m_GameAttributes.get(), "settings", &settings);
|
||||
if (scriptInterface.HasProperty(settings, "ObserverLateJoin"))
|
||||
scriptInterface.GetProperty(settings, "ObserverLateJoin", observerLateJoin);
|
||||
CFG_GET_VAL("network.lateobserverjoins", observerLateJoin);
|
||||
|
||||
// If the game has already started, only allow rejoins
|
||||
bool isRejoining = false;
|
||||
|
Loading…
Reference in New Issue
Block a user