Merge pull request #8125 from pchote/player-palettes

Reorganize palette loading.
This commit is contained in:
Oliver Brakmann
2015-05-10 17:35:34 +02:00
25 changed files with 450 additions and 362 deletions

View File

@@ -30,6 +30,11 @@ namespace OpenRA.Graphics
readOnlyModifiablePalettes = modifiablePalettes.AsReadOnly(); readOnlyModifiablePalettes = modifiablePalettes.AsReadOnly();
} }
public bool Contains(string name)
{
return modifiablePalettes.ContainsKey(name) || palettes.ContainsKey(name);
}
public IPalette GetPalette(string name) public IPalette GetPalette(string name)
{ {
MutablePalette mutable; MutablePalette mutable;

View File

@@ -0,0 +1,37 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Traits;
namespace OpenRA.Graphics
{
public sealed class PaletteReference
{
readonly float index;
readonly HardwarePalette hardwarePalette;
public readonly string Name;
public IPalette Palette { get; internal set; }
public float TextureIndex { get { return index / hardwarePalette.Height; } }
public float TextureMidIndex { get { return (index + 0.5f) / hardwarePalette.Height; } }
public PaletteReference(string name, int index, IPalette palette, HardwarePalette hardwarePalette)
{
Name = name;
Palette = palette;
this.index = index;
this.hardwarePalette = hardwarePalette;
}
}
}

View File

@@ -17,7 +17,6 @@ namespace OpenRA.Graphics
{ {
readonly IVertexBuffer<Vertex> vertexBuffer; readonly IVertexBuffer<Vertex> vertexBuffer;
readonly Vertex[] updateCellVertices = new Vertex[4]; readonly Vertex[] updateCellVertices = new Vertex[4];
readonly float terrainPaletteIndex;
readonly int rowStride; readonly int rowStride;
readonly WorldRenderer worldRenderer; readonly WorldRenderer worldRenderer;
@@ -25,6 +24,8 @@ namespace OpenRA.Graphics
readonly CellLayer<TerrainTile> mapTiles; readonly CellLayer<TerrainTile> mapTiles;
readonly Map map; readonly Map map;
float terrainPaletteIndex;
public TerrainRenderer(World world, WorldRenderer wr) public TerrainRenderer(World world, WorldRenderer wr)
{ {
worldRenderer = wr; worldRenderer = wr;
@@ -34,21 +35,18 @@ namespace OpenRA.Graphics
terrainPaletteIndex = wr.Palette("terrain").TextureIndex; terrainPaletteIndex = wr.Palette("terrain").TextureIndex;
rowStride = 4 * map.Bounds.Width; rowStride = 4 * map.Bounds.Width;
vertexBuffer = Game.Renderer.Device.CreateVertexBuffer(rowStride * map.Bounds.Height);
var vertices = new Vertex[rowStride * map.Bounds.Height]; UpdateMap();
vertexBuffer = Game.Renderer.Device.CreateVertexBuffer(vertices.Length);
var nv = 0;
foreach (var cell in map.Cells)
{
GenerateTileVertices(vertices, nv, cell);
nv += 4;
}
vertexBuffer.SetData(vertices, nv);
map.MapTiles.Value.CellEntryChanged += UpdateCell; map.MapTiles.Value.CellEntryChanged += UpdateCell;
map.MapHeight.Value.CellEntryChanged += UpdateCell; map.MapHeight.Value.CellEntryChanged += UpdateCell;
wr.PaletteInvalidated += () =>
{
terrainPaletteIndex = wr.Palette("terrain").TextureIndex;
UpdateMap();
};
} }
void GenerateTileVertices(Vertex[] vertices, int offset, CPos cell) void GenerateTileVertices(Vertex[] vertices, int offset, CPos cell)
@@ -58,6 +56,19 @@ namespace OpenRA.Graphics
Util.FastCreateQuad(vertices, pos, tile, terrainPaletteIndex, offset, tile.Size); Util.FastCreateQuad(vertices, pos, tile, terrainPaletteIndex, offset, tile.Size);
} }
void UpdateMap()
{
var nv = 0;
var vertices = new Vertex[rowStride * map.Bounds.Height];
foreach (var cell in map.Cells)
{
GenerateTileVertices(vertices, nv, cell);
nv += 4;
}
vertexBuffer.SetData(vertices, nv);
}
public void UpdateCell(CPos cell) public void UpdateCell(CPos cell)
{ {
var uv = cell.ToMPos(map.TileShape); var uv = cell.ToMPos(map.TileShape);

View File

@@ -16,23 +16,6 @@ using OpenRA.Traits;
namespace OpenRA.Graphics namespace OpenRA.Graphics
{ {
public class PaletteReference
{
public readonly string Name;
public IPalette Palette { get; internal set; }
readonly float index;
readonly HardwarePalette hardwarePalette;
public float TextureIndex { get { return index / hardwarePalette.Height; } }
public float TextureMidIndex { get { return (index + 0.5f) / hardwarePalette.Height; } }
public PaletteReference(string name, int index, IPalette palette, HardwarePalette hardwarePalette)
{
Name = name;
Palette = palette;
this.index = index;
this.hardwarePalette = hardwarePalette;
}
}
public sealed class WorldRenderer : IDisposable public sealed class WorldRenderer : IDisposable
{ {
public static readonly Func<IRenderable, int> RenderableScreenZPositionComparisonKey = public static readonly Func<IRenderable, int> RenderableScreenZPositionComparisonKey =
@@ -42,6 +25,8 @@ namespace OpenRA.Graphics
public readonly Theater Theater; public readonly Theater Theater;
public Viewport Viewport { get; private set; } public Viewport Viewport { get; private set; }
public event Action PaletteInvalidated = null;
readonly HardwarePalette palette = new HardwarePalette(); readonly HardwarePalette palette = new HardwarePalette();
readonly Dictionary<string, PaletteReference> palettes = new Dictionary<string, PaletteReference>(); readonly Dictionary<string, PaletteReference> palettes = new Dictionary<string, PaletteReference>();
readonly TerrainRenderer terrainRenderer; readonly TerrainRenderer terrainRenderer;
@@ -58,6 +43,9 @@ namespace OpenRA.Graphics
foreach (var pal in world.TraitDict.ActorsWithTrait<ILoadsPalettes>()) foreach (var pal in world.TraitDict.ActorsWithTrait<ILoadsPalettes>())
pal.Trait.LoadPalettes(this); pal.Trait.LoadPalettes(this);
foreach (var p in world.Players)
UpdatePalettesForPlayer(p.InternalName, p.Color, false);
palette.Initialize(); palette.Initialize();
Theater = new Theater(world.TileSet); Theater = new Theater(world.TileSet);
@@ -66,6 +54,12 @@ namespace OpenRA.Graphics
devTrait = Exts.Lazy(() => world.LocalPlayer != null ? world.LocalPlayer.PlayerActor.Trait<DeveloperMode>() : null); devTrait = Exts.Lazy(() => world.LocalPlayer != null ? world.LocalPlayer.PlayerActor.Trait<DeveloperMode>() : null);
} }
public void UpdatePalettesForPlayer(string internalName, HSLColor color, bool replaceExisting)
{
foreach (var pal in World.WorldActor.TraitsImplementing<ILoadsPlayerPalettes>())
pal.LoadPlayerPalettes(this, internalName, color, replaceExisting);
}
PaletteReference CreatePaletteReference(string name) PaletteReference CreatePaletteReference(string name)
{ {
var pal = palette.GetPalette(name); var pal = palette.GetPalette(name);
@@ -73,9 +67,28 @@ namespace OpenRA.Graphics
} }
public PaletteReference Palette(string name) { return palettes.GetOrAdd(name, createPaletteReference); } public PaletteReference Palette(string name) { return palettes.GetOrAdd(name, createPaletteReference); }
public void AddPalette(string name, ImmutablePalette pal) { palette.AddPalette(name, pal, false); } public void AddPalette(string name, ImmutablePalette pal, bool allowModifiers = false, bool allowOverwrite = false)
public void AddPalette(string name, ImmutablePalette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); } {
public void ReplacePalette(string name, IPalette pal) { palette.ReplacePalette(name, pal); palettes[name].Palette = pal; } if (allowOverwrite && palette.Contains(name))
ReplacePalette(name, pal);
else
{
var oldHeight = palette.Height;
palette.AddPalette(name, pal, allowModifiers);
if (oldHeight != palette.Height && PaletteInvalidated != null)
PaletteInvalidated();
}
}
public void ReplacePalette(string name, IPalette pal)
{
palette.ReplacePalette(name, pal);
// Update cached PlayerReference if one exists
if (palettes.ContainsKey(name))
palettes[name].Palette = pal;
}
List<IFinalizedRenderable> GenerateRenderables() List<IFinalizedRenderable> GenerateRenderables()
{ {

View File

@@ -238,6 +238,7 @@
<Compile Include="Widgets\ChromeMetrics.cs" /> <Compile Include="Widgets\ChromeMetrics.cs" />
<Compile Include="Widgets\WidgetUtils.cs" /> <Compile Include="Widgets\WidgetUtils.cs" />
<Compile Include="Widgets\WorldInteractionControllerWidget.cs" /> <Compile Include="Widgets\WorldInteractionControllerWidget.cs" />
<Compile Include="Graphics\PaletteReference.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="FileSystem\D2kSoundResources.cs" /> <Compile Include="FileSystem\D2kSoundResources.cs" />

View File

@@ -8,6 +8,7 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using OpenRA.Graphics; using OpenRA.Graphics;
namespace OpenRA.Traits namespace OpenRA.Traits
@@ -26,24 +27,23 @@ namespace OpenRA.Traits
[Desc("Allow palette modifiers to change the palette.")] [Desc("Allow palette modifiers to change the palette.")]
public readonly bool AllowModifiers = true; public readonly bool AllowModifiers = true;
public object Create(ActorInitializer init) { return new PlayerColorPalette(init.Self.Owner, this); } public object Create(ActorInitializer init) { return new PlayerColorPalette(this); }
} }
public class PlayerColorPalette : ILoadsPalettes public class PlayerColorPalette : ILoadsPlayerPalettes
{ {
readonly Player owner;
readonly PlayerColorPaletteInfo info; readonly PlayerColorPaletteInfo info;
public PlayerColorPalette(Player owner, PlayerColorPaletteInfo info) public PlayerColorPalette(PlayerColorPaletteInfo info)
{ {
this.owner = owner;
this.info = info; this.info = info;
} }
public void LoadPalettes(WorldRenderer wr) public void LoadPlayerPalettes(WorldRenderer wr, string playerName, HSLColor color, bool replaceExisting)
{ {
var remap = new PlayerColorRemap(info.RemapIndex, owner.Color, info.Ramp); var remap = new PlayerColorRemap(info.RemapIndex, color, info.Ramp);
wr.AddPalette(info.BaseName + owner.InternalName, new ImmutablePalette(wr.Palette(info.BasePalette).Palette, remap), info.AllowModifiers); var pal = new ImmutablePalette(wr.Palette(info.BasePalette).Palette, remap);
wr.AddPalette(info.BaseName + playerName, pal, info.AllowModifiers, replaceExisting);
} }
} }
} }

View File

@@ -8,6 +8,7 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Graphics; using OpenRA.Graphics;
@@ -20,24 +21,23 @@ namespace OpenRA.Traits
[Desc("The prefix for the resulting player palettes")] [Desc("The prefix for the resulting player palettes")]
public readonly string BaseName = "highlight"; public readonly string BaseName = "highlight";
public object Create(ActorInitializer init) { return new PlayerHighlightPalette(init.Self.Owner, this); } public object Create(ActorInitializer init) { return new PlayerHighlightPalette(this); }
} }
public class PlayerHighlightPalette : ILoadsPalettes public class PlayerHighlightPalette : ILoadsPlayerPalettes
{ {
readonly Player owner;
readonly PlayerHighlightPaletteInfo info; readonly PlayerHighlightPaletteInfo info;
public PlayerHighlightPalette(Player owner, PlayerHighlightPaletteInfo info) public PlayerHighlightPalette(PlayerHighlightPaletteInfo info)
{ {
this.owner = owner;
this.info = info; this.info = info;
} }
public void LoadPalettes(WorldRenderer wr) public void LoadPlayerPalettes(WorldRenderer wr, string playerName, HSLColor color, bool replaceExisting)
{ {
var argb = (uint)Color.FromArgb(128, owner.Color.RGB).ToArgb(); var argb = (uint)Color.FromArgb(128, color.RGB).ToArgb();
wr.AddPalette(info.BaseName + owner.InternalName, new ImmutablePalette(Enumerable.Range(0, Palette.Size).Select(i => i == 0 ? 0 : argb))); var pal = new ImmutablePalette(Enumerable.Range(0, Palette.Size).Select(i => i == 0 ? 0 : argb));
wr.AddPalette(info.BaseName + playerName, pal, false, replaceExisting);
} }
} }
} }

