Use new mechanism for stances / color picker

This commit is contained in:
Paul Chote
2011-05-22 17:40:32 +12:00
parent 0c9692c0b1
commit d029b1ff6f
2 changed files with 22 additions and 14 deletions

View File

@@ -122,15 +122,20 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
} }
} }
void ShowDropDown(Player p, Widget w) void ShowDropDown(Player p, DropDownButtonWidget dropdown)
{ {
DropDownButtonWidget.ShowDropDown(w, Enum.GetValues(typeof(Stance)).OfType<Stance>(), var stances = Enum.GetValues(typeof(Stance)).OfType<Stance>().ToList();
(s, width) => new LabelWidget Func<Stance, ScrollItemWidget, ScrollItemWidget> setupItem = (s, template) =>
{ {
Bounds = new Rectangle(0, 0, width, 24), var item = ScrollItemWidget.Setup(template,
Text = " {0}".F(s), () => s == world.LocalPlayer.Stances[ p ],
OnMouseUp = mi => { SetStance((ButtonWidget)w, p, s); return true; }, () => SetStance(dropdown, p, s));
});
item.GetWidget<LabelWidget>("LABEL").GetText = () => s.ToString();
return item;
};
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 150, stances, setupItem);
} }
void SetStance(ButtonWidget bw, Player p, Stance ss) void SetStance(ButtonWidget bw, Player p, Stance ss)

View File

@@ -271,7 +271,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
return true; return true;
} }
bool ShowColorDropDown(Session.Slot s, ButtonWidget color) bool ShowColorDropDown(Session.Slot s, DropDownButtonWidget color)
{ {
if (Map.Players[s.MapPlayer].LockColor) if (Map.Players[s.MapPlayer].LockColor)
return false; return false;
@@ -295,11 +295,14 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
rangeSlider.OnChange += _ => UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); rangeSlider.OnChange += _ => UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset());
UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset());
DropDownButtonWidget.ShowDropPanel(color, colorChooser, new List<Widget>() {colorChooser.GetWidget("BUTTON_OK")}, () => { colorChooser.GetWidget<ButtonWidget>("BUTTON_OK").OnClick = () =>
{
UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); UpdateColorPreview(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset());
UpdatePlayerColor(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset()); UpdatePlayerColor(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset());
return true; color.RemovePanel();
}); };
color.AttachPanel(colorChooser);
return true; return true;
} }
@@ -382,7 +385,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
}; };
name.OnLoseFocus = () => name.OnEnterKey(); name.OnLoseFocus = () => name.OnEnterKey();
var color = template.GetWidget<ButtonWidget>("COLOR"); var color = template.GetWidget<DropDownButtonWidget>("COLOR");
color.OnMouseUp = _ => ShowColorDropDown(s, color); color.OnMouseUp = _ => ShowColorDropDown(s, color);
var colorBlock = color.GetWidget<ColorBlockWidget>("COLORBLOCK"); var colorBlock = color.GetWidget<ColorBlockWidget>("COLORBLOCK");