Added ITilesetSpecificPaletteInfo for linting
This commit is contained in:
@@ -244,6 +244,12 @@ namespace OpenRA.Traits
|
||||
IEnumerable<Rectangle> ModifyScreenBounds(Actor self, WorldRenderer wr, IEnumerable<Rectangle> r);
|
||||
}
|
||||
|
||||
[RequireExplicitImplementation]
|
||||
public interface ITilesetSpecificPaletteInfo : ITraitInfoInterface
|
||||
{
|
||||
string Tileset { get; }
|
||||
}
|
||||
|
||||
[RequireExplicitImplementation]
|
||||
public interface IProvidesCursorPaletteInfo : ITraitInfoInterface
|
||||
{
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Server;
|
||||
using OpenRA.Traits;
|
||||
|
||||
@@ -146,11 +145,11 @@ namespace OpenRA.Mods.Common.Lint
|
||||
}
|
||||
else
|
||||
{
|
||||
// PaletteFromFile might only be active for a single tileset
|
||||
// So ignore any duplicate palette names as long as they are on different tilesets
|
||||
if (traitInfo is PaletteFromFileInfo paletteFromFileInfo && paletteFromFileInfo.Tileset != null)
|
||||
// Tileset-specific palettes can share a name, so check combinations.
|
||||
// NOTE: This does not check PaletteFromGimpOrJascFile!
|
||||
if (traitInfo is ITilesetSpecificPaletteInfo tilesetSpecificPaletteInfo && tilesetSpecificPaletteInfo.Tileset != null)
|
||||
{
|
||||
var tilesetPalette = (paletteFromFileInfo.Tileset, value);
|
||||
var tilesetPalette = (tilesetSpecificPaletteInfo.Tileset, value);
|
||||
if (tilesetPalettes.Contains(tilesetPalette))
|
||||
emitError($"Duplicate palette definition for palette name {value}");
|
||||
else
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
|
||||
[Desc("Load VGA palette (.pal) registers.")]
|
||||
class PaletteFromFileInfo : TraitInfo, IProvidesCursorPaletteInfo
|
||||
class PaletteFromFileInfo : TraitInfo, ITilesetSpecificPaletteInfo, IProvidesCursorPaletteInfo
|
||||
{
|
||||
[PaletteDefinition]
|
||||
[FieldLoader.Require]
|
||||
@@ -46,6 +46,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public override object Create(ActorInitializer init) { return new PaletteFromFile(init.World, this); }
|
||||
|
||||
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
|
||||
|
||||
string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null;
|
||||
|
||||
ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem)
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
|
||||
[Desc("Creates a greyscale palette without any base palette file.")]
|
||||
class PaletteFromGrayscaleInfo : TraitInfo
|
||||
class PaletteFromGrayscaleInfo : TraitInfo, ITilesetSpecificPaletteInfo
|
||||
{
|
||||
[PaletteDefinition]
|
||||
[FieldLoader.Require]
|
||||
@@ -34,6 +34,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Index set to be fully transparent/invisible.")]
|
||||
public readonly int TransparentIndex = 0;
|
||||
|
||||
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
|
||||
|
||||
public override object Create(ActorInitializer init) { return new PaletteFromGrayscale(init.World, this); }
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
|
||||
[Desc("Load a PNG and use its embedded palette.")]
|
||||
class PaletteFromPngInfo : TraitInfo, IProvidesCursorPaletteInfo
|
||||
class PaletteFromPngInfo : TraitInfo, ITilesetSpecificPaletteInfo, IProvidesCursorPaletteInfo
|
||||
{
|
||||
[PaletteDefinition]
|
||||
[FieldLoader.Require]
|
||||
@@ -44,6 +44,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public override object Create(ActorInitializer init) { return new PaletteFromPng(init.World, this); }
|
||||
|
||||
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
|
||||
|
||||
string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null;
|
||||
|
||||
ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem)
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
|
||||
[Desc("Creates a single color palette without any base palette file.")]
|
||||
class PaletteFromRGBAInfo : TraitInfo
|
||||
class PaletteFromRGBAInfo : TraitInfo, ITilesetSpecificPaletteInfo
|
||||
{
|
||||
[PaletteDefinition]
|
||||
[FieldLoader.Require]
|
||||
@@ -46,6 +46,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Index set to be fully transparent/invisible.")]
|
||||
public readonly int TransparentIndex = 0;
|
||||
|
||||
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
|
||||
|
||||
public override object Create(ActorInitializer init) { return new PaletteFromRGBA(init.World, this); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user