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);
|
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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user