Add lint test for invalid map tiles.
This commit is contained in:
committed by
Matthias Mailänder
parent
989800efff
commit
2518a353af
@@ -206,6 +206,8 @@ namespace OpenRA
|
|||||||
public readonly MiniYaml NotificationDefinitions;
|
public readonly MiniYaml NotificationDefinitions;
|
||||||
public readonly MiniYaml TranslationDefinitions;
|
public readonly MiniYaml TranslationDefinitions;
|
||||||
|
|
||||||
|
public readonly Dictionary<CPos, TerrainTile> ReplacedInvalidTerrainTiles = new Dictionary<CPos, TerrainTile>();
|
||||||
|
|
||||||
// Generated data
|
// Generated data
|
||||||
public readonly MapGrid Grid;
|
public readonly MapGrid Grid;
|
||||||
public IReadOnlyPackage Package { get; private set; }
|
public IReadOnlyPackage Package { get; private set; }
|
||||||
@@ -435,6 +437,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
if (!tileset.TryGetTileInfo(Tiles[uv], out var info))
|
if (!tileset.TryGetTileInfo(Tiles[uv], out var info))
|
||||||
{
|
{
|
||||||
|
ReplacedInvalidTerrainTiles[uv.ToCPos(this)] = Tiles[uv];
|
||||||
Tiles[uv] = tileset.DefaultTerrainTile;
|
Tiles[uv] = tileset.DefaultTerrainTile;
|
||||||
info = tileset.GetTileInfo(tileset.DefaultTerrainTile);
|
info = tileset.GetTileInfo(tileset.DefaultTerrainTile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override int GetHashCode() { return Type.GetHashCode() ^ Index.GetHashCode(); }
|
public override int GetHashCode() { return Type.GetHashCode() ^ Index.GetHashCode(); }
|
||||||
|
|
||||||
|
public override string ToString() { return Type + "," + Index; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ResourceTile
|
public struct ResourceTile
|
||||||
|
|||||||
25
OpenRA.Mods.Common/Lint/CheckMapTiles.cs
Normal file
25
OpenRA.Mods.Common/Lint/CheckMapTiles.cs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2020 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;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Lint
|
||||||
|
{
|
||||||
|
public class CheckMapTiles : ILintMapPass
|
||||||
|
{
|
||||||
|
public void Run(Action<string> emitError, Action<string> emitWarning, ModData modData, Map map)
|
||||||
|
{
|
||||||
|
foreach (var kv in map.ReplacedInvalidTerrainTiles)
|
||||||
|
emitError("Cell {0} references invalid terrain tile {1}.".F(kv.Key, kv.Value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user