Extendable palette definitions. Contains many regressions, bugs and general hacks
This commit is contained in:
@@ -58,11 +58,12 @@ namespace OpenRA.Server
|
||||
throw new InvalidOperationException("Already got 8 players");
|
||||
}
|
||||
|
||||
static int ChooseFreePalette()
|
||||
static string ChooseFreePalette()
|
||||
{
|
||||
// TODO: FIX
|
||||
for (var i = 0; i < 8; i++)
|
||||
if (lobbyInfo.Clients.All(c => c.Palette != i))
|
||||
return i;
|
||||
//if (lobbyInfo.Clients.All(c => c.Palette != i))
|
||||
return "player"+i;
|
||||
|
||||
throw new InvalidOperationException("No free palettes");
|
||||
}
|
||||
@@ -247,13 +248,14 @@ namespace OpenRA.Server
|
||||
SendChatTo( conn, "You can't change your color after the game has started" );
|
||||
return true;
|
||||
}
|
||||
int pali;
|
||||
|
||||
int pal;
|
||||
if (!int.TryParse(s, out pal) || pal < 0 || pal > 7)
|
||||
if (!int.TryParse(s, out pali) || pali < 0 || pali > 7)
|
||||
{
|
||||
Console.WriteLine("Invalid palette: {0}", s);
|
||||
return false;
|
||||
}
|
||||
string pal = "player"+pali;
|
||||
|
||||
if (lobbyInfo.Clients.Where( c => c != GetClient(conn) ).Any( c => c.Palette == pal ))
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRa.FileFormats
|
||||
public class Client
|
||||
{
|
||||
public int Index;
|
||||
public int Palette;
|
||||
public string Palette;
|
||||
public int Race;
|
||||
// public int SpawnPoint;
|
||||
public string Name;
|
||||
|
||||
@@ -39,21 +39,9 @@ namespace OpenRa
|
||||
typing += c;
|
||||
}
|
||||
|
||||
public static readonly Color[] paletteColors =
|
||||
{
|
||||
Color.FromArgb(228, 200, 112),
|
||||
Color.FromArgb(56, 72, 125),
|
||||
Color.FromArgb(238, 0, 0),
|
||||
Color.FromArgb(198,97,0),
|
||||
Color.FromArgb(28,109,97),
|
||||
Color.FromArgb(153,76,53),
|
||||
Color.FromArgb(76,101,60),
|
||||
Color.FromArgb(133,113,101),
|
||||
};
|
||||
|
||||
public void AddLine(Player p, string text)
|
||||
{
|
||||
AddLine(paletteColors[(int) p.Palette], p.PlayerName, text);
|
||||
AddLine(p.Color, p.PlayerName, text);
|
||||
}
|
||||
|
||||
public void AddLine(Color c, string from, string text)
|
||||
|
||||
@@ -193,7 +193,7 @@ namespace OpenRa
|
||||
|
||||
DrawRadar( world );
|
||||
DrawPower( world );
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "moneybin"), new float2(Game.viewport.Width - 320, 0), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "moneybin"), new float2(Game.viewport.Width - 320, 0), "chrome");
|
||||
DrawMoney( world );
|
||||
rgbaRenderer.Flush();
|
||||
DrawButtons( world );
|
||||
@@ -316,7 +316,7 @@ namespace OpenRa
|
||||
DrawDialogBackground(mapRect, panelSprites, false);
|
||||
rgbaRenderer.DrawSprite(mapChooserSprite,
|
||||
new float2(mapRect.Location) + new float2(4, 4),
|
||||
PaletteType.Chrome,
|
||||
"chrome",
|
||||
new float2(mapRect.Size) - new float2(8, 8));
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
@@ -350,14 +350,15 @@ namespace OpenRa
|
||||
AddButton(r, _ => { });
|
||||
}
|
||||
|
||||
bool PaletteAvailable(int palette) { return Game.LobbyInfo.Clients.All(c => c.Palette != palette); }
|
||||
bool PaletteAvailable(string palette) { return Game.LobbyInfo.Clients.All(c => c.Palette != palette); }
|
||||
|
||||
void CyclePalette(bool left)
|
||||
{
|
||||
var d = left ? 1 : 7;
|
||||
var newpalette = ((int)Game.world.LocalPlayer.Palette + d) % 8;
|
||||
while (!PaletteAvailable(newpalette) && newpalette != (int)Game.world.LocalPlayer.Palette)
|
||||
newpalette = (newpalette + d) % 8;
|
||||
// TODO: FIX
|
||||
var newpalette = 1;//((int)Game.world.LocalPlayer.Palette + d) % 8;
|
||||
//while (!PaletteAvailable(newpalette) && newpalette != (int)Game.world.LocalPlayer.Palette)
|
||||
// newpalette = (newpalette + d) % 8;
|
||||
|
||||
Game.IssueOrder(
|
||||
Order.Chat("/pal " + newpalette));
|
||||
@@ -446,7 +447,7 @@ namespace OpenRa
|
||||
AddButton(paletteRect, CyclePalette);
|
||||
|
||||
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
||||
(PaletteType)client.Palette);
|
||||
client.Palette);
|
||||
|
||||
var raceRect = new Rectangle(r.Left + 290, y - 2, 65, 22);
|
||||
DrawDialogBackground(raceRect, panelSprites, false);
|
||||
@@ -463,7 +464,7 @@ namespace OpenRa
|
||||
|
||||
|
||||
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
||||
(PaletteType)client.Palette);
|
||||
client.Palette);
|
||||
|
||||
renderer.DrawText(((Race)client.Race).ToString(), new int2(r.Left + 300, y), Color.White);
|
||||
renderer.DrawText(client.State.ToString(), new int2(r.Left + 370, y), Color.White);
|
||||
@@ -530,12 +531,12 @@ namespace OpenRa
|
||||
|
||||
hasRadar = hasNewRadar;
|
||||
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "left"), radarOrigin, PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "right"), radarOrigin + new float2(201, 0), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bottom"), radarOrigin + new float2(0, 192), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "left"), radarOrigin, "chrome");
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "right"), radarOrigin + new float2(201, 0), "chrome");
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bottom"), radarOrigin + new float2(0, 192), "chrome");
|
||||
|
||||
if (radarAnimating)
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bg"), radarOrigin + new float2(9, 0), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome");
|
||||
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
@@ -567,7 +568,7 @@ namespace OpenRa
|
||||
var producing = queue.CurrentItem(groupName);
|
||||
var index = q.Key == currentTab ? 2 : (producing != null && producing.Done) ? 1 : 0;
|
||||
var race = (world.LocalPlayer.Race == Race.Allies) ? "allies" : "soviet";
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer,"tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer,"tabs-"+tabKeys[index], race+"-"+q.Key), new float2(x, y), "chrome");
|
||||
|
||||
buttons.Add(Pair.New(new RectangleF(x, y, tabWidth, tabHeight),
|
||||
(Action<bool>)(isLmb => HandleTabClick(groupName))));
|
||||
@@ -600,7 +601,7 @@ namespace OpenRa
|
||||
var x = Game.viewport.Width - 65;
|
||||
foreach (var d in moneyDigits.Reverse())
|
||||
{
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, digitCollection, (d - '0').ToString()), new float2(x, 6), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, digitCollection, (d - '0').ToString()), new float2(x, 6), "chrome");
|
||||
x -= 14;
|
||||
}
|
||||
}
|
||||
@@ -655,7 +656,7 @@ namespace OpenRa
|
||||
lastPowerDrainedPos = float2.Lerp(lastPowerDrainedPos.GetValueOrDefault(powerDrainedTemp), powerDrainedTemp, .3f);
|
||||
float2 powerDrainLevel = new float2(lastPowerDrainedPos.Value-indicator.size.X/2, barStart.Y-1);
|
||||
|
||||
rgbaRenderer.DrawSprite(indicator, powerDrainLevel, PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(indicator, powerDrainLevel, "chrome");
|
||||
rgbaRenderer.Flush();
|
||||
}
|
||||
|
||||
@@ -675,7 +676,7 @@ namespace OpenRa
|
||||
repairButton.ReplaceAnim(Game.controller.orderGenerator is RepairOrderGenerator ? "pressed" : "normal");
|
||||
AddButton(repairRect, isLmb => Game.controller.ToggleInputMode<RepairOrderGenerator>());
|
||||
}
|
||||
shpRenderer.DrawSprite(repairButton.Image, repairDrawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(repairButton.Image, repairDrawPos, "chrome");
|
||||
|
||||
// Sell
|
||||
Rectangle sellRect = new Rectangle(buttonOrigin.X+40, buttonOrigin.Y,
|
||||
@@ -686,7 +687,7 @@ namespace OpenRa
|
||||
sellButton.ReplaceAnim(Game.controller.orderGenerator is SellOrderGenerator ? "pressed" : "normal");
|
||||
|
||||
AddButton(sellRect, isLmb => Game.controller.ToggleInputMode<SellOrderGenerator>());
|
||||
shpRenderer.DrawSprite(sellButton.Image, sellDrawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(sellButton.Image, sellDrawPos, "chrome");
|
||||
shpRenderer.Flush();
|
||||
|
||||
if (Game.Settings.PowerDownBuildings)
|
||||
@@ -700,7 +701,7 @@ namespace OpenRa
|
||||
pwrdownButton.ReplaceAnim(Game.controller.orderGenerator is PowerDownOrderGenerator ? "pressed" : "normal");
|
||||
|
||||
AddButton(pwrdownRect, isLmb => Game.controller.ToggleInputMode<PowerDownOrderGenerator>());
|
||||
shpRenderer.DrawSprite(pwrdownButton.Image, pwrdownDrawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(pwrdownButton.Image, pwrdownDrawPos, "chrome");
|
||||
}
|
||||
shpRenderer.Flush();
|
||||
|
||||
@@ -713,7 +714,7 @@ namespace OpenRa
|
||||
optionsButton.ReplaceAnim(optionsPressed ? "left-pressed" : "left-normal");
|
||||
|
||||
AddButton(optionsRect, isLmb => optionsPressed = !optionsPressed);
|
||||
shpRenderer.DrawSprite(optionsButton.Image, optionsDrawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(optionsButton.Image, optionsDrawPos, "chrome");
|
||||
shpRenderer.Flush();
|
||||
|
||||
renderer.DrawText("Options", new int2((int)(optionsButton.Image.size.X - renderer.MeasureText("Options").X)/2, -2) , Color.White);
|
||||
@@ -739,26 +740,26 @@ namespace OpenRa
|
||||
if (ss.Length > 8)
|
||||
for( var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[8].size.X )
|
||||
for( var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[8].size.Y )
|
||||
sr.DrawSprite(ss[8], new float2(x, y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[8], new float2(x, y), "chrome");
|
||||
|
||||
//draw borders
|
||||
|
||||
for (var y = r.Top + (int)ss[0].size.Y; y < r.Bottom - (int)ss[1].size.Y; y += (int)ss[1].size.Y)
|
||||
{
|
||||
sr.DrawSprite(ss[2], new float2(r.Left, y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[3], new float2(r.Right - ss[3].size.X, y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[2], new float2(r.Left, y), "chrome");
|
||||
sr.DrawSprite(ss[3], new float2(r.Right - ss[3].size.X, y), "chrome");
|
||||
}
|
||||
|
||||
for (var x = r.Left + (int)ss[2].size.X; x < r.Right - (int)ss[3].size.X; x += (int)ss[3].size.X)
|
||||
{
|
||||
sr.DrawSprite(ss[0], new float2(x, r.Top), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[1], new float2(x, r.Bottom - ss[1].size.Y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[0], new float2(x, r.Top), "chrome");
|
||||
sr.DrawSprite(ss[1], new float2(x, r.Bottom - ss[1].size.Y), "chrome");
|
||||
}
|
||||
|
||||
sr.DrawSprite(ss[4], new float2(r.Left, r.Top), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[5], new float2(r.Right - ss[5].size.X, r.Top), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[6], new float2(r.Left, r.Bottom - ss[6].size.Y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[7], new float2(r.Right - ss[7].size.X, r.Bottom - ss[7].size.Y), PaletteType.Chrome);
|
||||
sr.DrawSprite(ss[4], new float2(r.Left, r.Top), "chrome");
|
||||
sr.DrawSprite(ss[5], new float2(r.Right - ss[5].size.X, r.Top), "chrome");
|
||||
sr.DrawSprite(ss[6], new float2(r.Left, r.Bottom - ss[6].size.Y), "chrome");
|
||||
sr.DrawSprite(ss[7], new float2(r.Right - ss[7].size.X, r.Bottom - ss[7].size.Y), "chrome");
|
||||
sr.Flush();
|
||||
|
||||
renderer.Device.DisableScissor();
|
||||
@@ -858,7 +859,7 @@ namespace OpenRa
|
||||
string tooltipItem = null;
|
||||
|
||||
// Draw the top border
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "top"), new float2(origin.X - 9, origin.Y - 9), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "top"), new float2(origin.X - 9, origin.Y - 9), "chrome");
|
||||
|
||||
// Draw the icons
|
||||
int lasty = -1;
|
||||
@@ -867,7 +868,7 @@ namespace OpenRa
|
||||
// Draw the background for this row
|
||||
if (y != lasty)
|
||||
{
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bg-" + (y % 4).ToString()), new float2(origin.X - 9, origin.Y + 48 * y), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bg-" + (y % 4).ToString()), new float2(origin.X - 9, origin.Y + 48 * y), "chrome");
|
||||
rgbaRenderer.Flush();
|
||||
lasty = y;
|
||||
}
|
||||
@@ -876,7 +877,7 @@ namespace OpenRa
|
||||
var drawPos = new float2(rect.Location);
|
||||
var isBuildingSomething = queue.CurrentItem(queueName) != null;
|
||||
|
||||
shpRenderer.DrawSprite(tabSprites[item.Name], drawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(tabSprites[item.Name], drawPos, "chrome");
|
||||
|
||||
var firstOfThis = queue.AllItems(queueName).FirstOrDefault(a => a.Item == item.Name);
|
||||
|
||||
@@ -892,7 +893,7 @@ namespace OpenRa
|
||||
* NumClockFrames / firstOfThis.TotalTime);
|
||||
clock.Tick();
|
||||
|
||||
shpRenderer.DrawSprite(clock.Image, drawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(clock.Image, drawPos, "chrome");
|
||||
|
||||
if (firstOfThis.Done)
|
||||
{
|
||||
@@ -934,23 +935,23 @@ namespace OpenRa
|
||||
|
||||
while (y < paletteRows)
|
||||
{
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bg-" + (y % 4).ToString()), new float2(origin.X - 9, origin.Y + 48 * y), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bg-" + (y % 4).ToString()), new float2(origin.X - 9, origin.Y + 48 * y), "chrome");
|
||||
y++;
|
||||
}
|
||||
|
||||
foreach (var ob in overlayBits)
|
||||
shpRenderer.DrawSprite(ob.First, ob.Second, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(ob.First, ob.Second, "chrome");
|
||||
|
||||
shpRenderer.Flush();
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bottom"), new float2(origin.X - 9, origin.Y - 1 + 48 * y), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "bottom"), new float2(origin.X - 9, origin.Y - 1 + 48 * y), "chrome");
|
||||
|
||||
// Draw dock
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-top"), new float2(Game.viewport.Width - 14, origin.Y - 23), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-top"), new float2(Game.viewport.Width - 14, origin.Y - 23), "chrome");
|
||||
for (int i = 0; i < y; i++)
|
||||
{
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-" + (y % 4).ToString()), new float2(Game.viewport.Width - 14, origin.Y + 48 * i), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-" + (y % 4).ToString()), new float2(Game.viewport.Width - 14, origin.Y + 48 * i), "chrome");
|
||||
}
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-bottom"), new float2(Game.viewport.Width - 14, origin.Y - 1 + 48 * y), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, paletteCollection, "dock-bottom"), new float2(Game.viewport.Width - 14, origin.Y - 1 + 48 * y), "chrome");
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
if (tooltipItem != null)
|
||||
@@ -1054,7 +1055,7 @@ namespace OpenRa
|
||||
{
|
||||
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
||||
var p = pos.ToFloat2() - new float2(tooltipSprite.size.X, 0);
|
||||
rgbaRenderer.DrawSprite(tooltipSprite, p, PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(tooltipSprite, p, "chrome");
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
var info = Rules.Info[unit];
|
||||
@@ -1104,10 +1105,10 @@ namespace OpenRa
|
||||
|
||||
if (numPowers == 0) return;
|
||||
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-top"), new float2(0, 14), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-top"), new float2(0, 14), "chrome");
|
||||
for (var i = 1; i < numPowers; i++)
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-middle"), new float2(0, 14 + i * 51), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-bottom"), new float2(0, 14 + numPowers * 51), PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-middle"), new float2(0, 14 + i * 51), "chrome");
|
||||
rgbaRenderer.DrawSprite(ChromeProvider.GetImage(renderer, chromeCollection, "specialbin-bottom"), new float2(0, 14 + numPowers * 51), "chrome");
|
||||
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
@@ -1122,14 +1123,14 @@ namespace OpenRa
|
||||
if (sp.IsAvailable)
|
||||
{
|
||||
var drawPos = new float2(5, y);
|
||||
shpRenderer.DrawSprite(image, drawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(image, drawPos, "chrome");
|
||||
|
||||
clock.PlayFetchIndex("idle",
|
||||
() => (sp.TotalTime - sp.RemainingTime)
|
||||
* NumClockFrames / sp.TotalTime);
|
||||
clock.Tick();
|
||||
|
||||
shpRenderer.DrawSprite(clock.Image, drawPos, PaletteType.Chrome);
|
||||
shpRenderer.DrawSprite(clock.Image, drawPos, "chrome");
|
||||
|
||||
var rect = new Rectangle(5, y, 64, 48);
|
||||
if (sp.IsReady)
|
||||
@@ -1137,7 +1138,7 @@ namespace OpenRa
|
||||
ready.Play("ready");
|
||||
shpRenderer.DrawSprite(ready.Image,
|
||||
drawPos + new float2((64 - ready.Image.size.X) / 2, 2),
|
||||
PaletteType.Chrome);
|
||||
"chrome");
|
||||
}
|
||||
|
||||
AddButton(rect, HandleSupportPower(sp));
|
||||
@@ -1174,7 +1175,7 @@ namespace OpenRa
|
||||
void DrawSupportPowerTooltip(World world, SupportPower sp, int2 pos)
|
||||
{
|
||||
var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg");
|
||||
rgbaRenderer.DrawSprite(tooltipSprite, pos, PaletteType.Chrome);
|
||||
rgbaRenderer.DrawSprite(tooltipSprite, pos, "chrome");
|
||||
rgbaRenderer.Flush();
|
||||
|
||||
pos += new int2(5, 5);
|
||||
|
||||
@@ -98,14 +98,14 @@ namespace OpenRa.Effects
|
||||
if (Projectile.High || Projectile.Arcing)
|
||||
{
|
||||
if (Projectile.Shadow)
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, PaletteType.Shadow);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow");
|
||||
|
||||
var highPos = pos - new float2(0, (VisualDest - Src).Length * height * 4 * at * (1 - at));
|
||||
|
||||
yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, Owner.Palette);
|
||||
}
|
||||
else
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, Projectile.UnderWater ? PaletteType.Shadow : Owner.Palette);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, Projectile.UnderWater ? "shadow" : Owner.Palette);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace OpenRa.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, 0);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect");
|
||||
}
|
||||
|
||||
public Player Owner { get { return null; } }
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace OpenRa.Effects
|
||||
{
|
||||
if (remainingTicks % 2 == 0)
|
||||
foreach (var r in target.Render())
|
||||
yield return r.WithPalette(PaletteType.Highlight);
|
||||
yield return r.WithPalette("highlight");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace OpenRa.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image, Pos - 0.5f * anim.Image.size - new float2(0, Altitude), 0);
|
||||
yield return new Renderable(anim.Image, Pos - 0.5f * anim.Image.size - new float2(0, Altitude), "effect");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRa.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, PaletteType.Shadow);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "shadow");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace OpenRa.Effects
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image,
|
||||
a.CenterLocation - .5f * anim.Image.size, PaletteType.Chrome);
|
||||
a.CenterLocation - .5f * anim.Image.size, "chrome");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRa.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, 0);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, "effect");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace OpenRa.Effects
|
||||
var y = d.Y;
|
||||
while( y >= prev.Y + 8 )
|
||||
{
|
||||
yield return new Renderable( tesla.GetSprite( 2 ), (float2)( from + prev - new int2( 0, 8 ) ), 0 );
|
||||
yield return new Renderable( tesla.GetSprite( 2 ), (float2)( from + prev - new int2( 0, 8 ) ), "effect");
|
||||
prev.Y += 8;
|
||||
}
|
||||
}
|
||||
@@ -58,26 +58,26 @@ namespace OpenRa.Effects
|
||||
var y = i * d.Y / d.X;
|
||||
if( y <= prev.Y - 8 )
|
||||
{
|
||||
yield return new Renderable(tesla.GetSprite(3), (float2)(from + prev - new int2(8, 16)), 0);
|
||||
yield return new Renderable(tesla.GetSprite(3), (float2)(from + prev - new int2(8, 16)), "effect");
|
||||
prev.Y -= 8;
|
||||
while( y <= prev.Y - 8 )
|
||||
{
|
||||
yield return new Renderable(tesla.GetSprite(2), (float2)(from + prev - new int2(0, 16)), 0);
|
||||
yield return new Renderable(tesla.GetSprite(2), (float2)(from + prev - new int2(0, 16)), "effect");
|
||||
prev.Y -= 8;
|
||||
}
|
||||
}
|
||||
else if( y >= prev.Y + 8 )
|
||||
{
|
||||
yield return new Renderable(tesla.GetSprite(0), (float2)(from + prev - new int2(8, 8)), 0);
|
||||
yield return new Renderable(tesla.GetSprite(0), (float2)(from + prev - new int2(8, 8)), "effect");
|
||||
prev.Y += 8;
|
||||
while( y >= prev.Y + 8 )
|
||||
{
|
||||
yield return new Renderable(tesla.GetSprite(2), (float2)(from + prev - new int2(0, 8)), 0);
|
||||
yield return new Renderable(tesla.GetSprite(2), (float2)(from + prev - new int2(0, 8)), "effect");
|
||||
prev.Y += 8;
|
||||
}
|
||||
}
|
||||
else
|
||||
yield return new Renderable(tesla.GetSprite(1), (float2)(from + prev - new int2(8, 8)), 0);
|
||||
yield return new Renderable(tesla.GetSprite(1), (float2)(from + prev - new int2(8, 8)), "effect");
|
||||
|
||||
prev.X += 8;
|
||||
}
|
||||
|
||||
@@ -2,45 +2,42 @@ using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using OpenRa.FileFormats;
|
||||
using OpenRa.Traits;
|
||||
using System;
|
||||
|
||||
namespace OpenRa.Graphics
|
||||
{
|
||||
public enum PaletteType
|
||||
{
|
||||
Gold, Blue, Red, Orange, Teal, Salmon, Green, Gray,
|
||||
Shadow, Invuln, Disabled, Highlight, Shroud, Chrome,
|
||||
Terrain
|
||||
};
|
||||
|
||||
class HardwarePalette : Sheet
|
||||
{
|
||||
const int maxEntries = 16;
|
||||
const int maxEntries = 32;
|
||||
int allocated = 0;
|
||||
|
||||
// We need to store the Palettes themselves for the remap palettes to work
|
||||
// We should probably try to fix this somehow
|
||||
static Dictionary<string, Palette> palettes;
|
||||
|
||||
public HardwarePalette(Renderer renderer, Map map)
|
||||
: base(renderer,new Size(256, maxEntries))
|
||||
{
|
||||
|
||||
Palette pal = new Palette(FileSystem.Open(map.Theater + ".pal"));
|
||||
AddPalette(pal); // Gold
|
||||
|
||||
foreach (string remap in new string[] { "blue", "red", "orange", "teal", "salmon", "green", "gray" })
|
||||
AddPalette(new Palette(pal, new PlayerColorRemap(FileSystem.Open(remap + ".rem"))));
|
||||
|
||||
AddPalette(new Palette(pal, new SingleColorRemap(Color.FromArgb(140, 0, 0, 0)))); // Shadow
|
||||
AddPalette(new Palette(pal, new SingleColorRemap(Color.FromArgb(128, 128, 0, 0)))); // Invulnerable (Iron Curtain)
|
||||
AddPalette(new Palette(pal, new SingleColorRemap(Color.FromArgb(180, 0, 0, 0)))); // Disabled / Low power
|
||||
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)
|
||||
palettes = new Dictionary<string, Palette>();
|
||||
}
|
||||
|
||||
|
||||
public int AddPalette(Palette p)
|
||||
public Palette GetPalette(string name)
|
||||
{
|
||||
for (int i = 0; i < 256; i++)
|
||||
this[new Point(i, allocated)] = p.GetColor(i);
|
||||
try { return palettes[name]; }
|
||||
catch (KeyNotFoundException)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Palette `{0}` does not exist".F(name));
|
||||
}
|
||||
}
|
||||
|
||||
public int AddPalette(string name, Palette p)
|
||||
{
|
||||
palettes.Add(name, p);
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
this[new Point(i, allocated)] = p.GetColor(i);
|
||||
}
|
||||
return allocated++;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@ namespace OpenRa.Graphics
|
||||
sprite = new Sprite(sheet, rect, TextureChannel.Alpha);
|
||||
mapOnlySprite = new Sprite(mapOnlySheet, rect, TextureChannel.Alpha);
|
||||
|
||||
playerColors = Util.MakeArray<Color>(8, b => Color.FromArgb(alpha, Chat.paletteColors[b]));
|
||||
shroudColor = Color.FromArgb(alpha, Color.Black);
|
||||
}
|
||||
|
||||
@@ -58,7 +57,6 @@ namespace OpenRa.Graphics
|
||||
.Select(a => Color.FromArgb(alpha, pal.GetColor(a))).ToArray();
|
||||
});
|
||||
|
||||
Color[] playerColors;
|
||||
static Color shroudColor;
|
||||
|
||||
public void InvalidateOre() { oreLayer = null; }
|
||||
@@ -107,7 +105,7 @@ namespace OpenRa.Graphics
|
||||
|
||||
foreach (var a in world.Queries.WithTrait<Unit>())
|
||||
*(c + (a.Actor.Location.Y * bitmapData.Stride >> 2) + a.Actor.Location.X) =
|
||||
playerColors[(int)a.Actor.Owner.Palette].ToArgb();
|
||||
Color.FromArgb(alpha, a.Actor.Owner.Color).ToArgb();
|
||||
|
||||
for (var y = world.Map.YOffset; y < world.Map.YOffset + world.Map.Height; y++)
|
||||
for (var x = world.Map.XOffset; x < world.Map.XOffset + world.Map.Width; x++)
|
||||
@@ -120,7 +118,7 @@ namespace OpenRa.Graphics
|
||||
var b = world.WorldActor.traits.Get<BuildingInfluence>().GetBuildingAt(new int2(x, y));
|
||||
if (b != null)
|
||||
*(c + (y * bitmapData.Stride >> 2) + x) =
|
||||
(b.Owner != null ? playerColors[(int)b.Owner.Palette] : colors[4]).ToArgb();
|
||||
(b.Owner != null ? Color.FromArgb(alpha, b.Owner.Color) : colors[4]).ToArgb();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +129,7 @@ namespace OpenRa.Graphics
|
||||
public void Draw(RectangleF rect, bool mapOnly)
|
||||
{
|
||||
rgbaRenderer.DrawSprite(mapOnly ? mapOnlySprite : sprite,
|
||||
new float2(rect.X, rect.Y), PaletteType.Chrome, new float2(rect.Width, rect.Height));
|
||||
new float2(rect.X, rect.Y), "chrome", new float2(rect.Width, rect.Height));
|
||||
rgbaRenderer.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace OpenRa.Graphics
|
||||
{
|
||||
var location = new int2(x, y);
|
||||
spriteRenderer.DrawSprite(smudgeSprites[tr.smudge - 1],
|
||||
Game.CellSize * (float2)location, 0);
|
||||
Game.CellSize * (float2)location, "terrain");
|
||||
}
|
||||
|
||||
var o = tr.overlay;
|
||||
@@ -62,7 +62,7 @@ namespace OpenRa.Graphics
|
||||
else if (Ore.overlayIsOre[o]) spriteIndex = map.MapTiles[x,y].density - 1;
|
||||
else if (Ore.overlayIsGems[o]) spriteIndex = map.MapTiles[x,y].density - 1;
|
||||
spriteRenderer.DrawSprite(sprites[spriteIndex],
|
||||
Game.CellSize * (float2)location, PaletteType.Terrain);
|
||||
Game.CellSize * (float2)location, "terrain");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,18 +54,18 @@ namespace OpenRa.Graphics
|
||||
}
|
||||
}
|
||||
|
||||
public void DrawSprite(Sprite s, float2 location, PaletteType palette)
|
||||
public void DrawSprite(Sprite s, float2 location, string palette)
|
||||
{
|
||||
DrawSprite(s, location, palette, s.size);
|
||||
}
|
||||
|
||||
public void DrawSprite(Sprite s, float2 location, PaletteType palette, float2 size)
|
||||
public void DrawSprite(Sprite s, float2 location, string palette, float2 size)
|
||||
{
|
||||
if (s.sheet != currentSheet)
|
||||
Flush();
|
||||
|
||||
currentSheet = s.sheet;
|
||||
Util.FastCreateQuad(vertices, indices, location.ToInt2(), s, (int)palette, nv, ni, size);
|
||||
Util.FastCreateQuad(vertices, indices, location.ToInt2(), s, Game.world.WorldRenderer.GetPaletteIndex(palette), nv, ni, size);
|
||||
nv += 4; ni += 6;
|
||||
if (++sprites >= spritesPerBatch)
|
||||
Flush();
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace OpenRa.Graphics
|
||||
Map map;
|
||||
OverlayRenderer overlayRenderer;
|
||||
|
||||
public TerrainRenderer(World world, Renderer renderer)
|
||||
public TerrainRenderer(World world, Renderer renderer, WorldRenderer wr)
|
||||
{
|
||||
this.renderer = renderer;
|
||||
this.map = world.Map;
|
||||
@@ -34,7 +34,9 @@ namespace OpenRa.Graphics
|
||||
for( int i = map.XOffset ; i < map.XOffset + map.Width; i++ )
|
||||
{
|
||||
Sprite tile = tileMapping[map.MapTiles[i, j]];
|
||||
Util.FastCreateQuad(vertices, indices, Game.CellSize * new float2(i, j), tile, (int)PaletteType.Terrain, nv, ni, tile.size);
|
||||
//var bar = Game.world.WorldRenderer;
|
||||
var foo = wr.GetPaletteIndex("terrain");
|
||||
Util.FastCreateQuad(vertices, indices, Game.CellSize * new float2(i, j), tile, foo, nv, ni, tile.size);
|
||||
nv += 4;
|
||||
ni += 6;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace OpenRa.Graphics
|
||||
}
|
||||
|
||||
var c = Game.chrome.HitTest(mousePos) ? Cursor.Default : Game.controller.ChooseCursor( world );
|
||||
cursorRenderer.DrawSprite(c.GetSprite((int)cursorFrame), mousePos + Location - c.GetHotspot(), 0);
|
||||
cursorRenderer.DrawSprite(c.GetSprite((int)cursorFrame), mousePos + Location - c.GetHotspot(), "cursor");
|
||||
cursorRenderer.Flush();
|
||||
|
||||
renderer.EndFrame();
|
||||
|
||||
@@ -24,16 +24,29 @@ namespace OpenRa.Graphics
|
||||
this.world = world;
|
||||
this.renderer = renderer;
|
||||
|
||||
terrainRenderer = new TerrainRenderer(world, renderer);
|
||||
terrainRenderer = new TerrainRenderer(world, renderer, this);
|
||||
spriteRenderer = new SpriteRenderer(renderer, true);
|
||||
lineRenderer = new LineRenderer(renderer);
|
||||
uiOverlay = new UiOverlay(spriteRenderer);
|
||||
palette = new HardwarePalette(renderer, world.Map);
|
||||
Log.Write("Created worldrenderer");
|
||||
}
|
||||
|
||||
// TODO: Implement
|
||||
public int GetPaletteIndex(string name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
public Palette GetPalette(string name)
|
||||
{
|
||||
return palette.GetPalette(name);
|
||||
}
|
||||
|
||||
|
||||
public void AddPalette(string name, Palette pal)
|
||||
{
|
||||
palette.AddPalette(pal);
|
||||
palette.AddPalette(name, pal);
|
||||
}
|
||||
|
||||
void DrawSpriteList(RectangleF rect,
|
||||
@@ -229,7 +242,7 @@ namespace OpenRa.Graphics
|
||||
var pipImages = new Animation("pips");
|
||||
pipImages.PlayFetchIndex("groups", () => (int)group);
|
||||
pipImages.Tick();
|
||||
spriteRenderer.DrawSprite(pipImages.Image, basePosition + new float2(-8, 1), PaletteType.Chrome);
|
||||
spriteRenderer.DrawSprite(pipImages.Image, basePosition + new float2(-8, 1), "chrome");
|
||||
}
|
||||
|
||||
void DrawPips(Actor selectedUnit, float2 basePosition)
|
||||
@@ -244,7 +257,7 @@ namespace OpenRa.Graphics
|
||||
{
|
||||
var pipImages = new Animation("pips");
|
||||
pipImages.PlayRepeating(pipStrings[(int)pip]);
|
||||
spriteRenderer.DrawSprite(pipImages.Image, pipxyBase + pipxyOffset, PaletteType.Chrome);
|
||||
spriteRenderer.DrawSprite(pipImages.Image, pipxyBase + pipxyOffset, "chrome");
|
||||
pipxyOffset += new float2(4, 0);
|
||||
|
||||
if (pipxyOffset.X+5 > selectedUnit.GetBounds(false).Width)
|
||||
@@ -274,7 +287,7 @@ namespace OpenRa.Graphics
|
||||
|
||||
var tagImages = new Animation("pips");
|
||||
tagImages.PlayRepeating(tagStrings[(int)tag]);
|
||||
spriteRenderer.DrawSprite(tagImages.Image, tagxyBase + tagxyOffset, PaletteType.Chrome);
|
||||
spriteRenderer.DrawSprite(tagImages.Image, tagxyBase + tagxyOffset, "chrome");
|
||||
|
||||
// Increment row
|
||||
tagxyOffset.Y += 8;
|
||||
|
||||
@@ -218,8 +218,11 @@
|
||||
<Compile Include="Traits\LimitedAmmo.cs" />
|
||||
<Compile Include="Traits\NukePower.cs" />
|
||||
<Compile Include="Traits\PaletteFromFile.cs" />
|
||||
<Compile Include="Traits\PaletteFromRemap.cs" />
|
||||
<Compile Include="Traits\PaletteFromRGBA.cs" />
|
||||
<Compile Include="Traits\Passenger.cs" />
|
||||
<Compile Include="Traits\PlaceBuilding.cs" />
|
||||
<Compile Include="Traits\ShroudPalette.cs" />
|
||||
<Compile Include="Traits\SupportPower.cs" />
|
||||
<Compile Include="Traits\ProvidesRadar.cs" />
|
||||
<Compile Include="Traits\Repairable.cs" />
|
||||
|
||||
@@ -5,6 +5,7 @@ using OpenRa.GameRules;
|
||||
using OpenRa.Graphics;
|
||||
using OpenRa.Traits;
|
||||
using OpenRa.FileFormats;
|
||||
using System.Drawing;
|
||||
|
||||
namespace OpenRa
|
||||
{
|
||||
@@ -13,7 +14,7 @@ namespace OpenRa
|
||||
public class Player
|
||||
{
|
||||
public Actor PlayerActor;
|
||||
public PaletteType Palette;
|
||||
public string Palette;
|
||||
public int Kills;
|
||||
public string PlayerName;
|
||||
public string InternalName;
|
||||
@@ -28,6 +29,17 @@ namespace OpenRa
|
||||
|
||||
public World World { get { return PlayerActor.World; } }
|
||||
|
||||
public Color Color;
|
||||
/*
|
||||
Color.FromArgb(228, 200, 112),
|
||||
Color.FromArgb(56, 72, 125),
|
||||
Color.FromArgb(238, 0, 0),
|
||||
Color.FromArgb(198,97,0),
|
||||
Color.FromArgb(28,109,97),
|
||||
Color.FromArgb(153,76,53),
|
||||
Color.FromArgb(76,101,60),
|
||||
Color.FromArgb(133,113,101),
|
||||
*/
|
||||
public Shroud Shroud;
|
||||
|
||||
public Player( World world, int index, Session.Client client )
|
||||
@@ -37,7 +49,7 @@ namespace OpenRa
|
||||
this.Index = index;
|
||||
this.InternalName = "Multi{0}".F(index);
|
||||
|
||||
this.Palette = client != null ? (PaletteType)client.Palette : (PaletteType)index;
|
||||
this.Palette = client != null ? "player"+client.Palette : "player"+index;
|
||||
this.PlayerName = client != null ? client.Name : "Player {0}".F(index+1);
|
||||
this.Race = client != null ? (Race)client.Race : Race.Allies;
|
||||
}
|
||||
@@ -160,10 +172,10 @@ namespace OpenRa
|
||||
Race = (Race)client.Race;
|
||||
}
|
||||
|
||||
if (Palette != (PaletteType)client.Palette)
|
||||
if (Palette != client.Palette)
|
||||
{
|
||||
Game.chat.AddLine(this, "has changed color to {0}".F((PaletteType)client.Palette));
|
||||
Palette = (PaletteType)client.Palette;
|
||||
Game.chat.AddLine(this, "has changed color to {0}".F(client.Palette));
|
||||
Palette = client.Palette;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,21 +173,21 @@ namespace OpenRa
|
||||
{
|
||||
r.DrawSprite(sprites[starti,j],
|
||||
Game.CellSize * new float2(starti, j),
|
||||
PaletteType.Shroud,
|
||||
"shroud",
|
||||
new float2(Game.CellSize * (i - starti), Game.CellSize));
|
||||
starti = i+1;
|
||||
}
|
||||
|
||||
r.DrawSprite(sprites[i, j],
|
||||
Game.CellSize * new float2(i, j),
|
||||
PaletteType.Shroud);
|
||||
"shroud");
|
||||
starti = i+1;
|
||||
}
|
||||
|
||||
if (starti < maxx)
|
||||
r.DrawSprite(sprites[starti, j],
|
||||
Game.CellSize * new float2(starti, j),
|
||||
PaletteType.Shroud,
|
||||
"shroud",
|
||||
new float2(Game.CellSize * (maxx - starti), Game.CellSize));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRa.Traits
|
||||
public IEnumerable<Renderable> Render(Actor self)
|
||||
{
|
||||
foreach (var t in TileSprites[state])
|
||||
yield return new Renderable(t.Value, Game.CellSize * t.Key, PaletteType.Gold);
|
||||
yield return new Renderable(t.Value, Game.CellSize * t.Key, "terrain");
|
||||
}
|
||||
|
||||
public int StateFromTemplate(TileTemplate t)
|
||||
|
||||
@@ -125,7 +125,7 @@ namespace OpenRa.Traits
|
||||
{
|
||||
yield return a;
|
||||
if (Disabled)
|
||||
yield return a.WithPalette(PaletteType.Disabled);
|
||||
yield return a.WithPalette("disabled");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRa.Traits
|
||||
{
|
||||
if (remainingFrames == 0)
|
||||
return;
|
||||
|
||||
/* TODO: FIX ME
|
||||
var frac = (float)remainingFrames / chronoEffectLength;
|
||||
for( var y = 0; y < (int)PaletteType.Chrome; y++ )
|
||||
for (var x = 0; x < 256; x++)
|
||||
@@ -35,6 +35,7 @@ namespace OpenRa.Traits
|
||||
var desat = Color.FromArgb(orig.A, lum, lum, lum);
|
||||
b.SetPixel(x, y, Graphics.Util.Lerp(frac, orig, desat));
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRa.Traits
|
||||
return rs;
|
||||
|
||||
if (self.Owner == self.World.LocalPlayer)
|
||||
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
||||
return rs.Select(a => a.WithPalette("shadow"));
|
||||
else
|
||||
return new Renderable[] { };
|
||||
}
|
||||
|
||||
@@ -7,10 +7,9 @@ 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 readonly string Name = null;
|
||||
public readonly string Theatre = null;
|
||||
public readonly string Filename = null;
|
||||
public object Create(Actor self) { return new PaletteFromFile(self, this); }
|
||||
}
|
||||
|
||||
@@ -18,11 +17,11 @@ namespace OpenRa.Traits
|
||||
{
|
||||
public PaletteFromFile(Actor self, PaletteFromFileInfo info)
|
||||
{
|
||||
Log.Write("Created palette");
|
||||
if (info.Theatre == "Undefined" ||
|
||||
if (info.Theatre == null ||
|
||||
info.Theatre.ToLowerInvariant() == self.World.Map.Theater.ToLowerInvariant())
|
||||
{
|
||||
self.World.WorldRenderer.AddPalette(info.Name, new Palette(FileSystem.Open("temperat_ra.pal")));
|
||||
Log.Write("Loading palette {0} from file {1}", info.Name, info.Filename);
|
||||
self.World.WorldRenderer.AddPalette(info.Name, new Palette(FileSystem.Open(info.Filename)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
35
OpenRa.Game/Traits/PaletteFromRGBA.cs
Normal file
35
OpenRa.Game/Traits/PaletteFromRGBA.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Drawing;
|
||||
using OpenRa.FileFormats;
|
||||
|
||||
namespace OpenRa.Traits
|
||||
{
|
||||
class PaletteFromRGBAInfo : ITraitInfo
|
||||
{
|
||||
public readonly string Name = null;
|
||||
public readonly string Theatre = null;
|
||||
public readonly int R = 0;
|
||||
public readonly int G = 0;
|
||||
public readonly int B = 0;
|
||||
public readonly int A = 255;
|
||||
public object Create(Actor self) { return new PaletteFromRGBA(self, this); }
|
||||
}
|
||||
|
||||
class PaletteFromRGBA
|
||||
{
|
||||
public PaletteFromRGBA(Actor self, PaletteFromRGBAInfo info)
|
||||
{
|
||||
if (info.Theatre == null ||
|
||||
info.Theatre.ToLowerInvariant() == self.World.Map.Theater.ToLowerInvariant())
|
||||
{
|
||||
Log.Write("Loading palette {0} from RGBA {1} {2} {3} {4}",info.Name,info.R,info.G,info.B,info.A);
|
||||
// TODO: This shouldn't rely on a base palette
|
||||
var wr = self.World.WorldRenderer;
|
||||
var pal = wr.GetPalette("player0");
|
||||
wr.AddPalette(info.Name, new Palette(pal, new SingleColorRemap(Color.FromArgb(info.A, info.R, info.G, info.B))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
32
OpenRa.Game/Traits/PaletteFromRemap.cs
Normal file
32
OpenRa.Game/Traits/PaletteFromRemap.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRa.FileFormats;
|
||||
|
||||
namespace OpenRa.Traits
|
||||
{
|
||||
class PaletteFromRemapInfo : ITraitInfo
|
||||
{
|
||||
public readonly string Name = null;
|
||||
public readonly string Theatre = null;
|
||||
public readonly string BasePalette = null;
|
||||
public readonly string Remap = null;
|
||||
public object Create(Actor self) { return new PaletteFromRemap(self, this); }
|
||||
}
|
||||
|
||||
class PaletteFromRemap
|
||||
{
|
||||
public PaletteFromRemap(Actor self, PaletteFromRemapInfo info)
|
||||
{
|
||||
if (info.Theatre == null ||
|
||||
info.Theatre.ToLowerInvariant() == self.World.Map.Theater.ToLowerInvariant())
|
||||
{
|
||||
Log.Write("Loading palette {0} from theatre {1} with remap {2}", info.Name, info.BasePalette, info.Remap);
|
||||
var wr = self.World.WorldRenderer;
|
||||
var pal = wr.GetPalette(info.BasePalette);
|
||||
var newpal = (info.Remap == null) ? pal : new Palette(pal, new PlayerColorRemap(FileSystem.Open(info.Remap)));
|
||||
wr.AddPalette(info.Name, newpal);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ namespace OpenRa.Traits
|
||||
return rs;
|
||||
|
||||
if (self.Owner == self.World.LocalPlayer)
|
||||
return rs.Select(a => a.WithPalette(PaletteType.Shadow));
|
||||
return rs.Select(a => a.WithPalette("shadow"));
|
||||
else
|
||||
return new Renderable[] { };
|
||||
}
|
||||
|
||||
@@ -71,10 +71,10 @@ namespace OpenRa.Traits
|
||||
{
|
||||
public readonly Sprite Sprite;
|
||||
public readonly float2 Pos;
|
||||
public readonly PaletteType Palette;
|
||||
public readonly string Palette;
|
||||
public readonly int ZOffset;
|
||||
|
||||
public Renderable(Sprite sprite, float2 pos, PaletteType palette, int zOffset)
|
||||
public Renderable(Sprite sprite, float2 pos, string palette, int zOffset)
|
||||
{
|
||||
Sprite = sprite;
|
||||
Pos = pos;
|
||||
@@ -82,10 +82,10 @@ namespace OpenRa.Traits
|
||||
ZOffset = zOffset;
|
||||
}
|
||||
|
||||
public Renderable(Sprite sprite, float2 pos, PaletteType palette)
|
||||
public Renderable(Sprite sprite, float2 pos, string palette)
|
||||
: this(sprite, pos, palette, 0) { }
|
||||
|
||||
public Renderable WithPalette(PaletteType newPalette) { return new Renderable(Sprite, Pos, newPalette, ZOffset); }
|
||||
public Renderable WithPalette(string newPalette) { return new Renderable(Sprite, Pos, newPalette, ZOffset); }
|
||||
public Renderable WithZOffset(int newOffset) { return new Renderable(Sprite, Pos, Palette, newOffset); }
|
||||
public Renderable WithPos(float2 newPos) { return new Renderable(Sprite, newPos, Palette, ZOffset); }
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace OpenRa.Traits
|
||||
|
||||
public static Renderable Centered(Actor self, Sprite s, float2 location)
|
||||
{
|
||||
var pal = self.Owner == null ? 0 : self.Owner.Palette;
|
||||
var pal = self.Owner == null ? "player0" : self.Owner.Palette;
|
||||
var loc = location - 0.5f * s.size;
|
||||
return new Renderable(s, loc.Round(), pal);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace OpenRa.Traits
|
||||
{
|
||||
var unit = self.traits.Get<Unit>();
|
||||
|
||||
var shadowSprites = r.Select(a => a.WithPalette(PaletteType.Shadow));
|
||||
var shadowSprites = r.Select(a => a.WithPalette("shadow"));
|
||||
var flyingSprites = (unit.Altitude <= 0) ? r
|
||||
: r.Select(a => a.WithPos(a.Pos - new float2(0, unit.Altitude)).WithZOffset(3));
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRa
|
||||
for (var j = 0; j < 128; j++)
|
||||
for (var i = 0; i < 128; i++)
|
||||
if (world.WorldActor.traits.Get<UnitInfluence>().GetUnitsAt(new int2(i, j)).Any())
|
||||
spriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), 0);
|
||||
spriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), "terrain");
|
||||
}
|
||||
|
||||
public void DrawBuildingGrid( World world, string name, BuildingInfo bi )
|
||||
@@ -51,7 +51,7 @@ namespace OpenRa
|
||||
foreach( var t in Footprint.Tiles( name, bi, topLeft ) )
|
||||
spriteRenderer.DrawSprite( ( isCloseEnough && world.IsCellBuildable( t, bi.WaterBound
|
||||
? UnitMovementType.Float : UnitMovementType.Wheel ) && !world.Map.ContainsResource( t ) )
|
||||
? buildOk : buildBlocked, Game.CellSize * t, 0 );
|
||||
? buildOk : buildBlocked, Game.CellSize * t, "terrain" );
|
||||
|
||||
spriteRenderer.Flush();
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace OpenRa.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image,
|
||||
a.CenterLocation - .5f * anim.Image.size + doorOffset, PaletteType.Gold);
|
||||
a.CenterLocation - .5f * anim.Image.size + doorOffset, "effect");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRa.Mods.RA.Effects
|
||||
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(anim.Image,offset, PaletteType.Gold);
|
||||
yield return new Renderable(anim.Image,offset, "effect");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace OpenRa.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
foreach (var r in a.Render())
|
||||
yield return r.WithPalette(PaletteType.Invuln);
|
||||
yield return r.WithPalette("invuln");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace OpenRa.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
var pos = location - new float2(0, altitude);
|
||||
yield return new Renderable(anim.Image, location - .5f * anim.Image.size, PaletteType.Shadow, 0);
|
||||
yield return new Renderable(anim.Image, location - .5f * anim.Image.size, "shadow", 0);
|
||||
yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, owner.Palette, 2);
|
||||
yield return new Renderable(paraAnim.Image, pos - .5f * paraAnim.Image.size, owner.Palette, 3);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace OpenRa.Mods.RA.Effects
|
||||
public IEnumerable<Renderable> Render()
|
||||
{
|
||||
yield return new Renderable(doors.Image,
|
||||
a.CenterLocation - .5f * doors.Image.size + doorOffset, PaletteType.Gold);
|
||||
a.CenterLocation - .5f * doors.Image.size + doorOffset, "effect");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,75 @@ World:
|
||||
WaterPaletteRotation:
|
||||
BuildingInfluence:
|
||||
UnitInfluence:
|
||||
PaletteFromFile@1:
|
||||
PaletteFromFile@terrain_temperat:
|
||||
Name: terrain
|
||||
Theatre: temperat
|
||||
Filename: temperat_ra.pal
|
||||
PaletteFromFile@player_temperat:
|
||||
Name: player
|
||||
Theatre: temperat
|
||||
Filename: temperat.pal
|
||||
PaletteFromRemap@player0:
|
||||
Name: player0
|
||||
BasePalette: player
|
||||
PaletteFromRemap@player1:
|
||||
Name: player1
|
||||
BasePalette: player
|
||||
Remap: blue.rem
|
||||
PaletteFromRemap@player2:
|
||||
Name: player2
|
||||
BasePalette: player
|
||||
Remap: red.rem
|
||||
PaletteFromRemap@player3:
|
||||
Name: player3
|
||||
BasePalette: player
|
||||
Remap: orange.rem
|
||||
PaletteFromRemap@player4:
|
||||
Name: player4
|
||||
BasePalette: player
|
||||
Remap: teal.rem
|
||||
PaletteFromRemap@player5:
|
||||
Name: player5
|
||||
BasePalette: player
|
||||
Remap: salmon.rem
|
||||
PaletteFromRemap@player6:
|
||||
Name: player6
|
||||
BasePalette: player
|
||||
Remap: green.rem
|
||||
PaletteFromRemap@player7:
|
||||
Name: player7
|
||||
BasePalette: player
|
||||
Remap: gray.rem
|
||||
PaletteFromFile@chrome:
|
||||
Name: chrome
|
||||
Filename: temperat.pal
|
||||
PaletteFromFile@effect:
|
||||
Name: effect
|
||||
Filename: temperat.pal
|
||||
PaletteFromFile@cursor:
|
||||
Name: cursor
|
||||
Filename: temperat.pal
|
||||
PaletteFromRGBA@shadow:
|
||||
Name: shadow
|
||||
R: 0
|
||||
G: 0
|
||||
B: 0
|
||||
A: 140
|
||||
PaletteFromRGBA@highlight:
|
||||
Name: highlight
|
||||
R: 255
|
||||
G: 255
|
||||
B: 255
|
||||
A: 128
|
||||
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:
|
||||
Reference in New Issue
Block a user