Add GUI integration for PlayerExperience

This commit is contained in:
Oliver Brakmann
2016-06-18 13:44:19 +02:00
parent 3083c8a175
commit 56ae4e846b
8 changed files with 276 additions and 239 deletions

View File

@@ -9,6 +9,7 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Mods.Common.Traits; using OpenRA.Mods.Common.Traits;
@@ -59,58 +60,70 @@ namespace OpenRA.Mods.Common.Widgets.Logic
playerPanel.Bounds.Height += objectiveGroup.Bounds.Height; playerPanel.Bounds.Height += objectiveGroup.Bounds.Height;
} }
var teamTemplate = playerPanel.Get<ScrollItemWidget>("TEAM_TEMPLATE");
var playerTemplate = playerPanel.Get("PLAYER_TEMPLATE"); var playerTemplate = playerPanel.Get("PLAYER_TEMPLATE");
playerPanel.RemoveChildren(); playerPanel.RemoveChildren();
foreach (var p in world.Players.Where(a => !a.NonCombatant)) var teams = world.Players.Where(p => !p.NonCombatant && p.Playable)
.Select(p => new Pair<Player, PlayerStatistics>(p, p.PlayerActor.TraitOrDefault<PlayerStatistics>()))
.OrderByDescending(p => p.Second != null ? p.Second.Experience : 0)
.GroupBy(p => (world.LobbyInfo.ClientWithIndex(p.First.ClientIndex) ?? new Session.Client()).Team)
.OrderByDescending(g => g.Sum(gg => gg.Second != null ? gg.Second.Experience : 0));
foreach (var t in teams)
{ {
var pp = p; if (teams.Count() > 1)
var client = world.LobbyInfo.ClientWithIndex(pp.ClientIndex);
var item = playerTemplate.Clone();
LobbyUtils.SetupClientWidget(item, client, orderManager, client != null && client.Bot == null);
var nameLabel = item.Get<LabelWidget>("NAME");
var nameFont = Game.Renderer.Fonts[nameLabel.Font];
var suffixLength = new CachedTransform<string, int>(s => nameFont.Measure(s).X);
var name = new CachedTransform<Pair<string, int>, string>(c =>
WidgetUtils.TruncateText(c.First, nameLabel.Bounds.Width - c.Second, nameFont));
nameLabel.GetText = () =>
{ {
var suffix = pp.WinState == WinState.Undefined ? "" : " (" + pp.WinState + ")"; var teamHeader = ScrollItemWidget.Setup(teamTemplate, () => true, () => { });
if (client != null && client.State == Session.ClientState.Disconnected) teamHeader.Get<LabelWidget>("TEAM").GetText = () => t.Key == 0 ? "No Team" : "Team {0}".F(t.Key);
suffix = " (Gone)"; var teamRating = teamHeader.Get<LabelWidget>("TEAM_SCORE");
teamRating.GetText = () => t.Sum(gg => gg.Second != null ? gg.Second.Experience : 0).ToString();
var sl = suffixLength.Update(suffix); playerPanel.AddChild(teamHeader);
return name.Update(Pair.New(pp.PlayerName, sl)) + suffix;
};
nameLabel.GetColor = () => pp.Color.RGB;
var flag = item.Get<ImageWidget>("FACTIONFLAG");
flag.GetImageCollection = () => "flags";
if (player == null || player.Stances[pp] == Stance.Ally || player.WinState != WinState.Undefined)
{
flag.GetImageName = () => pp.Faction.InternalName;
item.Get<LabelWidget>("FACTION").GetText = () => pp.Faction.Name;
}
else
{
flag.GetImageName = () => pp.DisplayFaction.InternalName;
item.Get<LabelWidget>("FACTION").GetText = () => pp.DisplayFaction.Name;
} }
var team = item.Get<LabelWidget>("TEAM"); foreach (var p in t.ToList())
var teamNumber = pp.PlayerReference.Playable ? ((client == null) ? 0 : client.Team) : pp.PlayerReference.Team; {
team.GetText = () => (teamNumber == 0) ? "-" : teamNumber.ToString(); var pp = p.First;
playerPanel.AddChild(item); var client = world.LobbyInfo.ClientWithIndex(pp.ClientIndex);
var item = playerTemplate.Clone();
LobbyUtils.SetupClientWidget(item, client, orderManager, client != null && client.Bot == null);
var nameLabel = item.Get<LabelWidget>("NAME");
var nameFont = Game.Renderer.Fonts[nameLabel.Font];
var stats = pp.PlayerActor.TraitOrDefault<PlayerStatistics>(); var suffixLength = new CachedTransform<string, int>(s => nameFont.Measure(s).X);
if (stats == null) var name = new CachedTransform<Pair<string, int>, string>(c =>
break; WidgetUtils.TruncateText(c.First, nameLabel.Bounds.Width - c.Second, nameFont));
var totalKills = stats.UnitsKilled + stats.BuildingsKilled;
var totalDeaths = stats.UnitsDead + stats.BuildingsDead; nameLabel.GetText = () =>
item.Get<LabelWidget>("KILLS").GetText = () => totalKills.ToString(); {
item.Get<LabelWidget>("DEATHS").GetText = () => totalDeaths.ToString(); var suffix = pp.WinState == WinState.Undefined ? "" : " (" + pp.WinState + ")";
if (client != null && client.State == Session.ClientState.Disconnected)
suffix = " (Gone)";
var sl = suffixLength.Update(suffix);
return name.Update(Pair.New(pp.PlayerName, sl)) + suffix;
};
nameLabel.GetColor = () => pp.Color.RGB;
var flag = item.Get<ImageWidget>("FACTIONFLAG");
flag.GetImageCollection = () => "flags";
if (player == null || player.Stances[pp] == Stance.Ally || player.WinState != WinState.Undefined)
{
flag.GetImageName = () => pp.Faction.InternalName;
item.Get<LabelWidget>("FACTION").GetText = () => pp.Faction.Name;
}
else
{
flag.GetImageName = () => pp.DisplayFaction.InternalName;
item.Get<LabelWidget>("FACTION").GetText = () => pp.DisplayFaction.Name;
}
var experience = p.Second != null ? p.Second.Experience : 0;
item.Get<LabelWidget>("SCORE").GetText = () => experience.ToString();
playerPanel.AddChild(item);
}
} }
} }
} }

