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>(),
(s, width) => new LabelWidget
{
Bounds = new Rectangle(0, 0, width, 24),
Text = " {0}".F(s),
OnMouseUp = mi => { SetStance((ButtonWidget)w, p, s); return true; },
});
var stances = Enum.GetValues(typeof(Stance)).OfType<Stance>().ToList();
Func<Stance, ScrollItemWidget, ScrollItemWidget> setupItem = (s, template) =>
{
var item = ScrollItemWidget.Setup(template,
() => s == world.LocalPlayer.Stances[ p ],
() => 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)

View File

@@ -271,7 +271,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
return true;
}
bool ShowColorDropDown(Session.Slot s, ButtonWidget color)
bool ShowColorDropDown(Session.Slot s, DropDownButtonWidget color)
{
if (Map.Players[s.MapPlayer].LockColor)
return false;
@@ -294,12 +294,15 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
lumSlider.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());
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());
UpdatePlayerColor(hueSlider.GetOffset(), satSlider.GetOffset(), lumSlider.GetOffset(), rangeSlider.GetOffset());
return true;
});
color.RemovePanel();
};
color.AttachPanel(colorChooser);
return true;
}
@@ -382,7 +385,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
};
name.OnLoseFocus = () => name.OnEnterKey();
var color = template.GetWidget<ButtonWidget>("COLOR");
var color = template.GetWidget<DropDownButtonWidget>("COLOR");
color.OnMouseUp = _ => ShowColorDropDown(s, color);
var colorBlock = color.GetWidget<ColorBlockWidget>("COLORBLOCK");