View File

@@ -194,6 +194,7 @@ namespace OpenRA.Traits
public interface IInaccuracyModifier { int GetInaccuracyModifier(); } public interface IInaccuracyModifier { int GetInaccuracyModifier(); }
public interface IPowerModifier { int GetPowerModifier(); } public interface IPowerModifier { int GetPowerModifier(); }
public interface ILoadsPalettes { void LoadPalettes(WorldRenderer wr); } public interface ILoadsPalettes { void LoadPalettes(WorldRenderer wr); }
public interface ILoadsPlayerPalettes { void LoadPlayerPalettes(WorldRenderer wr, string playerName, HSLColor playerColor, bool replaceExisting); }
public interface IPaletteModifier { void AdjustPalette(IReadOnlyDictionary<string, MutablePalette> b); } public interface IPaletteModifier { void AdjustPalette(IReadOnlyDictionary<string, MutablePalette> b); }
public interface IPips { IEnumerable<PipType> GetPips(Actor self); } public interface IPips { IEnumerable<PipType> GetPips(Actor self); }
public interface ITags { IEnumerable<TagType> GetTags(); } public interface ITags { IEnumerable<TagType> GetTags(); }

View File

@@ -172,6 +172,12 @@ namespace OpenRA.Mods.Common.Traits
fogPalette = wr.Palette(info.FogPalette); fogPalette = wr.Palette(info.FogPalette);
shroudPalette = wr.Palette(info.ShroudPalette); shroudPalette = wr.Palette(info.ShroudPalette);
wr.PaletteInvalidated += () =>
{
mapBorderShroudIsCached = false;
MarkCellsDirty(CellRegion.Expand(map.Cells, 1));
};
} }
Edges GetEdges(MPos uv, Func<MPos, bool> isVisible) Edges GetEdges(MPos uv, Func<MPos, bool> isVisible)

