Fix most of the player color regressions
This commit is contained in:
@@ -58,13 +58,16 @@ namespace OpenRA.Server
|
|||||||
throw new InvalidOperationException("Already got 8 players");
|
throw new InvalidOperationException("Already got 8 players");
|
||||||
}
|
}
|
||||||
|
|
||||||
static string ChooseFreePalette()
|
static int ChooseFreePalette()
|
||||||
{
|
{
|
||||||
// TODO: FIX
|
// TODO: Query the list of palettes from somewhere, and pick one
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
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 "player"+i;
|
return "player"+i;
|
||||||
|
*/
|
||||||
throw new InvalidOperationException("No free palettes");
|
throw new InvalidOperationException("No free palettes");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +89,7 @@ namespace OpenRA.Server
|
|||||||
new Session.Client()
|
new Session.Client()
|
||||||
{
|
{
|
||||||
Index = newConn.PlayerIndex,
|
Index = newConn.PlayerIndex,
|
||||||
Palette = ChooseFreePalette(),
|
PaletteIndex = ChooseFreePalette(),
|
||||||
Name = "Player {0}".F(1 + newConn.PlayerIndex),
|
Name = "Player {0}".F(1 + newConn.PlayerIndex),
|
||||||
Race = 1,
|
Race = 1,
|
||||||
State = Session.ClientState.NotReady
|
State = Session.ClientState.NotReady
|
||||||
@@ -255,15 +258,14 @@ namespace OpenRA.Server
|
|||||||
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.PaletteIndex == pali ))
|
||||||
if (lobbyInfo.Clients.Where( c => c != GetClient(conn) ).Any( c => c.Palette == pal ))
|
|
||||||
{
|
{
|
||||||
SendChatTo( conn, "You can't be the same color as another player" );
|
SendChatTo( conn, "You can't be the same color as another player" );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetClient(conn).Palette = pal;
|
GetClient(conn).PaletteIndex = pali;
|
||||||
SyncLobbyInfo();
|
SyncLobbyInfo();
|
||||||
return true;
|
return true;
|
||||||
}},
|
}},
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace OpenRa.FileFormats
|
|||||||
public class Client
|
public class Client
|
||||||
{
|
{
|
||||||
public int Index;
|
public int Index;
|
||||||
public string Palette;
|
public int PaletteIndex;
|
||||||
public int Race;
|
public int Race;
|
||||||
// public int SpawnPoint;
|
// public int SpawnPoint;
|
||||||
public string Name;
|
public string Name;
|
||||||
|
|||||||
@@ -350,18 +350,17 @@ namespace OpenRa
|
|||||||
AddButton(r, _ => { });
|
AddButton(r, _ => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PaletteAvailable(string palette) { return Game.LobbyInfo.Clients.All(c => c.Palette != palette); }
|
bool PaletteAvailable(int index) { return Game.LobbyInfo.Clients.All(c => c.PaletteIndex != index); }
|
||||||
|
|
||||||
void CyclePalette(bool left)
|
void CyclePalette(bool left)
|
||||||
{
|
{
|
||||||
var d = left ? 1 : 7;
|
var d = left ? +1 : Player.PlayerColors.Count() - 1;
|
||||||
// TODO: FIX
|
|
||||||
var newpalette = 1;//((int)Game.world.LocalPlayer.Palette + d) % 8;
|
var newIndex = ((int)Game.world.LocalPlayer.PaletteIndex + d) % Player.PlayerColors.Count();
|
||||||
//while (!PaletteAvailable(newpalette) && newpalette != (int)Game.world.LocalPlayer.Palette)
|
while (!PaletteAvailable(newIndex) && newIndex != (int)Game.world.LocalPlayer.PaletteIndex)
|
||||||
// newpalette = (newpalette + d) % 8;
|
newIndex = (newIndex + d) % Player.PlayerColors.Count();
|
||||||
|
|
||||||
Game.IssueOrder(
|
Game.IssueOrder(
|
||||||
Order.Chat("/pal " + newpalette));
|
Order.Chat("/pal " + newIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CycleRace(bool left)
|
void CycleRace(bool left)
|
||||||
@@ -446,8 +445,9 @@ namespace OpenRa
|
|||||||
DrawDialogBackground(paletteRect, panelSprites, false);
|
DrawDialogBackground(paletteRect, panelSprites, false);
|
||||||
AddButton(paletteRect, CyclePalette);
|
AddButton(paletteRect, CyclePalette);
|
||||||
|
|
||||||
|
// TODO: Render using the System.Drawing.Color (Player.PlayerColors[client.PaletteIndex].c)
|
||||||
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
||||||
client.Palette);
|
Player.PlayerColors[client.PaletteIndex].a);
|
||||||
|
|
||||||
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);
|
||||||
@@ -462,9 +462,9 @@ namespace OpenRa
|
|||||||
|
|
||||||
renderer.DrawText(client.Name, new int2(r.Left + 40, y), Color.White);
|
renderer.DrawText(client.Name, new int2(r.Left + 40, y), Color.White);
|
||||||
|
|
||||||
|
// TODO: Render using Player.PlayerColors[client.PaletteIndex].c
|
||||||
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
shpRenderer.DrawSprite(colorBlock, new float2(paletteRect.Left + 4, paletteRect.Top + 4),
|
||||||
client.Palette);
|
Player.PlayerColors[client.PaletteIndex].a);
|
||||||
|
|
||||||
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);
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ namespace OpenRa.Graphics
|
|||||||
Log.Write("Created worldrenderer");
|
Log.Write("Created worldrenderer");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement
|
|
||||||
public int GetPaletteIndex(string name)
|
public int GetPaletteIndex(string name)
|
||||||
{
|
{
|
||||||
return palette.GetPaletteIndex(name);
|
return palette.GetPaletteIndex(name);
|
||||||
@@ -43,7 +42,6 @@ namespace OpenRa.Graphics
|
|||||||
return palette.GetPalette(name);
|
return palette.GetPalette(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void AddPalette(string name, Palette pal)
|
public void AddPalette(string name, Palette pal)
|
||||||
{
|
{
|
||||||
palette.AddPalette(name, pal);
|
palette.AddPalette(name, pal);
|
||||||
|
|||||||
@@ -222,6 +222,7 @@
|
|||||||
<Compile Include="Traits\PaletteFromRGBA.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\PlayerColorPalette.cs" />
|
||||||
<Compile Include="Traits\ShroudPalette.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" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace OpenRa
|
|||||||
public class Player
|
public class Player
|
||||||
{
|
{
|
||||||
public Actor PlayerActor;
|
public Actor PlayerActor;
|
||||||
public string Palette;
|
public int PaletteIndex;
|
||||||
public int Kills;
|
public int Kills;
|
||||||
public string PlayerName;
|
public string PlayerName;
|
||||||
public string InternalName;
|
public string InternalName;
|
||||||
@@ -28,18 +28,23 @@ namespace OpenRa
|
|||||||
public int PowerDrained = 0;
|
public int PowerDrained = 0;
|
||||||
|
|
||||||
public World World { get { return PlayerActor.World; } }
|
public World World { get { return PlayerActor.World; } }
|
||||||
|
|
||||||
|
public static List<Tuple<string, string, Color>> PlayerColors = new List<Tuple<string, string, Color>>();
|
||||||
|
public static void RegisterPlayerColor(string palette, string name, Color c)
|
||||||
|
{
|
||||||
|
PlayerColors.Add(new Tuple<string, string, Color>(palette, name, c));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color Color
|
||||||
|
{
|
||||||
|
get { return PlayerColors[PaletteIndex].c; }
|
||||||
|
}
|
||||||
|
|
||||||
public Color Color;
|
public string Palette
|
||||||
/*
|
{
|
||||||
Color.FromArgb(228, 200, 112),
|
get { return PlayerColors[PaletteIndex].a; }
|
||||||
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 )
|
||||||
@@ -49,7 +54,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 ? "player"+client.Palette : "player"+index;
|
this.PaletteIndex = client != null ? client.PaletteIndex : 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;
|
||||||
}
|
}
|
||||||
@@ -172,10 +177,10 @@ namespace OpenRa
|
|||||||
Race = (Race)client.Race;
|
Race = (Race)client.Race;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Palette != client.Palette)
|
if (PaletteIndex != client.PaletteIndex)
|
||||||
{
|
{
|
||||||
Game.chat.AddLine(this, "has changed color to {0}".F(client.Palette));
|
PaletteIndex = client.PaletteIndex;
|
||||||
Palette = client.Palette;
|
Game.chat.AddLine(this, "has changed color to {0}".F(PlayerColors[client.PaletteIndex].b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,37 +21,53 @@ World:
|
|||||||
Name: player
|
Name: player
|
||||||
Theatre: temperat
|
Theatre: temperat
|
||||||
Filename: temperat.pal
|
Filename: temperat.pal
|
||||||
PaletteFromRemap@player0:
|
PlayerColorPalette@player0:
|
||||||
Name: player0
|
Name: player0
|
||||||
|
DisplayName: Gold
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
PaletteFromRemap@player1:
|
DisplayColor: 228, 200, 112
|
||||||
|
PlayerColorPalette@player1:
|
||||||
Name: player1
|
Name: player1
|
||||||
|
DisplayName: Blue
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
Remap: blue.rem
|
Remap: blue.rem
|
||||||
PaletteFromRemap@player2:
|
DisplayColor: 56, 72, 125
|
||||||
|
PlayerColorPalette@player2:
|
||||||
Name: player2
|
Name: player2
|
||||||
|
DisplayName: Red
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
Remap: red.rem
|
Remap: red.rem
|
||||||
PaletteFromRemap@player3:
|
DisplayColor: 238, 0, 0
|
||||||
|
PlayerColorPalette@player3:
|
||||||
Name: player3
|
Name: player3
|
||||||
|
DisplayName: Orange
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
Remap: orange.rem
|
Remap: orange.rem
|
||||||
PaletteFromRemap@player4:
|
DisplayColor: 198,97,0
|
||||||
|
PlayerColorPalette@player4:
|
||||||
Name: player4
|
Name: player4
|
||||||
|
DisplayName: Teal
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
Remap: teal.rem
|
Remap: teal.rem
|
||||||
PaletteFromRemap@player5:
|
DisplayColor: 28,109,97
|
||||||
|
PlayerColorPalette@player5:
|
||||||
Name: player5
|
Name: player5
|
||||||
|
DisplayName: Salmon
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
Remap: salmon.rem
|
Remap: salmon.rem
|
||||||
# PaletteFromRemap@player6:
|
DisplayColor: 153,76,53
|
||||||
|
# PlayerColorPalette@player6:
|
||||||
# Name: player6
|
# Name: player6
|
||||||
|
# DisplayName: Green
|
||||||
# BasePalette: player
|
# BasePalette: player
|
||||||
# Remap: green.rem
|
# Remap: green.rem
|
||||||
# PaletteFromRemap@player7:
|
# DisplayColor: 76,101,60
|
||||||
|
# PlayerColorPalette@player7:
|
||||||
# Name: player7
|
# Name: player7
|
||||||
|
# DisplayName: Gray
|
||||||
# BasePalette: player
|
# BasePalette: player
|
||||||
# Remap: gray.rem
|
# Remap: gray.rem
|
||||||
|
# DisplayColor: 133,113,101
|
||||||
PaletteFromFile@chrome:
|
PaletteFromFile@chrome:
|
||||||
Name: chrome
|
Name: chrome
|
||||||
Filename: temperat.pal
|
Filename: temperat.pal
|
||||||
|
|||||||
Reference in New Issue
Block a user