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); IEnumerable<Rectangle> ModifyScreenBounds(Actor self, WorldRenderer wr, IEnumerable<Rectangle> r);
} }
[RequireExplicitImplementation]
public interface ITilesetSpecificPaletteInfo : ITraitInfoInterface
{
string Tileset { get; }
}
[RequireExplicitImplementation] [RequireExplicitImplementation]
public interface IProvidesCursorPaletteInfo : ITraitInfoInterface public interface IProvidesCursorPaletteInfo : ITraitInfoInterface
{ {

View File

@@ -12,7 +12,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Mods.Common.Traits;
using OpenRA.Server; using OpenRA.Server;
using OpenRA.Traits; using OpenRA.Traits;
@@ -146,11 +145,11 @@ namespace OpenRA.Mods.Common.Lint
} }
else else
{ {
// PaletteFromFile might only be active for a single tileset // Tileset-specific palettes can share a name, so check combinations.
// So ignore any duplicate palette names as long as they are on different tilesets // NOTE: This does not check PaletteFromGimpOrJascFile!
if (traitInfo is PaletteFromFileInfo paletteFromFileInfo && paletteFromFileInfo.Tileset != null) if (traitInfo is ITilesetSpecificPaletteInfo tilesetSpecificPaletteInfo && tilesetSpecificPaletteInfo.Tileset != null)
{ {
var tilesetPalette = (paletteFromFileInfo.Tileset, value); var tilesetPalette = (tilesetSpecificPaletteInfo.Tileset, value);
if (tilesetPalettes.Contains(tilesetPalette)) if (tilesetPalettes.Contains(tilesetPalette))
emitError($"Duplicate palette definition for palette name {value}"); emitError($"Duplicate palette definition for palette name {value}");
else else

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)] [TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
[Desc("Load VGA palette (.pal) registers.")] [Desc("Load VGA palette (.pal) registers.")]
class PaletteFromFileInfo : TraitInfo, IProvidesCursorPaletteInfo class PaletteFromFileInfo : TraitInfo, ITilesetSpecificPaletteInfo, IProvidesCursorPaletteInfo
{ {
[PaletteDefinition] [PaletteDefinition]
[FieldLoader.Require] [FieldLoader.Require]
@@ -46,6 +46,8 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new PaletteFromFile(init.World, this); } public override object Create(ActorInitializer init) { return new PaletteFromFile(init.World, this); }
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null; string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null;
ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem) ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem)

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)] [TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
[Desc("Creates a greyscale palette without any base palette file.")] [Desc("Creates a greyscale palette without any base palette file.")]
class PaletteFromGrayscaleInfo : TraitInfo class PaletteFromGrayscaleInfo : TraitInfo, ITilesetSpecificPaletteInfo
{ {
[PaletteDefinition] [PaletteDefinition]
[FieldLoader.Require] [FieldLoader.Require]
@@ -34,6 +34,8 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Index set to be fully transparent/invisible.")] [Desc("Index set to be fully transparent/invisible.")]
public readonly int TransparentIndex = 0; public readonly int TransparentIndex = 0;
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
public override object Create(ActorInitializer init) { return new PaletteFromGrayscale(init.World, this); } 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)] [TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
[Desc("Load a PNG and use its embedded palette.")] [Desc("Load a PNG and use its embedded palette.")]
class PaletteFromPngInfo : TraitInfo, IProvidesCursorPaletteInfo class PaletteFromPngInfo : TraitInfo, ITilesetSpecificPaletteInfo, IProvidesCursorPaletteInfo
{ {
[PaletteDefinition] [PaletteDefinition]
[FieldLoader.Require] [FieldLoader.Require]
@@ -44,6 +44,8 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new PaletteFromPng(init.World, this); } public override object Create(ActorInitializer init) { return new PaletteFromPng(init.World, this); }
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null; string IProvidesCursorPaletteInfo.Palette => CursorPalette ? Name : null;
ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem) ImmutablePalette IProvidesCursorPaletteInfo.ReadPalette(IReadOnlyFileSystem fileSystem)

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
[TraitLocation(SystemActors.World | SystemActors.EditorWorld)] [TraitLocation(SystemActors.World | SystemActors.EditorWorld)]
[Desc("Creates a single color palette without any base palette file.")] [Desc("Creates a single color palette without any base palette file.")]
class PaletteFromRGBAInfo : TraitInfo class PaletteFromRGBAInfo : TraitInfo, ITilesetSpecificPaletteInfo
{ {
[PaletteDefinition] [PaletteDefinition]
[FieldLoader.Require] [FieldLoader.Require]
@@ -46,6 +46,8 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Index set to be fully transparent/invisible.")] [Desc("Index set to be fully transparent/invisible.")]
public readonly int TransparentIndex = 0; public readonly int TransparentIndex = 0;
string ITilesetSpecificPaletteInfo.Tileset => Tileset;
public override object Create(ActorInitializer init) { return new PaletteFromRGBA(init.World, this); } public override object Create(ActorInitializer init) { return new PaletteFromRGBA(init.World, this); }
} }