View File

@@ -38,6 +38,7 @@ Rules:
./mods/cnc/rules/ai.yaml ./mods/cnc/rules/ai.yaml
./mods/cnc/rules/player.yaml ./mods/cnc/rules/player.yaml
./mods/cnc/rules/world.yaml ./mods/cnc/rules/world.yaml
./mods/cnc/rules/palettes.yaml
./mods/cnc/rules/defaults.yaml ./mods/cnc/rules/defaults.yaml
./mods/cnc/rules/structures.yaml ./mods/cnc/rules/structures.yaml
./mods/cnc/rules/infantry.yaml ./mods/cnc/rules/infantry.yaml

View File

@@ -0,0 +1,76 @@
^Palettes:
PaletteFromCurrentTileset@terrain:
Name: terrain
ShadowIndex: 4
PaletteFromCurrentTileset@static:
Name: staticterrain
ShadowIndex: 4
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@beaconposter:
Name: beaconposter
Filename: temperat.pal
ShadowIndex: 3
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
ShadowIndex: 4
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: temperat.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette@shroud:
Type: Shroud
ShroudPalette@fog:
Name: fog
Fog: true
FixedColorPalette@BlueTiberium:
Base: terrain
Name: bluetiberium
Color: 152, 255, 196
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
PlayerColorPalette:
BasePalette: terrain
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
PlayerHighlightPalette:
MenuPaletteEffect:
MenuEffect: Desaturated
CloakPaletteEffect:
NukePaletteEffect:
WaterPaletteRotation:
ExcludePalettes: effect