View File

@@ -273,6 +273,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
template.Get<LabelWidget>("DEATHS").GetText = () => (stats.UnitsDead + stats.BuildingsDead).ToString(); template.Get<LabelWidget>("DEATHS").GetText = () => (stats.UnitsDead + stats.BuildingsDead).ToString();
template.Get<LabelWidget>("ASSETS_DESTROYED").GetText = () => "$" + stats.KillsCost; template.Get<LabelWidget>("ASSETS_DESTROYED").GetText = () => "$" + stats.KillsCost;
template.Get<LabelWidget>("ASSETS_LOST").GetText = () => "$" + stats.DeathsCost; template.Get<LabelWidget>("ASSETS_LOST").GetText = () => "$" + stats.DeathsCost;
template.Get<LabelWidget>("EXPERIENCE").GetText = () => stats.Experience.ToString();
template.Get<LabelWidget>("ACTIONS_MIN").GetText = () => AverageOrdersPerMinute(stats.OrderCount); template.Get<LabelWidget>("ACTIONS_MIN").GetText = () => AverageOrdersPerMinute(stats.OrderCount);
return template; return template;

View File

@@ -35,38 +35,23 @@ Container@SKIRMISH_STATS:
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Text: Player Text: Player
Font: Bold Font: Bold
Label@FACTION: Label@FACTION:
X: 150 X: 230
Width: 80 Width: 120
Height: 25 Height: 25
Text: Faction Text: Faction
Font: Bold Font: Bold
Align: Center Label@SCORE:
Label@STANCE: X: 360
X: 240 Width: 75
Width: 70
Height: 25 Height: 25
Text: Team Text: Score
Font: Bold Font: Bold
Align: Center Align: Right
Label@KILLS:
X: 310
Width: 70
Height: 25
Text: Kills
Font: Bold
Align: Center
Label@DEATHS:
X: 380
Width: 70
Height: 25
Text: Deaths
Font: Bold
Align: Center
ScrollPanel@PLAYER_LIST: ScrollPanel@PLAYER_LIST:
X: 15 X: 15
Y: 105 Y: 105
@@ -75,43 +60,51 @@ Container@SKIRMISH_STATS:
TopBottomSpacing: 5 TopBottomSpacing: 5
ItemSpacing: 5 ItemSpacing: 5
Children: Children:
ScrollItem@TEAM_TEMPLATE:
Width: PARENT_RIGHT - 27
Height: 20
X: 2
Visible: false
Children:
Label@TEAM:
X: 2
Y: 0-2
Width: 160
Height: 20
Font: Bold
Label@TEAM_SCORE:
X: 360
Y: 0-2
Width: 75
Height: 20
Font: Bold
Align: Right
Container@PLAYER_TEMPLATE: Container@PLAYER_TEMPLATE:
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 25 Height: 25
X: 2 X: 2
Y: 0
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
ClientTooltipRegion@CLIENT_REGION: ClientTooltipRegion@CLIENT_REGION:
TooltipContainer: TOOLTIP_CONTAINER TooltipContainer: TOOLTIP_CONTAINER
Template: INGAME_CLIENT_TOOLTIP Template: INGAME_CLIENT_TOOLTIP
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Image@FACTIONFLAG: Image@FACTIONFLAG:
X: 159 X: 230
Y: 6 Y: 6
Width: 32 Width: 32
Height: 16 Height: 16
Label@FACTION: Label@FACTION:
X: 195 X: 264
Width: 40 Width: 86
Height: 25 Height: 25
Label@TEAM: Label@SCORE:
X: 240 X: 360
Width: 70 Width: 75
Height: 25 Height: 25
Align: Center Align: Right
Label@KILLS:
X: 310
Width: 70
Height: 25
Align: Center
Label@DEATHS:
X: 380
Width: 70
Height: 25
Align: Center

