Move build radius configuration to rules.
This commit is contained in:
@@ -58,15 +58,12 @@ namespace OpenRA
|
|||||||
|
|
||||||
public class MapOptions
|
public class MapOptions
|
||||||
{
|
{
|
||||||
public bool? AllyBuildRadius;
|
|
||||||
public string TechLevel;
|
public string TechLevel;
|
||||||
public string[] Difficulties = { };
|
public string[] Difficulties = { };
|
||||||
public bool? ShortGame;
|
public bool? ShortGame;
|
||||||
|
|
||||||
public void UpdateServerSettings(Session.Global settings)
|
public void UpdateServerSettings(Session.Global settings)
|
||||||
{
|
{
|
||||||
if (AllyBuildRadius.HasValue)
|
|
||||||
settings.AllyBuildRadius = AllyBuildRadius.Value;
|
|
||||||
if (ShortGame.HasValue)
|
if (ShortGame.HasValue)
|
||||||
settings.ShortGame = ShortGame.Value;
|
settings.ShortGame = ShortGame.Value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -733,6 +733,7 @@
|
|||||||
<Compile Include="ColorValidator.cs" />
|
<Compile Include="ColorValidator.cs" />
|
||||||
<Compile Include="UtilityCommands\ResizeMapCommand.cs" />
|
<Compile Include="UtilityCommands\ResizeMapCommand.cs" />
|
||||||
<Compile Include="Traits\World\MapCreeps.cs" />
|
<Compile Include="Traits\World\MapCreeps.cs" />
|
||||||
|
<Compile Include="Traits\World\MapBuildRadius.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -569,7 +569,8 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (server.Map.Options.AllyBuildRadius.HasValue)
|
var mapBuildRadius = server.Map.Rules.Actors["world"].TraitInfoOrDefault<MapBuildRadiusInfo>();
|
||||||
|
if (mapBuildRadius == null || mapBuildRadius.AllyBuildRadiusLocked)
|
||||||
{
|
{
|
||||||
server.SendOrderTo(conn, "Message", "Map has disabled ally build radius configuration.");
|
server.SendOrderTo(conn, "Message", "Map has disabled ally build radius configuration.");
|
||||||
return true;
|
return true;
|
||||||
@@ -1035,6 +1036,9 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
var startingUnits = server.Map.Rules.Actors["world"].TraitInfoOrDefault<SpawnMPUnitsInfo>();
|
var startingUnits = server.Map.Rules.Actors["world"].TraitInfoOrDefault<SpawnMPUnitsInfo>();
|
||||||
gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass;
|
gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass;
|
||||||
|
|
||||||
|
var mapBuildRadius = server.Map.Rules.Actors["world"].TraitInfoOrDefault<MapBuildRadiusInfo>();
|
||||||
|
gs.AllyBuildRadius = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
|
||||||
|
|
||||||
server.Map.Options.UpdateServerSettings(server.LobbyInfo.GlobalSettings);
|
server.Map.Options.UpdateServerSettings(server.LobbyInfo.GlobalSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
28
OpenRA.Mods.Common/Traits/World/MapBuildRadius.cs
Normal file
28
OpenRA.Mods.Common/Traits/World/MapBuildRadius.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2016 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version. For more
|
||||||
|
* information, see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Traits
|
||||||
|
{
|
||||||
|
[Desc("Controls the build radius checkboxes in the lobby options.")]
|
||||||
|
public class MapBuildRadiusInfo : TraitInfo<MapBuildRadius>
|
||||||
|
{
|
||||||
|
[Desc("Default value of the ally build radius checkbox in the lobby.")]
|
||||||
|
public readonly bool AllyBuildRadiusEnabled = true;
|
||||||
|
|
||||||
|
[Desc("Prevent the ally build radius state from being changed in the lobby.")]
|
||||||
|
public readonly bool AllyBuildRadiusLocked = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MapBuildRadius { }
|
||||||
|
}
|
||||||
@@ -391,8 +391,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
var allybuildradius = optionsBin.GetOrNull<CheckboxWidget>("ALLYBUILDRADIUS_CHECKBOX");
|
var allybuildradius = optionsBin.GetOrNull<CheckboxWidget>("ALLYBUILDRADIUS_CHECKBOX");
|
||||||
if (allybuildradius != null)
|
if (allybuildradius != null)
|
||||||
{
|
{
|
||||||
|
var allyBuildRadiusLocked = new CachedTransform<Map, bool>(map =>
|
||||||
|
{
|
||||||
|
var mapBuildRadius = map.Rules.Actors["world"].TraitInfoOrDefault<MapBuildRadiusInfo>();
|
||||||
|
return mapBuildRadius == null || mapBuildRadius.AllyBuildRadiusLocked;
|
||||||
|
});
|
||||||
|
|
||||||
allybuildradius.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.AllyBuildRadius;
|
allybuildradius.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.AllyBuildRadius;
|
||||||
allybuildradius.IsDisabled = () => configurationDisabled() || Map.Options.AllyBuildRadius.HasValue;
|
allybuildradius.IsDisabled = () => configurationDisabled() || allyBuildRadiusLocked.Update(Map);
|
||||||
allybuildradius.OnClick = () => orderManager.IssueOrder(Order.Command(
|
allybuildradius.OnClick = () => orderManager.IssueOrder(Order.Command(
|
||||||
"allybuildradius {0}".F(!orderManager.LobbyInfo.GlobalSettings.AllyBuildRadius)));
|
"allybuildradius {0}".F(!orderManager.LobbyInfo.GlobalSettings.AllyBuildRadius)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ World:
|
|||||||
WarheadDebugOverlay:
|
WarheadDebugOverlay:
|
||||||
MapCreeps:
|
MapCreeps:
|
||||||
SpawnMapActors:
|
SpawnMapActors:
|
||||||
|
MapBuildRadius:
|
||||||
MPStartLocations:
|
MPStartLocations:
|
||||||
CreateMPPlayers:
|
CreateMPPlayers:
|
||||||
MPStartUnits@mcvonly:
|
MPStartUnits@mcvonly:
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ World:
|
|||||||
SmokePercentage: 0
|
SmokePercentage: 0
|
||||||
MapCreeps:
|
MapCreeps:
|
||||||
SpawnMapActors:
|
SpawnMapActors:
|
||||||
|
MapBuildRadius:
|
||||||
CreateMPPlayers:
|
CreateMPPlayers:
|
||||||
MPStartLocations:
|
MPStartLocations:
|
||||||
MPStartUnits@mcv:
|
MPStartUnits@mcv:
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ World:
|
|||||||
PathfinderDebugOverlay:
|
PathfinderDebugOverlay:
|
||||||
WarheadDebugOverlay:
|
WarheadDebugOverlay:
|
||||||
SpawnMapActors:
|
SpawnMapActors:
|
||||||
|
MapBuildRadius:
|
||||||
CreateMPPlayers:
|
CreateMPPlayers:
|
||||||
MPStartUnits@mcvonly:
|
MPStartUnits@mcvonly:
|
||||||
Class: none
|
Class: none
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ World:
|
|||||||
PathfinderDebugOverlay:
|
PathfinderDebugOverlay:
|
||||||
WarheadDebugOverlay:
|
WarheadDebugOverlay:
|
||||||
SpawnMapActors:
|
SpawnMapActors:
|
||||||
|
MapBuildRadius:
|
||||||
CreateMPPlayers:
|
CreateMPPlayers:
|
||||||
MPStartUnits@MCV:
|
MPStartUnits@MCV:
|
||||||
Class: none
|
Class: none
|
||||||
|
|||||||
Reference in New Issue
Block a user