View File

@@ -10,10 +10,6 @@ Player:
PlayerResources: PlayerResources:
ActorGroupProxy: ActorGroupProxy:
DeveloperMode: DeveloperMode:
PlayerColorPalette:
BasePalette: terrain
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
PlayerHighlightPalette:
BaseAttackNotifier: BaseAttackNotifier:
Shroud: Shroud:
PlayerStatistics: PlayerStatistics:

View File

@@ -1,4 +1,5 @@
World: World:
Inherits: ^Palettes
ChatCommands: ChatCommands:
DevCommands: DevCommands:
PlayerCommands: PlayerCommands:
@@ -7,75 +8,10 @@ World:
ActorMap: ActorMap:
LoadWidgetAtGameStart: LoadWidgetAtGameStart:
ShellmapRoot: MENU_BACKGROUND ShellmapRoot: MENU_BACKGROUND
MenuPaletteEffect:
MenuEffect: Desaturated
CloakPaletteEffect:
ScreenShaker: ScreenShaker:
NukePaletteEffect:
WaterPaletteRotation:
ExcludePalettes: effect
BuildingInfluence: BuildingInfluence:
BridgeLayer: BridgeLayer:
Bridges: bridge1, bridge2, bridge3, bridge4 Bridges: bridge1, bridge2, bridge3, bridge4
PaletteFromCurrentTileset@terrain:
Name: terrain
ShadowIndex: 4
PaletteFromCurrentTileset@static:
Name: staticterrain
ShadowIndex: 4
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@beaconposter:
Name: beaconposter
Filename: temperat.pal
ShadowIndex: 3
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
ShadowIndex: 4
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: temperat.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette@shroud:
Type: Shroud
ShroudPalette@fog:
Name: fog
Fog: true
ShroudRenderer: ShroudRenderer:
ShroudVariants: typea, typeb, typec, typed ShroudVariants: typea, typeb, typec, typed
FogVariants: typea, typeb, typec, typed FogVariants: typea, typeb, typec, typed
@@ -115,11 +51,6 @@ World:
PipColor: Green PipColor: Green
AllowedTerrainTypes: Clear,Road AllowedTerrainTypes: Clear,Road
AllowUnderActors: true AllowUnderActors: true
FixedColorPalette@BlueTiberium:
Base: terrain
Name: bluetiberium
Color: 152, 255, 196
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
ResourceType@blue-tib: ResourceType@blue-tib:
ResourceType: 2 ResourceType: 2
Palette: bluetiberium Palette: bluetiberium