View File

@@ -2,7 +2,7 @@ Background@INGAME_OBSERVERSTATS_BG:
Logic: ObserverStatsLogic Logic: ObserverStatsLogic
X: (WINDOW_RIGHT - WIDTH) / 2 X: (WINDOW_RIGHT - WIDTH) / 2
Y: (WINDOW_BOTTOM - HEIGHT) / 2 Y: (WINDOW_BOTTOM - HEIGHT) / 2
Width: 940 Width: 1005
Height: 500 Height: 500
Children: Children:
Background@BACKGROUND: Background@BACKGROUND:
@@ -59,41 +59,49 @@ Background@INGAME_OBSERVERSTATS_BG:
Font: Bold Font: Bold
Text: Power Text: Power
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 495 X: 475
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Kills Text: Kills
Align: Right Align: Right
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 555 X: 535
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Deaths Text: Deaths
Align: Right Align: Right
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 625 X: 595
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Destroyed Text: Destroyed
Align: Right Align: Right
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 685 X: 675
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Lost Text: Lost
Align: Right Align: Right
Label@ACTIONS_MIN_HEADER: Label@EXPERIENCE_HEADER:
X: 805 X: 755
Y: 40 Y: 40
Width: 40 Width: 94
Height: 25
Font: Bold
Text: Experience
Align: Right
Label@ACTIONS_MIN_HEADER:
X: 850
Y: 40
Width: 90
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Actions/min Text: Actions/min
@@ -316,33 +324,39 @@ Background@INGAME_OBSERVERSTATS_BG:
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Label@KILLS: Label@KILLS:
X: 475 X: 455
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@DEATHS: Label@DEATHS:
X: 535 X: 515
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 595 X: 575
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 660 X: 655
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM
Align: Right
Label@EXPERIENCE:
X: 735
Y: 0
Width: 95
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 775 X: 830
Y: 0 Y: 0
Width: 40 Width: 90
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
ScrollItem@ECONOMY_PLAYER_TEMPLATE: ScrollItem@ECONOMY_PLAYER_TEMPLATE:

View File

