Added ITilesetSpecificPaletteInfo for linting

This commit is contained in:
penev92
2023-01-09 23:28:17 +02:00
committed by Paul Chote
parent 80b92fb667
commit 5f80e93aee
6 changed files with 22 additions and 9 deletions

View File

@@ -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
{

View File

@@ -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

View File

@@ -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)

View File

@@ -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); }
}

View File

@@ -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)

View File

@@ -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); }
}