View File

@@ -28,6 +28,7 @@ Rules:
./mods/d2k/rules/ai.yaml ./mods/d2k/rules/ai.yaml
./mods/d2k/rules/player.yaml ./mods/d2k/rules/player.yaml
./mods/d2k/rules/world.yaml ./mods/d2k/rules/world.yaml
./mods/d2k/rules/palettes.yaml
./mods/d2k/rules/defaults.yaml ./mods/d2k/rules/defaults.yaml
./mods/d2k/rules/vehicles.yaml ./mods/d2k/rules/vehicles.yaml
./mods/d2k/rules/starport.yaml ./mods/d2k/rules/starport.yaml

View File

@@ -0,0 +1,76 @@
^Palettes:
PaletteFromCurrentTileset:
Name: terrain
PaletteFromFile@d2k:
Name: d2k
Filename: d2k.pal
ShadowIndex: 1
PaletteFromFile@chrome:
Name: chrome
Filename: d2k.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@effect:
Name: effect
Filename: d2k.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: d2k.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromR8@moveflash:
Name: moveflash
Filename: DATA.R8
Offset: 2572352
InvertColor: true
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
PaletteFromScaledPalette@starportlights:
Name: starportlights
BasePalette: d2k
AllowModifiers: false
Offset: -64
PaletteFromScaledPalette@repairlights:
Name: repairlights
BasePalette: d2k
AllowModifiers: false
Offset: -128
PaletteFromR8@shroud:
Name: shroud
Filename: DATA.R8
Offset: 12007
InvertColor: true
FogPaletteFromR8@fog:
Name: fog
Filename: DATA.R8
Offset: 12007
InvertColor: true
PlayerColorPalette:
BasePalette: d2k
RemapIndex: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
PlayerHighlightPalette:

View File

