/// <summary> /// Responds to user input, accepting or cancelling the message box. /// </summary> public override void HandleInput(InputState input) { PlayerIndex playerIndex; // We pass in our ControllingPlayer, which may either be null (to // accept input from any player) or a specific index. If we pass a null // controlling player, the InputState helper returns to us which player // actually provided the input. We pass that through to our Accepted and // Cancelled events, so they can tell which player triggered them. if (input.IsMenuSelect(ControllingPlayer, out playerIndex) && (options == MsgBoxOptions.boxOkCancel || options == MsgBoxOptions.boxOk)) { // Raise the accepted event, then exit the message box. if (Accepted != null) { Accepted(this, new PlayerIndexEventArgs(playerIndex)); } ExitScreen(); } else if (input.IsMenuCancel(ControllingPlayer, out playerIndex) && (options == MsgBoxOptions.boxOkCancel || options == MsgBoxOptions.boxYesNoCancel)) { // Raise the cancelled event, then exit the message box. if (Cancelled != null) { Cancelled(this, new PlayerIndexEventArgs(playerIndex)); } ExitScreen(); } else if (input.IsMenuYes(ControllingPlayer, out playerIndex) && (options == MsgBoxOptions.boxYesNo || options == MsgBoxOptions.boxYesNoCancel)) { // Raise the Yes event, then exit the message box. if (Yessed != null) { Yessed(this, new PlayerIndexEventArgs(playerIndex)); } ExitScreen(); } else if (input.IsMenuNo(ControllingPlayer, out playerIndex) && (options == MsgBoxOptions.boxYesNo || options == MsgBoxOptions.boxYesNoCancel)) { // Raise the No event, then exit the message box. if (Noed != null) { Noed(this, new PlayerIndexEventArgs(playerIndex)); } ExitScreen(); } else if (input.IsMenuDown(ControllingPlayer)) { if (curLine < (totLines - 1)) { curLine++; } else { curLine = totLines - 1; } } else if (input.IsMenuUp(ControllingPlayer)) { if (curLine > 0) { curLine--; } else { curLine = 0; } } }