Move build radius configuration to rules.
This commit is contained in:
@@ -58,15 +58,12 @@ namespace OpenRA
|
||||
|
||||
public class MapOptions
|
||||
{
|
||||
public bool? AllyBuildRadius;
|
||||
public string TechLevel;
|
||||
public string[] Difficulties = { };
|
||||
public bool? ShortGame;
|
||||
|
||||
public void UpdateServerSettings(Session.Global settings)
|
||||
{
|
||||
if (AllyBuildRadius.HasValue)
|
||||
settings.AllyBuildRadius = AllyBuildRadius.Value;
|
||||
if (ShortGame.HasValue)
|
||||
settings.ShortGame = ShortGame.Value;
|
||||
}
|
||||
|
||||
@@ -733,6 +733,7 @@
|
||||
<Compile Include="ColorValidator.cs" />
|
||||
<Compile Include="UtilityCommands\ResizeMapCommand.cs" />
|
||||
<Compile Include="Traits\World\MapCreeps.cs" />
|
||||
<Compile Include="Traits\World\MapBuildRadius.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -569,7 +569,8 @@ namespace OpenRA.Mods.Common.Server
|
||||
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.");
|
||||
return true;
|
||||
@@ -1035,6 +1036,9 @@ namespace OpenRA.Mods.Common.Server
|
||||
var startingUnits = server.Map.Rules.Actors["world"].TraitInfoOrDefault<SpawnMPUnitsInfo>();
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
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");
|
||||
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.IsDisabled = () => configurationDisabled() || Map.Options.AllyBuildRadius.HasValue;
|
||||
allybuildradius.IsDisabled = () => configurationDisabled() || allyBuildRadiusLocked.Update(Map);
|
||||
allybuildradius.OnClick = () => orderManager.IssueOrder(Order.Command(
|
||||
"allybuildradius {0}".F(!orderManager.LobbyInfo.GlobalSettings.AllyBuildRadius)));
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ World:
|
||||
WarheadDebugOverlay:
|
||||
MapCreeps:
|
||||
SpawnMapActors:
|
||||
MapBuildRadius:
|
||||
MPStartLocations:
|
||||
CreateMPPlayers:
|
||||
MPStartUnits@mcvonly:
|
||||
|
||||
@@ -89,6 +89,7 @@ World:
|
||||
SmokePercentage: 0
|
||||
MapCreeps:
|
||||
SpawnMapActors:
|
||||
MapBuildRadius:
|
||||
CreateMPPlayers:
|
||||
MPStartLocations:
|
||||
MPStartUnits@mcv:
|
||||
|
||||
@@ -120,6 +120,7 @@ World:
|
||||
PathfinderDebugOverlay:
|
||||
WarheadDebugOverlay:
|
||||
SpawnMapActors:
|
||||
MapBuildRadius:
|
||||
CreateMPPlayers:
|
||||
MPStartUnits@mcvonly:
|
||||
Class: none
|
||||
|
||||
@@ -98,6 +98,7 @@ World:
|
||||
PathfinderDebugOverlay:
|
||||
WarheadDebugOverlay:
|
||||
SpawnMapActors:
|
||||
MapBuildRadius:
|
||||
CreateMPPlayers:
|
||||
MPStartUnits@MCV:
|
||||
Class: none
|
||||
|
||||
Reference in New Issue
Block a user