@@ -35,38 +35,23 @@ Container@SKIRMISH_STATS:
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Text: Player Text: Player
Font: Bold Font: Bold
Label@FACTION: Label@FACTION:
X: 150 X: 230
Width: 80 Width: 120
Height: 25 Height: 25
Text: Faction Text: Faction
Font: Bold Font: Bold
Align: Center Label@SCORE:
Label@STANCE: X: 360
X: 280 Width: 75
Width: 50
Height: 25 Height: 25
Text: Team Text: Score
Font: Bold Font: Bold
Align: Center Align: Right
Label@KILLS:
X: 330
Width: 60
Height: 25
Text: Kills
Font: Bold
Align: Center
Label@DEATHS:
X: 390
Width: 60
Height: 25
Text: Deaths
Font: Bold
Align: Center
ScrollPanel@PLAYER_LIST: ScrollPanel@PLAYER_LIST:
X: 20 X: 20
Y: 105 Y: 105
@@ -75,43 +60,52 @@ Container@SKIRMISH_STATS:
TopBottomSpacing: 5 TopBottomSpacing: 5
ItemSpacing: 5 ItemSpacing: 5
Children: Children:
ScrollItem@TEAM_TEMPLATE:
BaseName: scrollheader
Width: PARENT_RIGHT - 27
Height: 20
X: 2
Visible: false
Children:
Label@TEAM:
X: 2
Y: 0-2
Width: 160
Height: 20
Font: Bold
Label@TEAM_SCORE:
X: 360
Y: 0-2
Width: 75
Height: 20
Font: Bold
Align: Right
Container@PLAYER_TEMPLATE: Container@PLAYER_TEMPLATE:
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 25 Height: 25
X: 2 X: 2
Y: 0
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
ClientTooltipRegion@CLIENT_REGION: ClientTooltipRegion@CLIENT_REGION:
TooltipContainer: TOOLTIP_CONTAINER TooltipContainer: TOOLTIP_CONTAINER
Template: INGAME_CLIENT_TOOLTIP Template: INGAME_CLIENT_TOOLTIP
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Image@FACTIONFLAG: Image@FACTIONFLAG:
X: 159 X: 230
Y: 3 Y: 6
Width: 32 Width: 32
Height: 16 Height: 16
Label@FACTION: Label@FACTION:
X: 195 X: 264
Width: 85 Width: 86
Height: 25 Height: 25
Label@TEAM: Label@SCORE:
X: 280 X: 360
Width: 50 Width: 75
Height: 25 Height: 25
Align: Center Align: Right
Label@KILLS:
X: 330
Width: 60
Height: 25
Align: Center
Label@DEATHS:
X: 390
Width: 60
Height: 25
Align: Center

View File

@@ -35,38 +35,23 @@ Container@SKIRMISH_STATS:
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Text: Player Text: Player
Font: Bold Font: Bold
Label@FACTION: Label@FACTION:
X: 150 X: 230
Width: 80 Width: 120
Height: 25 Height: 25
Text: Faction Text: Faction
Font: Bold Font: Bold
Align: Center Label@SCORE:
Label@STANCE: X: 360
X: 260 Width: 75
Width: 50
Height: 25 Height: 25
Text: Team Text: Score
Font: Bold Font: Bold
Align: Center Align: Right
Label@KILLS:
X: 310
Width: 70
Height: 25
Text: Kills
Font: Bold
Align: Center
Label@DEATHS:
X: 380
Width: 70
Height: 25
Text: Deaths
Font: Bold
Align: Center
ScrollPanel@PLAYER_LIST: ScrollPanel@PLAYER_LIST:
X: 20 X: 20
Y: 105 Y: 105
@@ -75,43 +60,52 @@ Container@SKIRMISH_STATS:
TopBottomSpacing: 5 TopBottomSpacing: 5
ItemSpacing: 5 ItemSpacing: 5
Children: Children:
ScrollItem@TEAM_TEMPLATE:
BaseName: scrollheader
Width: PARENT_RIGHT - 27
Height: 20
X: 2
Visible: false
Children:
Label@TEAM:
X: 2
Y: 0-2
Width: 160
Height: 20
Font: Bold
Label@TEAM_SCORE:
X: 360
Y: 0-2
Width: 75
Height: 20
Font: Bold
Align: Right
Container@PLAYER_TEMPLATE: Container@PLAYER_TEMPLATE:
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 25 Height: 25
X: 2 X: 2
Y: 0
Children: Children:
Label@NAME: Label@NAME:
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
ClientTooltipRegion@CLIENT_REGION: ClientTooltipRegion@CLIENT_REGION:
TooltipContainer: TOOLTIP_CONTAINER TooltipContainer: TOOLTIP_CONTAINER
Template: INGAME_CLIENT_TOOLTIP Template: INGAME_CLIENT_TOOLTIP
X: 10 X: 10
Width: 150 Width: 210
Height: 25 Height: 25
Image@FACTIONFLAG: Image@FACTIONFLAG:
X: 159 X: 230
Y: 6 Y: 6
Width: 32 Width: 32
Height: 16 Height: 16
Label@FACTION: Label@FACTION:
X: 195 X: 264
Width: 65 Width: 86
Height: 25 Height: 25
Label@TEAM: Label@SCORE:
X: 260 X: 360
Width: 50 Width: 75
Height: 25 Height: 25
Align: Center Align: Right
Label@KILLS:
X: 310
Width: 70
Height: 25
Align: Center
Label@DEATHS:
X: 380
Width: 70
Height: 25
Align: Center