@@ -44,10 +44,6 @@ Player:
AdviceInterval: 650 AdviceInterval: 650
ActorGroupProxy: ActorGroupProxy:
DeveloperMode: DeveloperMode:
PlayerColorPalette:
BasePalette: d2k
RemapIndex: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
PlayerHighlightPalette:
BaseAttackNotifier: BaseAttackNotifier:
Shroud: Shroud:
FrozenActorLayer: FrozenActorLayer:

View File

@@ -1,4 +1,5 @@
World: World:
Inherits: ^Palettes
ChatCommands: ChatCommands:
DevCommands: DevCommands:
PlayerCommands: PlayerCommands:
@@ -17,76 +18,6 @@ World:
SpawnInterval: 60 SpawnInterval: 60
WaterChance: 0 WaterChance: 0
ValidGround: Sand, Dune, Rock ValidGround: Sand, Dune, Rock
PaletteFromCurrentTileset:
Name: terrain
PaletteFromFile@d2k:
Name: d2k
Filename: d2k.pal
ShadowIndex: 1
PaletteFromFile@chrome:
Name: chrome
Filename: d2k.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@effect:
Name: effect
Filename: d2k.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: d2k.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromR8@moveflash:
Name: moveflash
Filename: DATA.R8
Offset: 2572352
InvertColor: true
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
PaletteFromScaledPalette@starportlights:
Name: starportlights
BasePalette: d2k
AllowModifiers: false
Offset: -64
PaletteFromScaledPalette@repairlights:
Name: repairlights
BasePalette: d2k
AllowModifiers: false
Offset: -128
PaletteFromR8@shroud:
Name: shroud
Filename: DATA.R8
Offset: 12007
InvertColor: true
FogPaletteFromR8@fog:
Name: fog
Filename: DATA.R8
Offset: 12007
InvertColor: true
ShroudRenderer: ShroudRenderer:
ShroudVariants: typea, typeb, typec, typed ShroudVariants: typea, typeb, typec, typed
FogVariants: typea, typeb, typec, typed FogVariants: typea, typeb, typec, typed

View File

@@ -37,6 +37,7 @@ Rules:
./mods/ra/rules/misc.yaml ./mods/ra/rules/misc.yaml
./mods/ra/rules/ai.yaml ./mods/ra/rules/ai.yaml
./mods/ra/rules/player.yaml ./mods/ra/rules/player.yaml
./mods/ra/rules/palettes.yaml
./mods/ra/rules/world.yaml ./mods/ra/rules/world.yaml
./mods/ra/rules/defaults.yaml ./mods/ra/rules/defaults.yaml
./mods/ra/rules/vehicles.yaml ./mods/ra/rules/vehicles.yaml

View File

@@ -0,0 +1,73 @@
^Palettes:
PlayerPaletteFromCurrentTileset:
Name: player
ShadowIndex: 3,4
PaletteFromCurrentTileset:
Name: terrain
ShadowIndex: 3,4
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
ShadowIndex: 4
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: temperat.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@invuln:
Name: invuln
R: 128
G: 0
B: 0
A: 128
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette@shroud:
Type: Shroud
ShroudPalette@fog:
Name: fog
Fog: true
PlayerColorPalette:
BasePalette: player
RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
PlayerHighlightPalette:
MenuPaletteEffect:
WaterPaletteRotation:
ExcludePalettes: player, effect
LightPaletteRotator:
ExcludePalettes: terrain, effect
ChronoshiftPaletteEffect:
NukePaletteEffect:

View File

@@ -44,10 +44,6 @@ Player:
PlayerResources: PlayerResources:
ActorGroupProxy: ActorGroupProxy:
DeveloperMode: DeveloperMode:
PlayerColorPalette:
BasePalette: player
RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
PlayerHighlightPalette:
GpsWatcher: GpsWatcher:
Shroud: Shroud:
FrozenActorLayer: FrozenActorLayer:

View File

