Remove World.TileSet.
This commit is contained in:
@@ -17,7 +17,7 @@ namespace OpenRA.Graphics
|
|||||||
{
|
{
|
||||||
sealed class TerrainRenderer : IDisposable
|
sealed class TerrainRenderer : IDisposable
|
||||||
{
|
{
|
||||||
readonly World world;
|
readonly Map map;
|
||||||
readonly Dictionary<string, TerrainSpriteLayer> spriteLayers = new Dictionary<string, TerrainSpriteLayer>();
|
readonly Dictionary<string, TerrainSpriteLayer> spriteLayers = new Dictionary<string, TerrainSpriteLayer>();
|
||||||
readonly Theater theater;
|
readonly Theater theater;
|
||||||
readonly CellLayer<TerrainTile> mapTiles;
|
readonly CellLayer<TerrainTile> mapTiles;
|
||||||
@@ -25,19 +25,19 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
public TerrainRenderer(World world, WorldRenderer wr)
|
public TerrainRenderer(World world, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
this.world = world;
|
map = world.Map;
|
||||||
theater = wr.Theater;
|
theater = wr.Theater;
|
||||||
mapTiles = world.Map.MapTiles.Value;
|
mapTiles = map.MapTiles.Value;
|
||||||
mapHeight = world.Map.MapHeight.Value;
|
mapHeight = map.MapHeight.Value;
|
||||||
|
|
||||||
foreach (var template in world.TileSet.Templates)
|
foreach (var template in map.Rules.TileSet.Templates)
|
||||||
{
|
{
|
||||||
var palette = template.Value.Palette ?? TileSet.TerrainPaletteInternalName;
|
var palette = template.Value.Palette ?? TileSet.TerrainPaletteInternalName;
|
||||||
spriteLayers.GetOrAdd(palette, pal =>
|
spriteLayers.GetOrAdd(palette, pal =>
|
||||||
new TerrainSpriteLayer(world, wr, theater.Sheet, BlendMode.Alpha, wr.Palette(palette), wr.World.Type != WorldType.Editor));
|
new TerrainSpriteLayer(world, wr, theater.Sheet, BlendMode.Alpha, wr.Palette(palette), world.Type != WorldType.Editor));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var cell in world.Map.AllCells)
|
foreach (var cell in map.AllCells)
|
||||||
UpdateCell(cell);
|
UpdateCell(cell);
|
||||||
|
|
||||||
mapTiles.CellEntryChanged += UpdateCell;
|
mapTiles.CellEntryChanged += UpdateCell;
|
||||||
@@ -47,7 +47,7 @@ namespace OpenRA.Graphics
|
|||||||
public void UpdateCell(CPos cell)
|
public void UpdateCell(CPos cell)
|
||||||
{
|
{
|
||||||
var tile = mapTiles[cell];
|
var tile = mapTiles[cell];
|
||||||
var palette = world.TileSet.Templates[tile.Type].Palette ?? TileSet.TerrainPaletteInternalName;
|
var palette = map.Rules.TileSet.Templates[tile.Type].Palette ?? TileSet.TerrainPaletteInternalName;
|
||||||
var sprite = theater.TileSprite(tile);
|
var sprite = theater.TileSprite(tile);
|
||||||
foreach (var kv in spriteLayers)
|
foreach (var kv in spriteLayers)
|
||||||
kv.Value.Update(cell, palette == kv.Key ? sprite : null);
|
kv.Value.Update(cell, palette == kv.Key ? sprite : null);
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ namespace OpenRA.Graphics
|
|||||||
var world = worldRenderer.Viewport.ViewToWorldPx(view);
|
var world = worldRenderer.Viewport.ViewToWorldPx(view);
|
||||||
var map = worldRenderer.World.Map;
|
var map = worldRenderer.World.Map;
|
||||||
var candidates = CandidateMouseoverCells(world).ToList();
|
var candidates = CandidateMouseoverCells(world).ToList();
|
||||||
var tileSet = worldRenderer.World.TileSet;
|
var tileSet = worldRenderer.World.Map.Rules.TileSet;
|
||||||
|
|
||||||
foreach (var uv in candidates)
|
foreach (var uv in candidates)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
palette.Initialize();
|
palette.Initialize();
|
||||||
|
|
||||||
Theater = new Theater(world.TileSet);
|
Theater = new Theater(world.Map.Rules.TileSet);
|
||||||
terrainRenderer = new TerrainRenderer(world, this);
|
terrainRenderer = new TerrainRenderer(world, this);
|
||||||
|
|
||||||
devTrait = Exts.Lazy(() => world.LocalPlayer != null ? world.LocalPlayer.PlayerActor.Trait<DeveloperMode>() : null);
|
devTrait = Exts.Lazy(() => world.LocalPlayer != null ? world.LocalPlayer.PlayerActor.Trait<DeveloperMode>() : null);
|
||||||
|
|||||||
@@ -109,8 +109,6 @@ namespace OpenRA
|
|||||||
|
|
||||||
public readonly Map Map;
|
public readonly Map Map;
|
||||||
|
|
||||||
public readonly TileSet TileSet;
|
|
||||||
|
|
||||||
public readonly ActorMap ActorMap;
|
public readonly ActorMap ActorMap;
|
||||||
public readonly ScreenMap ScreenMap;
|
public readonly ScreenMap ScreenMap;
|
||||||
public readonly WorldType Type;
|
public readonly WorldType Type;
|
||||||
@@ -159,8 +157,6 @@ namespace OpenRA
|
|||||||
orderGenerator = new UnitOrderGenerator();
|
orderGenerator = new UnitOrderGenerator();
|
||||||
Map = map;
|
Map = map;
|
||||||
Timestep = orderManager.LobbyInfo.GlobalSettings.Timestep;
|
Timestep = orderManager.LobbyInfo.GlobalSettings.Timestep;
|
||||||
|
|
||||||
TileSet = map.Rules.TileSet;
|
|
||||||
SharedRandom = new MersenneTwister(orderManager.LobbyInfo.GlobalSettings.RandomSeed);
|
SharedRandom = new MersenneTwister(orderManager.LobbyInfo.GlobalSettings.RandomSeed);
|
||||||
|
|
||||||
var worldActorType = type == WorldType.Editor ? "EditorWorld" : "World";
|
var worldActorType = type == WorldType.Editor ? "EditorWorld" : "World";
|
||||||
|
|||||||
@@ -308,9 +308,10 @@ namespace OpenRA.Mods.Common.AI
|
|||||||
attackForceTicks = Random.Next(0, Info.AttackForceInterval);
|
attackForceTicks = Random.Next(0, Info.AttackForceInterval);
|
||||||
minAttackForceDelayTicks = Random.Next(0, Info.MinimumAttackForceDelay);
|
minAttackForceDelayTicks = Random.Next(0, Info.MinimumAttackForceDelay);
|
||||||
|
|
||||||
resourceTypeIndices = new BitArray(World.TileSet.TerrainInfo.Length); // Big enough
|
var tileset = World.Map.Rules.TileSet;
|
||||||
|
resourceTypeIndices = new BitArray(tileset.TerrainInfo.Length); // Big enough
|
||||||
foreach (var t in Map.Rules.Actors["world"].TraitInfos<ResourceTypeInfo>())
|
foreach (var t in Map.Rules.Actors["world"].TraitInfos<ResourceTypeInfo>())
|
||||||
resourceTypeIndices.Set(World.TileSet.GetTerrainIndex(t.TerrainType), true);
|
resourceTypeIndices.Set(tileset.GetTerrainIndex(t.TerrainType), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Possibly give this a more generic name when terrain type is unhardcoded
|
// TODO: Possibly give this a more generic name when terrain type is unhardcoded
|
||||||
@@ -672,7 +673,7 @@ namespace OpenRA.Mods.Common.AI
|
|||||||
{
|
{
|
||||||
var harvInfo = harvester.Info.TraitInfo<HarvesterInfo>();
|
var harvInfo = harvester.Info.TraitInfo<HarvesterInfo>();
|
||||||
var mobileInfo = harvester.Info.TraitInfo<MobileInfo>();
|
var mobileInfo = harvester.Info.TraitInfo<MobileInfo>();
|
||||||
var passable = (uint)mobileInfo.GetMovementClass(World.TileSet);
|
var passable = (uint)mobileInfo.GetMovementClass(World.Map.Rules.TileSet);
|
||||||
|
|
||||||
var path = pathfinder.FindPath(
|
var path = pathfinder.FindPath(
|
||||||
PathSearch.Search(World, mobileInfo, harvester, true,
|
PathSearch.Search(World, mobileInfo, harvester, true,
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
var searchRadiusSquared = searchRadius * searchRadius;
|
var searchRadiusSquared = searchRadius * searchRadius;
|
||||||
|
|
||||||
// Find any harvestable resources:
|
// Find any harvestable resources:
|
||||||
var passable = (uint)mobileInfo.GetMovementClass(self.World.TileSet);
|
var passable = (uint)mobileInfo.GetMovementClass(self.World.Map.Rules.TileSet);
|
||||||
List<CPos> path;
|
List<CPos> path;
|
||||||
using (var search = PathSearch.Search(self.World, mobileInfo, self, true,
|
using (var search = PathSearch.Search(self.World, mobileInfo, self, true,
|
||||||
loc => domainIndex.IsPassable(self.Location, loc, passable) && self.CanHarvestAt(loc, resLayer, harvInfo, territory))
|
loc => domainIndex.IsPassable(self.Location, loc, passable) && self.CanHarvestAt(loc, resLayer, harvInfo, territory))
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
mobile = self.Trait<Mobile>();
|
mobile = self.Trait<Mobile>();
|
||||||
pathFinder = self.World.WorldActor.Trait<IPathFinder>();
|
pathFinder = self.World.WorldActor.Trait<IPathFinder>();
|
||||||
domainIndex = self.World.WorldActor.Trait<DomainIndex>();
|
domainIndex = self.World.WorldActor.Trait<DomainIndex>();
|
||||||
movementClass = (uint)mobile.Info.GetMovementClass(self.World.TileSet);
|
movementClass = (uint)mobile.Info.GetMovementClass(self.World.Map.Rules.TileSet);
|
||||||
|
|
||||||
if (target.IsValidFor(self))
|
if (target.IsValidFor(self))
|
||||||
targetPosition = self.World.Map.CellContaining(target.CenterPosition);
|
targetPosition = self.World.Map.CellContaining(target.CenterPosition);
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
preview.IsVisible = () => editorWidget.CurrentBrush == this;
|
preview.IsVisible = () => editorWidget.CurrentBrush == this;
|
||||||
|
|
||||||
var variant = resource.Variants.FirstOrDefault();
|
var variant = resource.Variants.FirstOrDefault();
|
||||||
var sequenceProvider = wr.World.Map.Rules.Sequences;
|
var sequence = wr.World.Map.Rules.Sequences.GetSequence("resources", variant);
|
||||||
var sequence = sequenceProvider.GetSequence("resources", variant);
|
|
||||||
var sprite = sequence.GetSprite(resource.MaxDensity - 1);
|
var sprite = sequence.GetSprite(resource.MaxDensity - 1);
|
||||||
preview.GetSprite = () => sprite;
|
preview.GetSprite = () => sprite;
|
||||||
|
|
||||||
@@ -83,11 +82,11 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
var tile = world.Map.MapTiles.Value[cell];
|
var tile = world.Map.MapTiles.Value[cell];
|
||||||
var tileInfo = world.TileSet.GetTileInfo(tile);
|
var tileInfo = world.Map.Rules.TileSet.GetTileInfo(tile);
|
||||||
if (tileInfo == null)
|
if (tileInfo == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var terrainType = world.TileSet.TerrainInfo[tileInfo.TerrainType];
|
var terrainType = world.Map.Rules.TileSet.TerrainInfo[tileInfo.TerrainType];
|
||||||
|
|
||||||
if (mapResources[cell].Type == ResourceType.ResourceType)
|
if (mapResources[cell].Type == ResourceType.ResourceType)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
preview.GetScale = () => worldRenderer.Viewport.Zoom;
|
preview.GetScale = () => worldRenderer.Viewport.Zoom;
|
||||||
preview.IsVisible = () => editorWidget.CurrentBrush == this;
|
preview.IsVisible = () => editorWidget.CurrentBrush == this;
|
||||||
|
|
||||||
preview.Template = world.TileSet.Templates.First(t => t.Value.Id == template).Value;
|
preview.Template = world.Map.Rules.TileSet.Templates.First(t => t.Value.Id == template).Value;
|
||||||
var grid = world.Map.Grid;
|
var grid = world.Map.Grid;
|
||||||
bounds = worldRenderer.Theater.TemplateBounds(preview.Template, grid.TileSize, grid.Type);
|
bounds = worldRenderer.Theater.TemplateBounds(preview.Template, grid.TileSize, grid.Type);
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Orders
|
|||||||
world.Selection.Clear();
|
world.Selection.Clear();
|
||||||
|
|
||||||
var map = world.Map;
|
var map = world.Map;
|
||||||
var tileset = world.TileSet.Id.ToLowerInvariant();
|
var tileset = world.Map.Tileset.ToLowerInvariant();
|
||||||
|
|
||||||
var info = map.Rules.Actors[building];
|
var info = map.Rules.Actors[building];
|
||||||
buildingInfo = info.TraitInfo<BuildingInfo>();
|
buildingInfo = info.TraitInfo<BuildingInfo>();
|
||||||
|
|||||||
@@ -130,8 +130,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
byte GetTerrainType(CPos cell)
|
byte GetTerrainType(CPos cell)
|
||||||
{
|
{
|
||||||
var dx = cell - self.Location;
|
var dx = cell - self.Location;
|
||||||
var index = dx.X + self.World.TileSet.Templates[template].Size.X * dx.Y;
|
var tileSet = self.World.Map.Rules.TileSet;
|
||||||
return self.World.TileSet.GetTerrainIndex(new TerrainTile(template, (byte)index));
|
var index = dx.X + tileSet.Templates[template].Size.X * dx.Y;
|
||||||
|
return tileSet.GetTerrainIndex(new TerrainTile(template, (byte)index));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LinkNeighbouringBridges(World world, BridgeLayer bridges)
|
public void LinkNeighbouringBridges(World world, BridgeLayer bridges)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
var tile = world.Map.MapTiles.Value[cell];
|
var tile = world.Map.MapTiles.Value[cell];
|
||||||
var tileInfo = world.TileSet.GetTileInfo(tile);
|
var tileInfo = world.Map.Rules.TileSet.GetTileInfo(tile);
|
||||||
|
|
||||||
// TODO: This is bandaiding over bogus tilesets.
|
// TODO: This is bandaiding over bogus tilesets.
|
||||||
if (tileInfo != null && tileInfo.RampType > 0)
|
if (tileInfo != null && tileInfo.RampType > 0)
|
||||||
|
|||||||
@@ -48,11 +48,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
var world = self.World;
|
var world = self.World;
|
||||||
var map = world.Map;
|
var map = world.Map;
|
||||||
var tileSet = world.TileSet;
|
|
||||||
|
|
||||||
var tiles = map.MapTiles.Value;
|
var tiles = map.MapTiles.Value;
|
||||||
var pos = map.CellContaining(self.CenterPosition);
|
var pos = map.CellContaining(self.CenterPosition);
|
||||||
var terrainType = tileSet[tileSet.GetTerrainIndex(tiles[pos])].Type;
|
var terrainType = map.GetTerrainInfo(pos).Type;
|
||||||
|
|
||||||
if (!Info.TerrainModifier.ContainsKey(terrainType))
|
if (!Info.TerrainModifier.ContainsKey(terrainType))
|
||||||
return FullDamage;
|
return FullDamage;
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
// PERF: This struct allows us to cache the terrain info for the tileset used by the world.
|
// PERF: This struct allows us to cache the terrain info for the tileset used by the world.
|
||||||
// This allows us to speed up some performance-sensitive pathfinding calculations.
|
// This allows us to speed up some performance-sensitive pathfinding calculations.
|
||||||
World = world;
|
World = world;
|
||||||
TerrainInfos = info.TilesetTerrainInfo[world.TileSet];
|
TerrainInfos = info.TilesetTerrainInfo[world.Map.Rules.TileSet];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public int MovementCostForCell(World world, CPos cell)
|
public int MovementCostForCell(World world, CPos cell)
|
||||||
{
|
{
|
||||||
return MovementCostForCell(world.Map, TilesetTerrainInfo[world.TileSet], cell);
|
return MovementCostForCell(world.Map, TilesetTerrainInfo[world.Map.Rules.TileSet], cell);
|
||||||
}
|
}
|
||||||
|
|
||||||
int MovementCostForCell(Map map, TerrainInfo[] terrainInfos, CPos cell)
|
int MovementCostForCell(Map map, TerrainInfo[] terrainInfos, CPos cell)
|
||||||
@@ -630,7 +630,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (index == byte.MaxValue)
|
if (index == byte.MaxValue)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
var terrainSpeed = Info.TilesetTerrainInfo[self.World.TileSet][index].Speed;
|
var terrainSpeed = Info.TilesetTerrainInfo[self.World.Map.Rules.TileSet][index].Speed;
|
||||||
if (terrainSpeed == 0)
|
if (terrainSpeed == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
rotationBuffer = new uint[info.RotationRange];
|
rotationBuffer = new uint[info.RotationRange];
|
||||||
tilesetId = world.TileSet.Id;
|
tilesetId = world.Map.Rules.TileSet.Id;
|
||||||
|
|
||||||
validTileset = IsValidTileset();
|
validTileset = IsValidTileset();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public RadarColorFromTerrain(Actor self, string terrain)
|
public RadarColorFromTerrain(Actor self, string terrain)
|
||||||
{
|
{
|
||||||
c = self.World.TileSet[self.World.TileSet.GetTerrainIndex(terrain)].Color;
|
var tileSet = self.World.Map.Rules.TileSet;
|
||||||
|
c = tileSet[tileSet.GetTerrainIndex(terrain)].Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool VisibleOnRadar(Actor self) { return true; }
|
public bool VisibleOnRadar(Actor self) { return true; }
|
||||||
|
|||||||
@@ -158,9 +158,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (!checkTerrainType)
|
if (!checkTerrainType)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
var tileSet = self.World.TileSet;
|
|
||||||
var tiles = self.World.Map.MapTiles.Value;
|
var tiles = self.World.Map.MapTiles.Value;
|
||||||
var terrainType = tileSet[tileSet.GetTerrainIndex(tiles[self.Location])].Type;
|
var terrainType = self.World.Map.GetTerrainInfo(self.Location).Type;
|
||||||
|
|
||||||
return info.AllowedTerrainTypes.Contains(terrainType);
|
return info.AllowedTerrainTypes.Contains(terrainType);
|
||||||
}
|
}
|
||||||
@@ -174,7 +173,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (self.World.Map.Contains(self.Location))
|
if (self.World.Map.Contains(self.Location))
|
||||||
{
|
{
|
||||||
var tile = self.World.Map.MapTiles.Value[self.Location];
|
var tile = self.World.Map.MapTiles.Value[self.Location];
|
||||||
var ti = self.World.TileSet.GetTileInfo(tile);
|
var ti = self.World.Map.Rules.TileSet.GetTileInfo(tile);
|
||||||
if (ti != null)
|
if (ti != null)
|
||||||
ramp = ti.RampType;
|
ramp = ti.RampType;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
// Correlate the tile "image" aka subtile with its position to find the template origin
|
// Correlate the tile "image" aka subtile with its position to find the template origin
|
||||||
var tile = w.Map.MapTiles.Value[cell].Type;
|
var tile = w.Map.MapTiles.Value[cell].Type;
|
||||||
var index = w.Map.MapTiles.Value[cell].Index;
|
var index = w.Map.MapTiles.Value[cell].Index;
|
||||||
var template = w.TileSet.Templates[tile];
|
var template = w.Map.Rules.TileSet.Templates[tile];
|
||||||
var ni = cell.X - index % template.Size.X;
|
var ni = cell.X - index % template.Size.X;
|
||||||
var nj = cell.Y - index / template.Size.X;
|
var nj = cell.Y - index / template.Size.X;
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void WorldLoaded(World world, WorldRenderer wr)
|
public void WorldLoaded(World world, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
domainIndexes = new Dictionary<uint, MovementClassDomainIndex>();
|
domainIndexes = new Dictionary<uint, MovementClassDomainIndex>();
|
||||||
|
var tileSet = world.Map.Rules.TileSet;
|
||||||
var movementClasses =
|
var movementClasses =
|
||||||
world.Map.Rules.Actors.Where(ai => ai.Value.HasTraitInfo<MobileInfo>())
|
world.Map.Rules.Actors.Where(ai => ai.Value.HasTraitInfo<MobileInfo>())
|
||||||
.Select(ai => (uint)ai.Value.TraitInfo<MobileInfo>().GetMovementClass(world.TileSet)).Distinct();
|
.Select(ai => (uint)ai.Value.TraitInfo<MobileInfo>().GetMovementClass(tileSet)).Distinct();
|
||||||
|
|
||||||
foreach (var mc in movementClasses)
|
foreach (var mc in movementClasses)
|
||||||
domainIndexes[mc] = new MovementClassDomainIndex(world, mc);
|
domainIndexes[mc] = new MovementClassDomainIndex(world, mc);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Map = self.World.Map;
|
Map = self.World.Map;
|
||||||
Tileset = self.World.TileSet;
|
Tileset = self.World.Map.Rules.TileSet;
|
||||||
|
|
||||||
Tiles = new CellLayer<CellContents>(Map);
|
Tiles = new CellLayer<CellContents>(Map);
|
||||||
Resources = self.TraitsImplementing<ResourceType>()
|
Resources = self.TraitsImplementing<ResourceType>()
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void LoadPalettes(WorldRenderer wr)
|
public void LoadPalettes(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
wr.AddPalette(info.Name, new ImmutablePalette(wr.World.Map.Open(world.TileSet.Palette), info.ShadowIndex), info.AllowModifiers);
|
wr.AddPalette(info.Name, new ImmutablePalette(wr.World.Map.Open(world.Map.Rules.TileSet.Palette), info.ShadowIndex), info.AllowModifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<string> PaletteNames { get { yield return info.Name; } }
|
public IEnumerable<string> PaletteNames { get { yield return info.Name; } }
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
// Only expose the palette if it is available for the shellmap's tileset (which is a requirement for its use).
|
// Only expose the palette if it is available for the shellmap's tileset (which is a requirement for its use).
|
||||||
if (info.Tileset == null || info.Tileset == world.TileSet.Id)
|
if (info.Tileset == null || info.Tileset == world.Map.Rules.TileSet.Id)
|
||||||
yield return info.Name;
|
yield return info.Name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var domainIndex = world.WorldActor.TraitOrDefault<DomainIndex>();
|
var domainIndex = world.WorldActor.TraitOrDefault<DomainIndex>();
|
||||||
if (domainIndex != null)
|
if (domainIndex != null)
|
||||||
{
|
{
|
||||||
var passable = mi.GetMovementClass(world.TileSet);
|
var passable = mi.GetMovementClass(world.Map.Rules.TileSet);
|
||||||
if (!domainIndex.IsPassable(source, target, (uint)passable))
|
if (!domainIndex.IsPassable(source, target, (uint)passable))
|
||||||
return EmptyPath;
|
return EmptyPath;
|
||||||
}
|
}
|
||||||
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var domainIndex = world.WorldActor.TraitOrDefault<DomainIndex>();
|
var domainIndex = world.WorldActor.TraitOrDefault<DomainIndex>();
|
||||||
if (domainIndex != null)
|
if (domainIndex != null)
|
||||||
{
|
{
|
||||||
var passable = mi.GetMovementClass(world.TileSet);
|
var passable = mi.GetMovementClass(world.Map.Rules.TileSet);
|
||||||
tilesInRange = new List<CPos>(tilesInRange.Where(t => domainIndex.IsPassable(source, t, (uint)passable)));
|
tilesInRange = new List<CPos>(tilesInRange.Where(t => domainIndex.IsPassable(source, t, (uint)passable)));
|
||||||
if (!tilesInRange.Any())
|
if (!tilesInRange.Any())
|
||||||
return EmptyPath;
|
return EmptyPath;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public void LoadPalettes(WorldRenderer wr)
|
public void LoadPalettes(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
var filename = world.TileSet.PlayerPalette ?? world.TileSet.Palette;
|
var filename = world.Map.Rules.TileSet.PlayerPalette ?? world.Map.Rules.TileSet.Palette;
|
||||||
wr.AddPalette(info.Name, new ImmutablePalette(wr.World.Map.Open(filename), info.ShadowIndex), info.AllowModifiers);
|
wr.AddPalette(info.Name, new ImmutablePalette(wr.World.Map.Open(filename), info.ShadowIndex), info.AllowModifiers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (!rt.Info.AllowOnRamps)
|
if (!rt.Info.AllowOnRamps)
|
||||||
{
|
{
|
||||||
var tile = world.Map.MapTiles.Value[cell];
|
var tile = world.Map.MapTiles.Value[cell];
|
||||||
var tileInfo = world.TileSet.GetTileInfo(tile);
|
var tileInfo = world.Map.Rules.TileSet.GetTileInfo(tile);
|
||||||
if (tileInfo != null && tileInfo.RampType > 0)
|
if (tileInfo != null && tileInfo.RampType > 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -214,7 +214,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
CellContents CreateResourceCell(ResourceType t, CPos cell)
|
CellContents CreateResourceCell(ResourceType t, CPos cell)
|
||||||
{
|
{
|
||||||
world.Map.CustomTerrain[cell] = world.TileSet.GetTerrainIndex(t.Info.TerrainType);
|
world.Map.CustomTerrain[cell] = world.Map.Rules.TileSet.GetTerrainIndex(t.Info.TerrainType);
|
||||||
|
|
||||||
return new CellContents
|
return new CellContents
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var map = wr.World.Map;
|
var map = wr.World.Map;
|
||||||
var tileSet = wr.World.TileSet;
|
var tileSet = wr.World.Map.Rules.TileSet;
|
||||||
var wcr = Game.Renderer.WorldRgbaColorRenderer;
|
var wcr = Game.Renderer.WorldRgbaColorRenderer;
|
||||||
var colors = wr.World.TileSet.HeightDebugColors;
|
var colors = tileSet.HeightDebugColors;
|
||||||
var mouseCell = wr.Viewport.ViewToWorld(Viewport.LastMousePos).ToMPos(wr.World.Map);
|
var mouseCell = wr.Viewport.ViewToWorld(Viewport.LastMousePos).ToMPos(wr.World.Map);
|
||||||
|
|
||||||
foreach (var uv in wr.Viewport.AllVisibleCells.CandidateMapCoords)
|
foreach (var uv in wr.Viewport.AllVisibleCells.CandidateMapCoords)
|
||||||
|
|||||||
@@ -97,9 +97,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
var filter = actor.TraitInfoOrDefault<EditorTilesetFilterInfo>();
|
var filter = actor.TraitInfoOrDefault<EditorTilesetFilterInfo>();
|
||||||
if (filter != null)
|
if (filter != null)
|
||||||
{
|
{
|
||||||
if (filter.ExcludeTilesets != null && filter.ExcludeTilesets.Contains(world.TileSet.Id))
|
if (filter.ExcludeTilesets != null && filter.ExcludeTilesets.Contains(world.Map.Rules.TileSet.Id))
|
||||||
continue;
|
continue;
|
||||||
if (filter.RequireTilesets != null && !filter.RequireTilesets.Contains(world.TileSet.Id))
|
if (filter.RequireTilesets != null && !filter.RequireTilesets.Contains(world.Map.Rules.TileSet.Id))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
Log.Write("debug", "Map editor ignoring actor {0}, because of missing sprites for tileset {1}.",
|
Log.Write("debug", "Map editor ignoring actor {0}, because of missing sprites for tileset {1}.",
|
||||||
actor.Name, world.TileSet.Id);
|
actor.Name, world.Map.Rules.TileSet.Id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,8 +57,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
layerPreview.GetPalette = () => resource.Palette;
|
layerPreview.GetPalette = () => resource.Palette;
|
||||||
|
|
||||||
var variant = resource.Variants.FirstOrDefault();
|
var variant = resource.Variants.FirstOrDefault();
|
||||||
var sequenceProvider = rules.Sequences;
|
var sequence = rules.Sequences.GetSequence("resources", variant);
|
||||||
var sequence = sequenceProvider.GetSequence("resources", variant);
|
|
||||||
var frame = sequence.Frames != null ? sequence.Frames.Last() : resource.MaxDensity - 1;
|
var frame = sequence.Frames != null ? sequence.Frames.Last() : resource.MaxDensity - 1;
|
||||||
layerPreview.GetSprite = () => sequence.GetSprite(frame);
|
layerPreview.GetSprite = () => sequence.GetSprite(frame);
|
||||||
|
|
||||||
|
|||||||
@@ -140,12 +140,12 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
int leftColor, rightColor;
|
int leftColor, rightColor;
|
||||||
if (custom == byte.MaxValue)
|
if (custom == byte.MaxValue)
|
||||||
{
|
{
|
||||||
var type = world.TileSet.GetTileInfo(world.Map.MapTiles.Value[uv]);
|
var type = world.Map.Rules.TileSet.GetTileInfo(world.Map.MapTiles.Value[uv]);
|
||||||
leftColor = type != null ? type.LeftColor.ToArgb() : Color.Black.ToArgb();
|
leftColor = type != null ? type.LeftColor.ToArgb() : Color.Black.ToArgb();
|
||||||
rightColor = type != null ? type.RightColor.ToArgb() : Color.Black.ToArgb();
|
rightColor = type != null ? type.RightColor.ToArgb() : Color.Black.ToArgb();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
leftColor = rightColor = world.TileSet[custom].Color.ToArgb();
|
leftColor = rightColor = world.Map.Rules.TileSet[custom].Color.ToArgb();
|
||||||
|
|
||||||
var stride = radarSheet.Size.Width;
|
var stride = radarSheet.Size.Width;
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
this.info = info;
|
this.info = info;
|
||||||
layer = self.World.WorldActor.Trait<BuildableTerrainLayer>();
|
layer = self.World.WorldActor.Trait<BuildableTerrainLayer>();
|
||||||
bi = self.World.WorldActor.Trait<BuildingInfluence>();
|
bi = self.World.WorldActor.Trait<BuildingInfluence>();
|
||||||
template = self.World.TileSet.Templates[info.Template];
|
template = self.World.Map.Rules.TileSet.Templates[info.Template];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddedToWorld(Actor self)
|
public void AddedToWorld(Actor self)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
var aircraftInfo = producee.TraitInfoOrDefault<AircraftInfo>();
|
var aircraftInfo = producee.TraitInfoOrDefault<AircraftInfo>();
|
||||||
var mobileInfo = producee.TraitInfoOrDefault<MobileInfo>();
|
var mobileInfo = producee.TraitInfoOrDefault<MobileInfo>();
|
||||||
|
|
||||||
var passable = mobileInfo != null ? (uint)mobileInfo.GetMovementClass(self.World.TileSet) : 0;
|
var passable = mobileInfo != null ? (uint)mobileInfo.GetMovementClass(self.World.Map.Rules.TileSet) : 0;
|
||||||
var destination = rp != null ? rp.Location : self.Location;
|
var destination = rp != null ? rp.Location : self.Location;
|
||||||
|
|
||||||
var location = spawnLocation;
|
var location = spawnLocation;
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
{
|
{
|
||||||
readonly BuildableTerrainLayerInfo info;
|
readonly BuildableTerrainLayerInfo info;
|
||||||
readonly Dictionary<CPos, Sprite> dirty = new Dictionary<CPos, Sprite>();
|
readonly Dictionary<CPos, Sprite> dirty = new Dictionary<CPos, Sprite>();
|
||||||
readonly TileSet tileset;
|
|
||||||
readonly Map map;
|
readonly Map map;
|
||||||
|
|
||||||
TerrainSpriteLayer render;
|
TerrainSpriteLayer render;
|
||||||
@@ -37,7 +36,6 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
public BuildableTerrainLayer(Actor self, BuildableTerrainLayerInfo info)
|
public BuildableTerrainLayer(Actor self, BuildableTerrainLayerInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
tileset = self.World.TileSet;
|
|
||||||
map = self.World.Map;
|
map = self.World.Map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +47,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
|
|
||||||
public void AddTile(CPos cell, TerrainTile tile)
|
public void AddTile(CPos cell, TerrainTile tile)
|
||||||
{
|
{
|
||||||
map.CustomTerrain[cell] = tileset.GetTerrainIndex(tile);
|
map.CustomTerrain[cell] = map.Rules.TileSet.GetTerrainIndex(tile);
|
||||||
|
|
||||||
// Terrain tiles define their origin at the topleft
|
// Terrain tiles define their origin at the topleft
|
||||||
var s = theater.TileSprite(tile);
|
var s = theater.TileSprite(tile);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
{
|
{
|
||||||
this.self = self;
|
this.self = self;
|
||||||
|
|
||||||
var tileset = self.World.TileSet.Id.ToLowerInvariant();
|
var tileset = self.World.Map.Tileset.ToLowerInvariant();
|
||||||
tile = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
tile = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
minelayer = self;
|
minelayer = self;
|
||||||
minefieldStart = xy;
|
minefieldStart = xy;
|
||||||
|
|
||||||
var tileset = self.World.TileSet.Id.ToLowerInvariant();
|
var tileset = self.World.Map.Tileset.ToLowerInvariant();
|
||||||
tileOk = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
tileOk = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-valid-{0}".F(tileset)).GetSprite(0);
|
||||||
tileBlocked = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-invalid").GetSprite(0);
|
tileBlocked = self.World.Map.Rules.Sequences.GetSequence("overlay", "build-invalid").GetSprite(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
var info = (ChronoshiftPowerInfo)power.Info;
|
var info = (ChronoshiftPowerInfo)power.Info;
|
||||||
range = info.Range;
|
range = info.Range;
|
||||||
|
|
||||||
var tileset = manager.Self.World.TileSet.Id.ToLowerInvariant();
|
var tileset = world.Map.Tileset.ToLowerInvariant();
|
||||||
validTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.ValidTileSequencePrefix + tileset).GetSprite(0);
|
validTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.ValidTileSequencePrefix + tileset).GetSprite(0);
|
||||||
invalidTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.InvalidTileSequence).GetSprite(0);
|
invalidTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.InvalidTileSequence).GetSprite(0);
|
||||||
sourceTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.SourceTileSequence).GetSprite(0);
|
sourceTile = world.Map.Rules.Sequences.GetSequence(info.OverlaySpriteGroup, info.SourceTileSequence).GetSprite(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user