public override void HandleEvent(bool DownStream, Backend.Events eventID, params object[] data)
{
if (DownStream)
{
foreach (UIElement child in _children)
{
switch (eventID)
{
default:
child.HandleEvent(true, eventID, data);
break;
}
}
}
else
{
switch (eventID)
{
case Backend.Events.ButtonPressed:
switch ((Backend.Buttons)data[0])
{
case Backend.Buttons.Close:
_parent.HandleEvent(true, Backend.Events.ContinueGame, null);
break;
case Backend.Buttons.Credits:
_parent.HandleEvent(true, Backend.Events.About, null);
break;
case Backend.Buttons.LAN:
_parent.HandleEvent(true, Backend.Events.Network, null);
break;
case Backend.Buttons.Load:
_parent.HandleEvent(true, Backend.Events.LoadFromCheckPoint, null);
break;
case Backend.Buttons.NewMap:
_parent.HandleEvent(true, Backend.Events.NewMap, null);
break;
case Backend.Buttons.Quit:
_parent.HandleEvent(true, Backend.Events.EndGame, null);
break;
case Backend.Buttons.Reset:
_parent.HandleEvent(true, Backend.Events.ResetGame, null);
break;
case Backend.Buttons.Restart:
_parent.HandleEvent(true, Backend.Events.ResetGame, null);
break;
default:
_parent.HandleEvent(true, eventID, data);
break;
}
break;
case Backend.Events.RequestFocus:
_children[_focusID].focus = false;
((UIElement)data[0]).focus = true;
for (int i = 0; i < _children.Count; ++i)
{
if (_children[i] == data[0]) { _focusID = i; break; }
}
break;
default:
_parent.HandleEvent(true, eventID, data);
break;
}
}
}