@@ -1,4 +1,5 @@
World: World:
Inherits: ^Palettes
ChatCommands: ChatCommands:
DevCommands: DevCommands:
PlayerCommands: PlayerCommands:
@@ -7,13 +8,6 @@ World:
ActorMap: ActorMap:
LoadWidgetAtGameStart: LoadWidgetAtGameStart:
ScreenShaker: ScreenShaker:
MenuPaletteEffect:
WaterPaletteRotation:
ExcludePalettes: player, effect
ChronoshiftPaletteEffect:
NukePaletteEffect:
LightPaletteRotator:
ExcludePalettes: terrain, effect
BuildingInfluence: BuildingInfluence:
ProductionQueueFromSelection: ProductionQueueFromSelection:
ProductionPaletteWidget: PRODUCTION_PALETTE ProductionPaletteWidget: PRODUCTION_PALETTE
@@ -26,67 +20,6 @@ World:
Maximum: 3 Maximum: 3
SpawnInterval: 120 SpawnInterval: 120
WaterChance: .2 WaterChance: .2
PlayerPaletteFromCurrentTileset:
Name: player
ShadowIndex: 3,4
PaletteFromCurrentTileset:
Name: terrain
ShadowIndex: 3,4
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
ShadowIndex: 3
AllowModifiers: false
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
ShadowIndex: 4
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: temperat.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@invuln:
Name: invuln
R: 128
G: 0
B: 0
A: 128
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette@shroud:
Type: Shroud
ShroudPalette@fog:
Name: fog
Fog: true
ShroudRenderer: ShroudRenderer:
FogVariants: shroud FogVariants: shroud
Index: 255, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 20, 40, 56, 65, 97, 130, 148, 194, 24, 33, 66, 132, 28, 41, 67, 134, 1, 2, 4, 8, 3, 6, 12, 9, 7, 14, 13, 11, 5, 10, 15, 255 Index: 255, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 20, 40, 56, 65, 97, 130, 148, 194, 24, 33, 66, 132, 28, 41, 67, 134, 1, 2, 4, 8, 3, 6, 12, 9, 7, 14, 13, 11, 5, 10, 15, 255

View File

@@ -65,6 +65,7 @@ Rules:
./mods/ts/rules/misc.yaml ./mods/ts/rules/misc.yaml
./mods/ts/rules/player.yaml ./mods/ts/rules/player.yaml
./mods/ts/rules/world.yaml ./mods/ts/rules/world.yaml
./mods/ts/rules/palettes.yaml
./mods/ts/rules/defaults.yaml ./mods/ts/rules/defaults.yaml
./mods/ts/rules/aircraft.yaml ./mods/ts/rules/aircraft.yaml
./mods/ts/rules/civilian-infantry.yaml ./mods/ts/rules/civilian-infantry.yaml

View File

@@ -0,0 +1,95 @@
^Palettes:
PaletteFromFile@mouse:
Name: mouse
Filename: mousepal.pal
PaletteFromFile@playersno:
Name: player
Tileset: SNOW
Filename: unitsno.pal
ShadowIndex: 1
PaletteFromFile@playertem:
Name: player
Tileset: TEMPERAT
Filename: unittem.pal
ShadowIndex: 1
PaletteFromFile@depth:
Name: depth
Filename: depth.pal
PaletteFromCurrentTileset:
Name: terrain
ShadowIndex: 1
PaletteFromFile@chrome:
Name: chrome
Filename: cameo.pal
AllowModifiers: false
ShadowIndex: 242
PaletteFromFile@pips:
Name: pips
Filename: palette.pal
AllowModifiers: false
ShadowIndex: 4
PaletteFromFile@ra:
Name: ra
Filename: palette.pal
ShadowIndex: 4
PaletteFromFile@effect:
Name: effect
Filename: anim.pal
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: unittem.pal
AllowModifiers: false
ShadowIndex: 1
PaletteFromFile@alpha:
Name: alpha
Filename: alpha.pal
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
TSShroudPalette@shroud:
Type: Shroud
VoxelNormalsPalette@normals:
Name: normals
Type: TiberianSun
FixedColorPalette@GreenTiberium:
Base: player
Name: greentiberium
Color: 64, 255, 128
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
FixedColorPalette@BlueTiberium:
Base: player
Name: bluetiberium
Color: 160, 255, 172
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
PlayerColorPalette:
BasePalette: player
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
PlayerHighlightPalette:
MenuPaletteEffect:

View File

