Remove requirement for server to explicitly generate maps.

This commit is contained in:
Paul Chote
2026-01-03 14:12:39 +00:00
committed by Gustas Kažukauskas
parent 156122f9e3
commit ed1ebd536b
11 changed files with 141 additions and 70 deletions

View File

@@ -953,6 +953,26 @@ namespace OpenRA.Mods.Common.Traits
return map;
}
public bool TryGenerateMetadata(ModData modData, MapGenerationArgs args, out MapPlayers players, out Dictionary<string, MiniYaml> ruleDefinitions)
{
try
{
var playerCount = FieldLoader.GetValue<int>("Players", args.Settings.NodeWithKey("Players").Value.Value);
// Generated maps use the default ruleset
ruleDefinitions = [];
players = new MapPlayers(modData.DefaultRules, playerCount);
return true;
}
catch
{
players = null;
ruleDefinitions = null;
return false;
}
}
public override object Create(ActorInitializer init)
{
return new ClassicMapGenerator(init, this);

View File

@@ -9,6 +9,7 @@
*/
#endregion
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using OpenRA.Mods.Common.MapGenerator;
@@ -93,6 +94,14 @@ namespace OpenRA.Mods.Common.Traits
return map;
}
public bool TryGenerateMetadata(ModData modData, MapGenerationArgs args, out MapPlayers players, out Dictionary<string, MiniYaml> ruleDefinitions)
{
ruleDefinitions = [];
players = new MapPlayers(modData.DefaultRules, 0);
return true;
}
public override object Create(ActorInitializer init)
{
return new ClearMapGenerator(this);