public UIPieMenu(List<VMPieMenuInteraction> pie, VMEntity obj, VMEntity caller, UILotControl parent)
{
if (FSOEnvironment.UIZoomFactor>1.33f) ScaleX = ScaleY = FSOEnvironment.UIZoomFactor*0.75f;
TrueScale = ScaleX *FSOEnvironment.DPIScaleFactor;
m_PieButtons = new List<UIButton>();
this.m_Obj = obj;
this.m_Caller = caller;
this.m_Parent = parent;
this.ButtonStyle = new TextStyle
{
Font = GameFacade.MainFont,
Size = 12,
Color = new Color(0xA5, 0xC3, 0xD6),
SelectedColor = new Color(0x00, 0xFF, 0xFF),
CursorColor = new Color(255, 255, 255)
};
m_Bg = new UIImage(TextureGenerator.GetPieBG(GameFacade.GraphicsDevice));
m_Bg.SetSize(0, 0); //is scaled up later
this.AddAt(0, m_Bg);
m_PieTree = new UIPieMenuItem()
{
Category = true
};
for (int i = 0; i < pie.Count; i++)
{
string[] depth = (pie[i].Name == null)?new string[] { "???" } :pie[i].Name.Split('/');
var category = m_PieTree; //set category to root
for (int j = 0; j < depth.Length-1; j++) //iterate through categories
{
if (category.Children.ContainsKey(depth[j]))
{
category = category.Children[depth[j]];
}
else
{
var newCat = new UIPieMenuItem()
{
Category = true,
Name = depth[j],
Parent = category
};
category.Children.Add(depth[j], newCat);
category = newCat;
}
}
//we are in the category, put the interaction in here;
var item = new UIPieMenuItem()
{
Category = false,
Name = depth[depth.Length - 1],
ID = pie[i].ID,
Param0 = pie[i].Param0
};
if (!category.Children.ContainsKey(item.Name)) category.Children.Add(item.Name, item);
}
m_CurrentItem = m_PieTree;
m_PieButtons = new List<UIButton>();
RenderMenu();
VMAvatar Avatar = (VMAvatar)caller;
m_Head = new SimAvatar(Avatar.Avatar); //talk about confusing...
m_Head.StripAllButHead();
initSimHead();
}