View File

@@ -2,7 +2,7 @@ Background@INGAME_OBSERVERSTATS_BG:
Logic: ObserverStatsLogic Logic: ObserverStatsLogic
X: 25 X: 25
Y: 50 Y: 50
Width: 950 Width: 1025
Height: 500 Height: 500
Background: dialog Background: dialog
Children: Children:
@@ -54,30 +54,30 @@ Background@INGAME_OBSERVERSTATS_BG:
Label@POWER_HEADER: Label@POWER_HEADER:
X: 425 X: 425
Y: 40 Y: 40
Width: 80 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Power Text: Power
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 505 X: 485
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Kills Text: Kills
Align: Right Align: Right
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 565 X: 545
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Deaths Text: Deaths
Align: Right Align: Right
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 625 X: 605
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Destroyed Text: Destroyed
@@ -85,15 +85,23 @@ Background@INGAME_OBSERVERSTATS_BG:
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 685 X: 685
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Lost Text: Lost
Align: Right Align: Right
Label@ACTIONS_MIN_HEADER: Label@EXPERIENCE_HEADER:
X: 805 X: 765
Y: 40 Y: 40
Width: 40 Width: 95
Height: 25
Font: Bold
Text: Experience
Align: Right
Label@ACTIONS_MIN_HEADER:
X: 860
Y: 40
Width: 90
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Actions/min Text: Actions/min
@@ -316,33 +324,39 @@ Background@INGAME_OBSERVERSTATS_BG:
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Label@KILLS: Label@KILLS:
X: 475 X: 455
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@DEATHS: Label@DEATHS:
X: 535 X: 515
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 595 X: 575
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 660 X: 655
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM
Align: Right
Label@EXPERIENCE:
X: 735
Y: 0
Width: 95
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 775 X: 830
Y: 0 Y: 0
Width: 40 Width: 90
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
ScrollItem@ECONOMY_PLAYER_TEMPLATE: ScrollItem@ECONOMY_PLAYER_TEMPLATE:

View File

@@ -2,7 +2,7 @@ Background@INGAME_OBSERVERSTATS_BG:
Logic: ObserverStatsLogic Logic: ObserverStatsLogic
X: 25 X: 25
Y: 50 Y: 50
Width: 950 Width: 1025
Height: 500 Height: 500
Background: dialog Background: dialog
Children: Children:
@@ -54,30 +54,30 @@ Background@INGAME_OBSERVERSTATS_BG:
Label@POWER_HEADER: Label@POWER_HEADER:
X: 425 X: 425
Y: 40 Y: 40
Width: 80 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Power Text: Power
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 505 X: 485
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Kills Text: Kills
Align: Right Align: Right
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 565 X: 545
Y: 40 Y: 40
Width: 40 Width: 60
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Deaths Text: Deaths
Align: Right Align: Right
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 625 X: 605
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Destroyed Text: Destroyed
@@ -85,15 +85,23 @@ Background@INGAME_OBSERVERSTATS_BG:
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 685 X: 685
Y: 40 Y: 40
Width: 60 Width: 80
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Lost Text: Lost
Align: Right Align: Right
Label@ACTIONS_MIN_HEADER: Label@EXPERIENCE_HEADER:
X: 805 X: 765
Y: 40 Y: 40
Width: 40 Width: 95
Height: 25
Font: Bold
Text: Experience
Align: Right
Label@ACTIONS_MIN_HEADER:
X: 860
Y: 40
Width: 90
Height: 25 Height: 25
Font: Bold Font: Bold
Text: Actions/min Text: Actions/min
@@ -316,33 +324,39 @@ Background@INGAME_OBSERVERSTATS_BG:
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Label@KILLS: Label@KILLS:
X: 475 X: 455
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@DEATHS: Label@DEATHS:
X: 535 X: 515
Y: 0 Y: 0
Width: 40 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 595 X: 575
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 660 X: 655
Y: 0 Y: 0
Width: 60 Width: 80
Height: PARENT_BOTTOM
Align: Right
Label@EXPERIENCE:
X: 735
Y: 0
Width: 95
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 775 X: 830
Y: 0 Y: 0
Width: 40 Width: 90
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
ScrollItem@ECONOMY_PLAYER_TEMPLATE: ScrollItem@ECONOMY_PLAYER_TEMPLATE: