Extract default TileSet/Sequence dictionaries to ModData.

This commit is contained in:
Paul Chote
2016-03-11 18:08:23 +00:00
parent c32bf9f8f7
commit a3b1baa654
16 changed files with 61 additions and 50 deletions

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.Common.Widgets
preview.IsVisible = () => editorWidget.CurrentBrush == this;
var variant = resource.Variants.FirstOrDefault();
var sequenceProvider = wr.World.Map.Rules.Sequences[world.TileSet.Id];
var sequenceProvider = wr.World.Map.Rules.Sequences;
var sequence = sequenceProvider.GetSequence("resources", variant);
var sprite = sequence.GetSprite(resource.MaxDensity - 1);
preview.GetSprite = () => sprite;

View File

@@ -100,8 +100,7 @@ namespace OpenRA.Mods.Common.Widgets
var mapTiles = map.MapTiles.Value;
var mapHeight = map.MapHeight.Value;
var rules = map.Rules;
var tileset = rules.TileSets[map.Tileset];
var tileset = map.Rules.TileSet;
var template = tileset.Templates[Template];
var baseHeight = mapHeight.Contains(cell) ? mapHeight[cell] : (byte)0;
@@ -139,8 +138,7 @@ namespace OpenRA.Mods.Common.Widgets
var queue = new Queue<CPos>();
var touched = new CellLayer<bool>(map);
var rules = map.Rules;
var tileset = rules.TileSets[map.Tileset];
var tileset = map.Rules.TileSet;
var template = tileset.Templates[Template];
Action<CPos> maybeEnqueue = newCell =>

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Lint
var rules = map.Rules;
var factions = rules.Actors["world"].TraitInfos<FactionInfo>().Select(f => f.InternalName).ToArray();
var sequenceProviders = new[] { rules.Sequences[map.Tileset] };
var sequenceProviders = new[] { rules.Sequences };
foreach (var actorInfo in rules.Actors)
{

View File

@@ -308,7 +308,7 @@ namespace OpenRA.Mods.Common.Server
// Pick a random color for the bot
var validator = server.ModData.Manifest.Get<ColorValidator>();
var tileset = server.Map.Rules.TileSets[server.Map.Tileset];
var tileset = server.Map.Rules.TileSet;
var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color);
var playerColors = server.LobbyInfo.Clients.Select(c => c.Color.RGB)
.Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB));
@@ -1064,7 +1064,7 @@ namespace OpenRA.Mods.Common.Server
server.SendOrderTo(connectionToEcho, "Message", message);
};
var tileset = server.Map.Rules.TileSets[server.Map.Tileset];
var tileset = server.Map.Rules.TileSet;
var terrainColors = tileset.TerrainInfo.Where(ti => ti.RestrictPlayerColor).Select(ti => ti.Color).ToList();
var playerColors = server.LobbyInfo.Clients.Where(c => c.Index != playerIndex).Select(c => c.Color.RGB)
.Concat(server.MapPlayers.Players.Values.Select(p => p.Color.RGB)).ToList();

View File

@@ -60,7 +60,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
ValidateMapFormat(format);
var tileset = GetTileset(mapSection);
Map = new Map(modData, modData.DefaultRules.TileSets[tileset], MapSize, MapSize)
Map = new Map(modData, modData.DefaultTileSets[tileset], MapSize, MapSize)
{
Title = basic.GetValue("Name", Path.GetFileNameWithoutExtension(filename)),
Author = "Westwood Studios",

View File

@@ -19,7 +19,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public class LayerSelectorLogic : ChromeLogic
{
readonly EditorViewportControllerWidget editor;
readonly World world;
readonly WorldRenderer worldRenderer;
readonly ScrollPanelWidget layerTemplateList;
@@ -29,8 +28,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public LayerSelectorLogic(Widget widget, WorldRenderer worldRenderer)
{
this.worldRenderer = worldRenderer;
world = worldRenderer.World;
editor = widget.Parent.Get<EditorViewportControllerWidget>("MAP_EDITOR");
layerTemplateList = widget.Get<ScrollPanelWidget>("LAYERTEMPLATE_LIST");
@@ -60,7 +57,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
layerPreview.GetPalette = () => resource.Palette;
var variant = resource.Variants.FirstOrDefault();
var sequenceProvider = rules.Sequences[world.TileSet.Id];
var sequenceProvider = rules.Sequences;
var sequence = sequenceProvider.GetSequence("resources", variant);
var frame = sequence.Frames != null ? sequence.Frames.Last() : resource.MaxDensity - 1;
layerPreview.GetSprite = () => sequence.GetSprite(frame);

View File

@@ -20,14 +20,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Widget panel;
[ObjectCreator.UseCtor]
public NewMapLogic(Action onExit, Action<string> onSelect, Widget widget, World world)
public NewMapLogic(Action onExit, Action<string> onSelect, Widget widget, World world, ModData modData)
{
panel = widget;
panel.Get<ButtonWidget>("CANCEL_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };
var tilesetDropDown = panel.Get<DropDownButtonWidget>("TILESET");
var tilesets = world.Map.Rules.TileSets.Select(t => t.Key).ToList();
var tilesets = modData.DefaultTileSets.Select(t => t.Key).ToList();
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) =>
{
var item = ScrollItemWidget.Setup(template,
@@ -55,7 +55,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
height = Math.Max(2, height);
var maxTerrainHeight = world.Map.Grid.MaximumTerrainHeight;
var tileset = world.Map.Rules.TileSets[tilesetDropDown.Text];
var tileset = modData.DefaultTileSets[tilesetDropDown.Text];
var map = new Map(Game.ModData, tileset, width + 2, height + maxTerrainHeight + 2);
var tl = new PPos(1, 1);

View File

@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public TileSelectorLogic(Widget widget, WorldRenderer worldRenderer)
{
var rules = worldRenderer.World.Map.Rules;
var tileset = rules.TileSets[worldRenderer.World.Map.Tileset];
var tileset = rules.TileSet;
editor = widget.Parent.Get<EditorViewportControllerWidget>("MAP_EDITOR");
panel = widget.Get<ScrollPanelWidget>("TILETEMPLATE_LIST");

View File

@@ -48,14 +48,14 @@ namespace OpenRA.Mods.Common.Widgets
public TerrainTemplatePreviewWidget(WorldRenderer worldRenderer, World world)
{
this.worldRenderer = worldRenderer;
tileset = world.Map.Rules.TileSets[world.Map.Tileset];
tileset = world.Map.Rules.TileSet;
}
protected TerrainTemplatePreviewWidget(TerrainTemplatePreviewWidget other)
: base(other)
{
worldRenderer = other.worldRenderer;
tileset = other.worldRenderer.World.Map.Rules.TileSets[other.worldRenderer.World.Map.Tileset];
tileset = other.worldRenderer.World.Map.Rules.TileSet;
Template = other.Template;
GetScale = other.GetScale;
}