Update editor sidebar when a player is removed.

This commit is contained in:
Noam
2018-10-04 00:12:33 +03:00
committed by abcdefg30
parent 52900f8112
commit c71f97e2c6
2 changed files with 21 additions and 9 deletions

View File

@@ -172,7 +172,10 @@ namespace OpenRA.Mods.Common.Traits
var index = int.Parse(name.Substring(5)); var index = int.Parse(name.Substring(5));
if (index >= newCount) if (index >= newCount)
{
Players.Players.Remove(name); Players.Players.Remove(name);
OnPlayerRemoved();
}
} }
for (var index = 0; index < newCount; index++) for (var index = 0; index < newCount; index++)
@@ -249,6 +252,8 @@ namespace OpenRA.Mods.Common.Traits
return screenMap.At(worldPx); return screenMap.At(worldPx);
} }
public Action OnPlayerRemoved = () => { };
string NextActorName() string NextActorName()
{ {
var id = previews.Count(); var id = previews.Count();

View File

@@ -72,15 +72,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
selectedOwner = editorLayer.Players.Players.Values.First(); selectedOwner = editorLayer.Players.Players.Values.First();
Func<PlayerReference, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) => Func<PlayerReference, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) =>
{ {
var item = ScrollItemWidget.Setup(template, () => selectedOwner == option, () => var item = ScrollItemWidget.Setup(template, () => selectedOwner == option, () => SelectOwner(option));
{
selectedOwner = option;
ownersDropDown.Text = selectedOwner.Name;
ownersDropDown.TextColor = selectedOwner.Color.RGB;
InitializeActorPreviews();
});
item.Get<LabelWidget>("LABEL").GetText = () => option.Name; item.Get<LabelWidget>("LABEL").GetText = () => option.Name;
item.GetColor = () => option.Color.RGB; item.GetColor = () => option.Color.RGB;
@@ -88,6 +80,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return item; return item;
}; };
editorLayer.OnPlayerRemoved = () =>
{
if (editorLayer.Players.Players.Values.Any(p => p.Name == selectedOwner.Name))
return;
SelectOwner(editorLayer.Players.Players.Values.First());
};
ownersDropDown.OnClick = () => ownersDropDown.OnClick = () =>
{ {
var owners = editorLayer.Players.Players.Values.OrderBy(p => p.Name); var owners = editorLayer.Players.Players.Values.OrderBy(p => p.Name);
@@ -202,6 +201,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
InitializeActorPreviews(); InitializeActorPreviews();
} }
void SelectOwner(PlayerReference option)
{
selectedOwner = option;
ownersDropDown.Text = option.Name;
ownersDropDown.TextColor = option.Color.RGB;
InitializeActorPreviews();
}
Widget CreateCategoriesPanel() Widget CreateCategoriesPanel()
{ {
var categoriesPanel = Ui.LoadWidget("ACTOR_CATEGORY_FILTER_PANEL", null, new WidgetArgs()); var categoriesPanel = Ui.LoadWidget("ACTOR_CATEGORY_FILTER_PANEL", null, new WidgetArgs());