@@ -40,10 +40,6 @@ Player:
PlayerResources: PlayerResources:
ActorGroupProxy: ActorGroupProxy:
DeveloperMode: DeveloperMode:
PlayerColorPalette:
BasePalette: player
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
PlayerHighlightPalette:
GpsWatcher: GpsWatcher:
Shroud: Shroud:
FrozenActorLayer: FrozenActorLayer:

View File

@@ -1,4 +1,5 @@
World: World:
Inherits: ^Palettes
ChatCommands: ChatCommands:
DevCommands: DevCommands:
PlayerCommands: PlayerCommands:
@@ -6,94 +7,14 @@ World:
ScreenMap: ScreenMap:
ActorMap: ActorMap:
LoadWidgetAtGameStart: LoadWidgetAtGameStart:
MenuPaletteEffect:
BuildingInfluence: BuildingInfluence:
ProductionQueueFromSelection: ProductionQueueFromSelection:
ProductionPaletteWidget: PRODUCTION_PALETTE ProductionPaletteWidget: PRODUCTION_PALETTE
PaletteFromFile@mouse:
Name: mouse
Filename: mousepal.pal
PaletteFromFile@playersno:
Name: player
Tileset: SNOW
Filename: unitsno.pal
ShadowIndex: 1
PaletteFromFile@playertem:
Name: player
Tileset: TEMPERAT
Filename: unittem.pal
ShadowIndex: 1
PaletteFromFile@depth:
Name: depth
Filename: depth.pal
PaletteFromCurrentTileset:
Name: terrain
ShadowIndex: 1
PaletteFromFile@chrome:
Name: chrome
Filename: cameo.pal
AllowModifiers: false
ShadowIndex: 242
PaletteFromFile@pips:
Name: pips
Filename: palette.pal
AllowModifiers: false
ShadowIndex: 4
PaletteFromFile@ra:
Name: ra
Filename: palette.pal
ShadowIndex: 4
PaletteFromFile@effect:
Name: effect
Filename: anim.pal
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: unittem.pal
AllowModifiers: false
ShadowIndex: 1
PaletteFromFile@alpha:
Name: alpha
Filename: alpha.pal
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@moveflash:
Name: moveflash
R: 255
G: 255
B: 255
A: 64
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
TSShroudPalette@shroud:
Type: Shroud
ShroudRenderer: ShroudRenderer:
Index: 255, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 20, 40, 56, 65, 97, 130, 148, 194, 24, 33, 66, 132, 28, 41, 67, 134, 1, 2, 4, 8, 3, 6, 12, 9, 7, 14, 13, 11, 5, 10, 15, 255 Index: 255, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 20, 40, 56, 65, 97, 130, 148, 194, 24, 33, 66, 132, 28, 41, 67, 134, 1, 2, 4, 8, 3, 6, 12, 9, 7, 14, 13, 11, 5, 10, 15, 255
UseExtendedIndex: true UseExtendedIndex: true
ShroudPalette: shroud ShroudPalette: shroud
FogPalette: shroud FogPalette: shroud
VoxelNormalsPalette@normals:
Name: normals
Type: TiberianSun
Country@Random: Country@Random:
Name: Any Name: Any
Race: Random Race: Random
@@ -134,11 +55,6 @@ World:
Sequence: largecraters Sequence: largecraters
ResourceLayer: ResourceLayer:
ResourceClaimLayer: ResourceClaimLayer:
FixedColorPalette@GreenTiberium:
Base: player
Name: greentiberium
Color: 64, 255, 128
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
ResourceType@Tiberium: ResourceType@Tiberium:
ResourceType: 1 ResourceType: 1
Palette: greentiberium Palette: greentiberium
@@ -151,11 +67,6 @@ World:
AllowedTerrainTypes: Clear, Rough, DirtRoad AllowedTerrainTypes: Clear, Rough, DirtRoad
AllowUnderActors: true AllowUnderActors: true
TerrainType: Tiberium TerrainType: Tiberium
FixedColorPalette@BlueTiberium:
Base: player
Name: bluetiberium
Color: 160, 255, 172
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
ResourceType@BlueTiberium: ResourceType@BlueTiberium:
ResourceType: 2 ResourceType: 2
Palette: bluetiberium Palette: bluetiberium