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