Move creeps configuration to rules.

This commit is contained in:
Paul Chote
2016-02-29 20:41:16 +00:00
parent 3c779d4101
commit cce292a68a
7 changed files with 40 additions and 5 deletions

View File

@@ -58,7 +58,6 @@ namespace OpenRA
public class MapOptions
{
public bool? Creeps;
public bool? AllyBuildRadius;
public string TechLevel;
public string[] Difficulties = { };
@@ -66,8 +65,6 @@ namespace OpenRA
public void UpdateServerSettings(Session.Global settings)
{
if (Creeps.HasValue)
settings.Creeps = Creeps.Value;
if (AllyBuildRadius.HasValue)
settings.AllyBuildRadius = AllyBuildRadius.Value;
if (ShortGame.HasValue)

View File

@@ -732,6 +732,7 @@
<Compile Include="Traits\Render\WithGateSpriteBody.cs" />
<Compile Include="ColorValidator.cs" />
<Compile Include="UtilityCommands\ResizeMapCommand.cs" />
<Compile Include="Traits\World\MapCreeps.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View File

@@ -545,7 +545,8 @@ namespace OpenRA.Mods.Common.Server
return true;
}
if (server.Map.Options.Creeps.HasValue)
var mapCreeps = server.Map.Rules.Actors["world"].TraitInfoOrDefault<MapCreepsInfo>();
if (mapCreeps == null || mapCreeps.Locked)
{
server.SendOrderTo(conn, "Message", "Map has disabled Creeps spawning configuration.");
return true;

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 'Creeps' checkbox in the lobby options.")]
public class MapCreepsInfo : TraitInfo<MapCreeps>
{
[Desc("Default value of the creeps checkbox in the lobby.")]
public readonly bool Enabled = true;
[Desc("Prevent the creeps state from being changed in the lobby.")]
public readonly bool Locked = false;
}
public class MapCreeps { }
}

View File

@@ -376,8 +376,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var creeps = optionsBin.GetOrNull<CheckboxWidget>("CREEPS_CHECKBOX");
if (creeps != null)
{
var creepsLocked = new CachedTransform<Map, bool>(map =>
{
var mapCreeps = map.Rules.Actors["world"].TraitInfoOrDefault<MapCreepsInfo>();
return mapCreeps == null || mapCreeps.Locked;
});
creeps.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.Creeps;
creeps.IsDisabled = () => configurationDisabled() || Map.Options.Creeps.HasValue;
creeps.IsDisabled = () => configurationDisabled() || creepsLocked.Update(Map);
creeps.OnClick = () => orderManager.IssueOrder(Order.Command(
"creeps {0}".F(!orderManager.LobbyInfo.GlobalSettings.Creeps)));
}

View File

@@ -72,6 +72,7 @@ World:
ResourceClaimLayer:
PathfinderDebugOverlay:
WarheadDebugOverlay:
MapCreeps:
SpawnMapActors:
MPStartLocations:
CreateMPPlayers:

View File

@@ -87,6 +87,7 @@ World:
Type: SandCrater
Sequence: sandcraters
SmokePercentage: 0
MapCreeps:
SpawnMapActors:
CreateMPPlayers:
MPStartLocations: