Add a mechanism to add palettes via traits

This commit is contained in:
Paul Chote
2010-02-03 21:49:37 +13:00
parent e44c46200d
commit 1e01911b46
6 changed files with 50 additions and 9 deletions

View File

@@ -33,12 +33,10 @@ namespace OpenRa.Graphics
AddPalette(new Palette(pal, new SingleColorRemap(Color.FromArgb(128, 255, 255, 255)))); // Highlight
AddPalette(new Palette(pal, new ShroudPaletteRemap())); // Shroud
AddPalette(pal); // Chrome (it's like gold, but we're not going to hax it in palettemods)
Palette palTerrain = new Palette(FileSystem.Open("temperat_ra.pal"));
AddPalette(palTerrain); // Terrain
}
int AddPalette(Palette p)
public int AddPalette(Palette p)
{
for (int i = 0; i < 256; i++)
this[new Point(i, allocated)] = p.GetColor(i);

View File

@@ -3,6 +3,7 @@ using System.Drawing;
using System.Linq;
using OpenRa.Traits;
using System;
using OpenRa.FileFormats;
namespace OpenRa.Graphics
{
@@ -28,6 +29,11 @@ namespace OpenRa.Graphics
lineRenderer = new LineRenderer(renderer);
uiOverlay = new UiOverlay(spriteRenderer);
palette = new HardwarePalette(renderer, world.Map);
Log.Write("Created worldrenderer");
}
public void AddPalette(string name, Palette pal)
{
palette.AddPalette(pal);
}
void DrawSpriteList(RectangleF rect,

View File

@@ -217,6 +217,7 @@
<Compile Include="Traits\LightPaletteRotator.cs" />
<Compile Include="Traits\LimitedAmmo.cs" />
<Compile Include="Traits\NukePower.cs" />
<Compile Include="Traits\PaletteFromFile.cs" />
<Compile Include="Traits\Passenger.cs" />
<Compile Include="Traits\PlaceBuilding.cs" />
<Compile Include="Traits\SupportPower.cs" />

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRa.FileFormats;
namespace OpenRa.Traits
{
class PaletteFromFileInfo : ITraitInfo
{
public readonly string Name = "Undefined";
public readonly string Theatre = "Undefined";
public readonly string Filename = "";
public readonly string Remap = "";
public object Create(Actor self) { return new PaletteFromFile(self, this); }
}
class PaletteFromFile
{
public PaletteFromFile(Actor self, PaletteFromFileInfo info)
{
Log.Write("Created palette");
if (info.Theatre == "Undefined" ||
info.Theatre.ToLowerInvariant() == self.World.Map.Theater.ToLowerInvariant())
{
self.World.WorldRenderer.AddPalette(info.Name, new Palette(FileSystem.Open("temperat_ra.pal")));
}
}
}
}

View File

@@ -63,6 +63,10 @@ namespace OpenRa
SpriteSheetBuilder.Initialize( Map );
Timer.Time( "Tileset: {0}" );
WorldRenderer = new WorldRenderer(this, Game.renderer);
Timer.Time("renderer: {0}");
oreFrequency = (int)(Rules.General.GrowthRate * 60 * 25);
oreTicks = oreFrequency;
Map.InitOreDensity();
@@ -83,9 +87,8 @@ namespace OpenRa
PathFinder = new PathFinder(this);
Timer.Time( "bridge, pathing: {0}" );
WorldRenderer = new WorldRenderer(this, Game.renderer);
Minimap = new Minimap(this, Game.renderer);
Timer.Time( "renderer, minimap: {0}" );
Timer.Time( "minimap: {0}" );
Timer.Time( "----end World.ctor" );
}

View File

@@ -14,3 +14,7 @@ World:
WaterPaletteRotation:
BuildingInfluence:
UnitInfluence:
PaletteFromFile@1:
Name: terrain
Theatre: temperat
Filename: temperat_ra.pal