#region Copyright /* -------------------------------------------------------------------------------- This source file is part of Xenocide by Project Xenocide Team For the latest info on Xenocide, see http://www.projectxenocide.com/ This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. -------------------------------------------------------------------------------- */ /* * @file AircraftOrdersDialog.cs * @date Created: 2007/08/19 * @author File creator: dteviot * @author Credits: none */ #endregion #region Using Statements using System; using System.Collections.Generic; using System.Text; using CeGui; using ProjectXenocide.UI.Screens; using ProjectXenocide.Utils; using ProjectXenocide.Model.Geoscape; using ProjectXenocide.Model.Geoscape.Vehicles; using Xenocide.Resources; #endregion namespace ProjectXenocide.UI.Dialogs { /// /// Dialog that lets player change the orders given to an aircraft /// class AircraftOrdersDialog : Dialog { /// /// Constructor /// /// Craft to give orders to public AircraftOrdersDialog(Aircraft craft) : base("Content/Layouts/AircraftOrdersDialog.layout") { this.craft = craft; } #region Create the CeGui widgets /// /// add the buttons to the screen /// protected override void CreateCeguiWidgets() { CeGui.Widgets.StaticText txtDetails = (CeGui.Widgets.StaticText)WindowManager.Instance.GetWindow(txtDetailsName); txtDetails.Text = MakeDialogText(); } #endregion Create the CeGui widgets #region event handlers /// user wants craft to return to base /// Not used /// Not used [GuiEvent()] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public void OnReturnClicked(object sender, CeGui.GuiEventArgs e) { SetReturnToBaseMission(); } /// user wants craft to go to new location /// Not used /// Not used [GuiEvent()] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public void OnTargetClicked(object sender, CeGui.GuiEventArgs e) { NewTarget(); } /// no changes are wanted /// Not used /// Not used [GuiEvent()] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public void OnCancelClicked(object sender, CeGui.GuiEventArgs e) { ScreenManager.CloseDialog(this); } /// /// Set the craft's mission to "return to home base" /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "FxCop false positive")] private void SetReturnToBaseMission() { craft.Mission.Abort(); craft.Mission = new PatrolMission(craft, craft.HomeBase.Position); craft.Mission.SetState(new ReturnToBaseState(craft.Mission)); ScreenManager.CloseDialog(this); } /// /// Let user pick a new Target for this Craft /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "FxCop false positive")] private void NewTarget() { GeoscapeScreen geoscapeScreen = new GeoscapeScreen(); geoscapeScreen.State = new GeoscapeScreen.TargetingScreenState(geoscapeScreen, craft); ScreenManager.ScheduleScreen(geoscapeScreen); ScreenManager.CloseDialog(this); } #endregion event handlers /// /// Create text to show on dialog /// /// text to show private String MakeDialogText() { StringBuilder sb = new StringBuilder(craft.Name); sb.Append(Util.Linefeed); sb.Append(Util.StringFormat(Strings.MSGBOX_AIRCRAFT_ORDERS_BASE, craft.HomeBase.Name)); sb.Append(Util.Linefeed); sb.Append(Util.StringFormat(Strings.MSGBOX_AIRCRAFT_ORDERS_SPEED, craft.MetersPerSecond)); sb.Append(Util.Linefeed); sb.Append(Util.StringFormat(Strings.MSGBOX_AIRCRAFT_ORDERS_FUEL, craft.FuelPercent)); sb.Append(Util.Linefeed); foreach (WeaponPod pod in craft.WeaponPods) { if (null != pod) { sb.Append(pod.PodInformationString()); sb.Append(Util.Linefeed); } } return sb.ToString(); } #region Fields /// /// Craft to give orders to /// private Aircraft craft; #endregion #region Constants private const string txtDetailsName = "txtDetails"; #endregion } }