Move build radius configuration to rules.

This commit is contained in:
Paul Chote
2016-02-29 22:24:50 +00:00
parent cce292a68a
commit 5b2bf5b284
9 changed files with 45 additions and 5 deletions

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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);
}

View 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 { }
}

View File

@@ -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)));
}

View File

@@ -74,6 +74,7 @@ World:
WarheadDebugOverlay:
MapCreeps:
SpawnMapActors:
MapBuildRadius:
MPStartLocations:
CreateMPPlayers:
MPStartUnits@mcvonly:

View File

@@ -89,6 +89,7 @@ World:
SmokePercentage: 0
MapCreeps:
SpawnMapActors:
MapBuildRadius:
CreateMPPlayers:
MPStartLocations:
MPStartUnits@mcv:

View File

@@ -120,6 +120,7 @@ World:
PathfinderDebugOverlay:
WarheadDebugOverlay:
SpawnMapActors:
MapBuildRadius:
CreateMPPlayers:
MPStartUnits@mcvonly:
Class: none

View File

@@ -98,6 +98,7 @@ World:
PathfinderDebugOverlay:
WarheadDebugOverlay:
SpawnMapActors:
MapBuildRadius:
CreateMPPlayers:
MPStartUnits@MCV:
Class: none