public override void ExceHandleNotification(INotification notification) { //判断是否是转发内容 if (notification.Name.Contains("=>")) { SendNotification(StringUtil.GeNotificationNameForNN(notification.Name), notification.Body, notification.Type); return; } // 处理公共请求 HandleNotificationCommon(notification); ViewChooseStage viewChooseStage = null; List <CardDeckList> cardDeckListLoad = new List <CardDeckList>(); CardMoveAnimation cardMoveAnimation = null; //回调函数 UnityAction callBack = () => { exceINotification = false; SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START); }; bool callBackDelay = false; switch (notification.Name) { case UIViewSystemEvent.UI_ANIMATION_SYS: switch (notification.Type) { case UIViewSystemEvent.UI_ANIMATION_SYS_START: DoExceHandleNotification(); break; } break; case UIViewSystemEvent.UI_CARD_ENTRY_SYS: switch (notification.Type) { //卡牌的归属地发生了变化 case UIViewSystemEvent.UI_CARD_ENTRY_SYS_CHANGE_GAME_CONTAINER_TYPE: CardEntry cardEntryMove = notification.Body as CardEntry; if (cardEntryMove.gameContainerType == "CardHand") { SendNotification(HandSystemEvent.HAND_CHANGE, notification.Body, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_DRAW_ONE_CARD, cardEntryMove.controllerPlayerItem.playerCode)); return; } if (cardEntryMove.lastGameContainerType == "CardHand") { SendNotification(HandSystemEvent.HAND_CHANGE, cardEntryMove, StringUtil.GetNTByNotificationTypeAndPlayerCode(HandSystemEvent.HAND_CHANGE_REMOVE_ONE_CARD, cardEntryMove.controllerPlayerItem.playerCode)); } break; //卡牌在显示页面需要被隐藏 case UIViewSystemEvent.UI_CARD_ENTRY_SYS_CARD_NEED_HIDE_IN_VIEW: CardEntry cardEntryNeedHide = notification.Body as CardEntry; if (cardEntryNeedHide.gameContainerType == "CardHand") { SendNotification(HandSystemEvent.HAND_CHANGE, notification.Body, StringUtil.GetNTByNotificationTypeAndPlayerCode(UIViewSystemEvent.UI_CARD_ENTRY_SYS_CARD_NEED_HIDE_IN_VIEW, cardEntryNeedHide.controllerPlayerItem.playerCode)); } break; } break; case UIViewSystemEvent.UI_VIEW_CURRENT: switch (notification.Type) { case UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW: //是否需要打开遮罩层 if (parameterMap.ContainsKey("OpenMaskLayer")) { string OpenMaskLayer = parameterMap["OpenMaskLayer"]; if ("Y" == OpenMaskLayer) { UIViewName uiMaskLayeView = UIViewConfig.getUIViewNameByNameStr("UIMaskLayeView"); UIControllerLIst.ShowView(uiMaskLayeView); } } UIViewName viewNameOpen = UIViewConfig.getUIViewNameByNameStr(parameterMap["UIViewName"]); UIControllerLIst.ShowView(viewNameOpen); //初始化页面 UIControllerLIst.GetViewByName <ViewBaseView>(viewNameOpen).InitViewForParameter(this, notification.Body, parameterMap); //一些界面打开时需要初始化 switch (viewNameOpen) { case UIViewName.CardDeckList: PlayerItem playerItem = notification.Body as PlayerItem; List <CardDeckList> cardDeckLists = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList); for (int num = 0; num < cardDeckLists.Count; num++) { if (cardDeckLists[num].playerItem == null) { cardDeckLists[num].playerItem = playerItem; //设置位置 //0在左,1在右 //己方始终显示在左边 Vector3 position = new Vector3(); if (playerItem.playerCode == playerCode) { position.x = -600; } else { position.x = 430; } cardDeckLists[num].transform.localPosition = position; } } break; } break; case UIViewSystemEvent.UI_VIEW_CURRENT_CLOSE_ONE_VIEW: UIViewName viewNameClose = UIViewConfig.getUIViewNameByNameStr(notification.Body as string); UIControllerLIst.HideView(viewNameClose); //是否需要关闭遮罩层 if (parameterMap.ContainsKey("OpenMaskLayer")) { string OpenMaskLayer = parameterMap["OpenMaskLayer"]; if ("N" == OpenMaskLayer) { UIViewName uiMaskLayeView = UIViewConfig.getUIViewNameByNameStr("UIMaskLayeView"); UIControllerLIst.HideView(uiMaskLayeView); } } break; } break; case UIViewSystemEvent.UI_CHOOSE_STAGE: switch (notification.Type) { case UIViewSystemEvent.UI_CHOOSE_STAGE_LOAD_CARD_ENTRY: viewChooseStage = UIControllerLIst.GetViewByName <ViewChooseStage>(UIViewName.ChooseStage); List <CardEntry> shipCardEntryList = (List <CardEntry>)notification.Body; //载入卡牌列表 viewChooseStage.LoadCardEntryList(shipCardEntryList); //载入完成后绑定事件 foreach (CardIntactView cardIntactView in viewChooseStage.cardIntactViews) { //如果是自己的命令则绑定上点击事件 if (playerCode == playerCodeNotification) { cardIntactView.OnClick = () => { SendNotification(UIViewSystemEvent.UI_CHOOSE_STAGE, cardIntactView.card, UIViewSystemEvent.UI_CHOOSE_STAGE_ONE_CARD); }; } else { //设置为空 cardIntactView.OnClick = () => { }; } } break; case UIViewSystemEvent.UI_CHOOSE_STAGE_ONE_SHIP_CARD_ANIMATION: viewChooseStage = UIControllerLIst.GetViewByName <ViewChooseStage>(UIViewName.ChooseStage); CardEntry choosedShipCard = notification.Body as CardEntry; CardIntactView targetCardIntactView = null; //找到这张组件 foreach (CardIntactView cardIntactView in viewChooseStage.cardIntactViews) { if (cardIntactView.card.uuid == choosedShipCard.uuid) { cardDeckListLoad = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList); cardMoveAnimation = UIControllerLIst.GetViewByName <CardMoveAnimation>(UIViewName.CardMoveAnimation); //执行动画,获得卡牌的位置,list的位置 for (int num = 0; num < cardDeckListLoad.Count; num++) { //移动目标 if (cardDeckListLoad[num].playerItem.playerCode == playerCodeNotification) { callBackDelay = true; cardMoveAnimation.MoveShipCardAnimation(cardIntactView, cardDeckListLoad[num], callBack); } } } } break; } break; case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE: ViewChooseMakeStage viewChooseMakeStage = UIControllerLIst.GetViewByName <ViewChooseMakeStage>(UIViewName.ViewChooseMakeStage); switch (notification.Type) { //获取下一组数据 case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE_LOAD_NEXT_LIST: List <CardEntry> cardList = notification.Body as List <CardEntry>; viewChooseMakeStage = UIControllerLIst.GetViewByName <ViewChooseMakeStage>(UIViewName.ViewChooseMakeStage); viewChooseMakeStage.LoadNewCardList(cardList); break; case UIViewSystemEvent.UI_CHOOSE_MAKE_STAGE_ONE_CARD_SUCCESS: CardEntry card = notification.Body as CardEntry; viewChooseMakeStage.ChangeOneCradForBuyed(card); break; } break; case UIViewSystemEvent.UI_CARD_DECK_LIST: switch (notification.Type) { //读取牌组 case UIViewSystemEvent.UI_CARD_DECK_LIST_LOAD: PlayerItem playerItemLoad = notification.Body as PlayerItem; cardDeckListLoad = UIControllerLIst.GetViewListByName <CardDeckList>(UIViewName.CardDeckList); for (int num = 0; num < cardDeckListLoad.Count; num++) { if (cardDeckListLoad[num].playerItem.playerCode == playerItemLoad.playerCode) { cardDeckListLoad[num].LoadPlayerInfo(); foreach (CardHeadView cardHeadView in cardDeckListLoad[num].cardHeadViews) { cardHeadView.OnPointerEnter = () => { SendNotification( UIViewSystemEvent.UI_VIEW_CURRENT, cardHeadView, StringUtil.GetNTByNotificationTypeAndUIViewNameAndOtherType( UIViewSystemEvent.UI_VIEW_CURRENT_OPEN_ONE_VIEW, UIViewConfig.getNameStrByUIViewName(UIViewName.OneCardAllInfo), "CardHeadView" ) ); }; cardHeadView.OnPointerExit = () => { SendNotification( UIViewSystemEvent.UI_VIEW_CURRENT, UIViewConfig.getNameStrByUIViewName(UIViewName.OneCardAllInfo), UIViewSystemEvent.UI_VIEW_CURRENT_CLOSE_ONE_VIEW); }; } } } break; } break; //费用控制组件 case UIViewSystemEvent.UI_MANA_INFA_SYS: int changeNum = 0; ManaInfoView manaInfoView = null; switch (notification.Type) { case UIViewSystemEvent.UI_MANA_INFA_SYS_INIT: VariableAttribute manaInitVariableAttribute = notification.Body as VariableAttribute; manaInfoView = UIControllerLIst.GetViewByName <ManaInfoView>(UIViewName.ManaInfoView); manaInfoView.UIManaInfoSysInit(manaInitVariableAttribute, myself, playerCodeNotification); break; case UIViewSystemEvent.UI_MANA_INFA_SYS_NUM_CHANGE: VariableAttribute manaChangeVariableAttribute = notification.Body as VariableAttribute; manaInfoView = UIControllerLIst.GetViewByName <ManaInfoView>(UIViewName.ManaInfoView); manaInfoView.ChangeManaUsable(manaChangeVariableAttribute, myself); break; } break; //科技组件显示 case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS: TraitCombinationView traitCombinationView = null; switch (notification.Type) { case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS_INIT: List <TraitType> traitTypes = notification.Body as List <TraitType>; traitCombinationView = UIControllerLIst.GetViewByName <TraitCombinationView>(UIViewName.TraitCombinationView); traitCombinationView.UITraitCombinationSysInit(traitTypes, myself, playerCodeNotification); break; case UIViewSystemEvent.UI_TRAIT_COMBINATION_SYS_ADD: string traitType = notification.Body.ToString(); traitCombinationView = UIControllerLIst.GetViewByName <TraitCombinationView>(UIViewName.TraitCombinationView); traitCombinationView.UITraitCombinationSysAdd(traitType, myself); break; } break; //效果展示列控制 case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS: EffectDisplayView effectDisplayView = null; switch (notification.Type) { case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_PUT_ONE_EFFECT: effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView); CardEntry effectCardNeedShow = notification.Body as CardEntry; callBackDelay = true; //回调函数 callBack = () => { exceINotification = false; SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EFFECT_SHOW_OVER); SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START); }; effectDisplayView.ShowCradEffectByCardEntryAuto(effectCardNeedShow, callBack); break; case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_ONE_EFFECT_NEED_CHOOSE_EXE: effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView); CardEntry effectCardNeedChooseExe = notification.Body as CardEntry; SendNotificationAddCardEntry sendNotificationAddCard = (OneUserSelectionItem oneUserSelectionItem) => { SendNotification(OperateSystemEvent.OPERATE_SYS, oneUserSelectionItem, OperateSystemEvent.OPERATE_SYS_CHOOSE_ONE_USER_SELECTION_ITEM); }; effectDisplayView.ShowCradEffectAndUserSelectionListByCardEntry(effectCardNeedChooseExe, sendNotificationAddCard); break; case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_ONE_EFFECT_NEED_CHOOSE_TARGET: effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView); CardEntry effectCardNeedChooseTarget = notification.Body as CardEntry; effectDisplayView.ShowCradEffectByCardEntry(effectCardNeedChooseTarget); break; case UIViewSystemEvent.UI_EFFECT_DISPLAY_SYS_TO_HIDE: effectDisplayView = UIControllerLIst.GetViewByName <EffectDisplayView>(UIViewName.EffectDisplayView); effectDisplayView.cardIntactView.gameObject.SetActive(false); break; } break; //科技组件显示 case UIViewSystemEvent.UI_PLAYER_SCORE_SHOW_SYS: switch (notification.Type) { case UIViewSystemEvent.UI_PLAYER_SCORE_SHOW_SYS_CHANGE: ShipComponentView shipScoreComponentView = UIControllerLIst.GetViewByName <ShipComponentView>(UIViewName.ShipComponentView); shipScoreComponentView.ChangeScoreShow(myself, Convert.ToInt32(notification.Body)); break; } break; //结束按钮的显示控制 case UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS: NextTurnButton nextTurnButton = null; switch (notification.Type) { case UIViewSystemEvent.UI_NEXT_TURN_SHOW_SYS_SHOW: if (myself) { nextTurnButton = UIControllerLIst.GetViewByName <NextTurnButton>(UIViewName.NextTurnButton); nextTurnButton.ShowButton(); } break; } break; //展示卡牌完整信息的控制 case UIViewSystemEvent.UI_ONE_CARD_ALL_INFO: switch (notification.Type) { case UIViewSystemEvent.UI_ONE_CARD_ALL_INFO_BUFF_CHANGE: CardEntry minionCellItem = notification.Body as CardEntry; OneCardAllInfo oneCardAllInfo = UIControllerLIst.GetViewByName <OneCardAllInfo>(UIViewName.OneCardAllInfo); if (oneCardAllInfo != null) { if (oneCardAllInfo.cardEntryShow.uuid == minionCellItem.uuid) { oneCardAllInfo.LoadingAllInfoByMinionCellItem(minionCellItem); } } break; } break; case UIViewSystemEvent.UI_TURN_STAGE_SYS: switch (notification.Type) { case UIViewSystemEvent.UI_TURN_STAGE_SYS_STAGE_CHANGE: //回调函数 UnityAction turnStageCallBack = () => { SendNotification(EffectExecutionEvent.EFFECT_EXECUTION_SYS, null, EffectExecutionEvent.EFFECT_EXECUTION_SYS_EFFECT_SHOW_OVER); SendNotification(UIViewSystemEvent.UI_ANIMATION_SYS, null, UIViewSystemEvent.UI_ANIMATION_SYS_START); }; TurnSysProgressBarView turnSysProgressBarView = UIControllerLIst.GetViewByName <TurnSysProgressBarView>(UIViewName.TurnSysProgressBarView); QuestStageCircuitItem questStageCircuitItem = notification.Body as QuestStageCircuitItem; turnSysProgressBarView.LoadingAllStageInfoToChange(questStageCircuitItem, playerCode, turnStageCallBack); break; } break; } if (callBackDelay == false) { callBack(); } }
public void GameChanged() { if (MapDisplay.Game.CurrentPlayer == null) { BeginTurnButton.Show(); NextTurnButton.Hide(); BeginTurnButton.Text = "Begin " + MapDisplay.Game.NextPlayer.Faction.ToString() + "'s turn"; } else { BeginTurnButton.Hide(); NextTurnButton.Show(); } MovePictureBox.BorderStyle = BorderStyle.None; BuildPictureBox.BorderStyle = BorderStyle.None; LoadPictureBox.BorderStyle = BorderStyle.None; UnloadPictureBox.BorderStyle = BorderStyle.None; RepairPictureBox.BorderStyle = BorderStyle.None; LightArtilleryPictureBox.BorderStyle = BorderStyle.None; HeavyArtilleryPictureBox.BorderStyle = BorderStyle.None; TorpedoPictureBox.BorderStyle = BorderStyle.None; DivePictureBox.BorderStyle = BorderStyle.None; LoadTorpedoesPictureBox.BorderStyle = BorderStyle.None; DepthChargePictureBox.BorderStyle = BorderStyle.None; InstallBatteryPictureBox.BorderStyle = BorderStyle.None; CapturePictureBox.BorderStyle = BorderStyle.None; MinePictureBox.BorderStyle = BorderStyle.None; LoadMinesPictureBox.BorderStyle = BorderStyle.None; SweepPictureBox.BorderStyle = BorderStyle.None; SearchMinesPictureBox.BorderStyle = BorderStyle.None; if (MapDisplay.Game.SelectedUnit != null) { DivePictureBox.Image = MapDisplay.Game.SelectedUnit.IsSubmerged ? Bitmaps.Get("Data\\Surface.png") : Bitmaps.Get("Data\\Dive.png"); } switch (MapDisplay.CurrentOrder) { case null: break; case Order.Move: MovePictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Build: BuildPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.LightArtillery: LightArtilleryPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.HeavyArtillery: HeavyArtilleryPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Repair: RepairPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Load: LoadPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Unload: UnloadPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Torpedo: TorpedoPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.DiveOrSurface: DivePictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.LoadTorpedoes: LoadTorpedoesPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.DepthCharge: DepthChargePictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.InstallBattery: InstallBatteryPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Capture: CapturePictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Mine: MinePictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.LoadMines: LoadMinesPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.Sweep: SweepPictureBox.BorderStyle = BorderStyle.Fixed3D; break; case Order.SearchMines: SearchMinesPictureBox.BorderStyle = BorderStyle.Fixed3D; break; } if (MapDisplay.Game.CurrentPlayer != null) { FlagBox.Image = Game.GetFactionFlag(MapDisplay.Game.CurrentPlayer.Faction); GreetingText.Text = Game.GetFactionGreetings(MapDisplay.Game.CurrentPlayer.Faction); GreetingText.BackColor = Game.GetFactionColor(MapDisplay.Game.CurrentPlayer.Faction); NextTurnButton.Show(); BeginTurnButton.Hide(); } else { FlagBox.Image = null; GreetingText.Text = "Press the Begin Turn button."; GreetingText.BackColor = SystemColors.Control; NextTurnButton.Hide(); BeginTurnButton.Show(); } var selectedUnit = MapDisplay.Game.SelectedUnit; if (selectedUnit != null) { if (MapDisplay.Game.CurrentPlayer != null && MapDisplay.Game.CurrentPlayer.Faction != Faction.Neutral) { if (MapDisplay.Game.CurrentPlayer == selectedUnit.Player) { OrdersPanel.Show(); } UnitPanel.Show(); InfoPanel.Show(); } UnitPictureBox.SizeMode = PictureBoxSizeMode.Zoom; UnitPictureBox.Image = MapDisplay.Game.SelectedUnit.Type.LargeBitmap; UnitTextBox.Text = selectedUnit.Name; UnitTextBox.Text += " : " + selectedUnit.Type.Name; UnitTextBox.Text += Environment.NewLine + "Integrity: " + Math.Round(selectedUnit.Health * 100).ToString() + "%"; if (selectedUnit.Type.Capacity >= 1) { UnitTextBox.Text += Environment.NewLine + "Cargo: " + selectedUnit.Cargo + "/" + selectedUnit.Type.Capacity; } if (selectedUnit.TurnsUntilCompletion > 0) { UnitTextBox.Text += Environment.NewLine + "Turns until completion: " + selectedUnit.TurnsUntilCompletion; } if (selectedUnit.Type == UnitType.Submarine && selectedUnit.IsSubmerged) { UnitTextBox.Text += Environment.NewLine + "Oxygen left: " + ((Submarine)selectedUnit).OxygenLeft.ToString(); } if (selectedUnit.Type.Abilities.Contains(Order.Torpedo)) { UnitTextBox.Text += Environment.NewLine + "Torpedo salvoes left: " + selectedUnit.Torpedoes; } if (selectedUnit.Type.Abilities.Contains(Order.Mine)) { UnitTextBox.Text += Environment.NewLine + "Mine placements left: " + selectedUnit.Mines; } if (selectedUnit.Type.Abilities.Contains(Order.Move)) { UnitTextBox.Text += Environment.NewLine + "Moves Left: " + selectedUnit.MovesLeft.ToString("0.0"); } if (selectedUnit.Type.Abilities.Contains(Order.LightArtillery)) { UnitTextBox.Text += Environment.NewLine + "Light Artillery " + "Power: " + selectedUnit.Type.LightPower + ", Range: " + selectedUnit.Type.LightRange; } if (selectedUnit.Type.Abilities.Contains(Order.HeavyArtillery)) { UnitTextBox.Text += Environment.NewLine + "Heavy Artillery " + "Power: " + selectedUnit.Type.HeavyPower + ", Range: " + selectedUnit.Type.HeavyRange; } if (!float.IsPositiveInfinity(selectedUnit.Type.Armour)) { UnitTextBox.Text += Environment.NewLine + "Armour: " + selectedUnit.Type.Armour; } if (selectedUnit.Type.Abilities.Contains(Order.Move)) { MoveBox.Show(); } else { MoveBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.LightArtillery)) { LightArtilleryBox.Show(); } else { LightArtilleryBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.HeavyArtillery)) { HeavyArtilleryBox.Show(); } else { HeavyArtilleryBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Repair)) { RepairBox.Show(); } else { RepairBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Build)) { BuildBox.Show(); } else { BuildBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Load)) { LoadBox.Show(); } else { LoadBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Unload)) { UnloadBox.Show(); } else { UnloadBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Torpedo)) { TorpedoBox.Show(); } else { TorpedoBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.DiveOrSurface)) { DiveBox.Show(); DiveButton.Text = selectedUnit.IsSubmerged ? "Surface" : "Dive"; } else { DiveBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.LoadTorpedoes)) { LoadTorpedoesBox.Show(); } else { LoadTorpedoesBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.DepthCharge)) { DepthChargeBox.Show(); } else { DepthChargeBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.InstallBattery)) { InstallBatteryBox.Show(); } else { InstallBatteryBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Capture)) { CaptureBox.Show(); } else { CaptureBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Mine)) { MineBox.Show(); } else { MineBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.LoadMines)) { LoadMinesBox.Show(); } else { LoadMinesBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.Sweep)) { SweepBox.Show(); } else { SweepBox.Hide(); } if (selectedUnit.Type.Abilities.Contains(Order.SearchMines)) { SearchMinesBox.Show(); } else { SearchMinesBox.Hide(); } MoveBox.Enabled = selectedUnit.MovesLeft >= 1; LightArtilleryBox.Enabled = selectedUnit.LightShotsLeft >= 1 && !selectedUnit.IsSubmerged; HeavyArtilleryBox.Enabled = selectedUnit.HeavyShotsLeft >= 1 && !selectedUnit.IsSubmerged; BuildBox.Enabled = !selectedUnit.IsSubmerged; RepairBox.Enabled = selectedUnit.RepairsLeft >= 1 && !selectedUnit.IsSubmerged; LoadBox.Enabled = selectedUnit.LoadsLeft >= 1 && !selectedUnit.IsSubmerged; UnloadBox.Enabled = selectedUnit.LoadsLeft >= 1 && !selectedUnit.IsSubmerged; TorpedoBox.Enabled = selectedUnit.TorpedoesLeft >= 1 && selectedUnit.Torpedoes >= 1; DiveBox.Enabled = selectedUnit.DivesLeft >= 1; LoadTorpedoesBox.Enabled = selectedUnit.Torpedoes < selectedUnit.Type.MaxTorpedoes; DepthChargeBox.Enabled = selectedUnit.DepthChargesLeft >= 1; InstallBatteryBox.Enabled = selectedUnit.InstallsLeft >= 1; CaptureBox.Enabled = selectedUnit.CapturesLeft >= 1; MineBox.Enabled = selectedUnit.MinesLeft >= 1 && selectedUnit.Mines >= 1; LoadMinesBox.Enabled = selectedUnit.Mines < selectedUnit.Type.MaxMines; SweepBox.Enabled = selectedUnit.SweepsLeft >= 1; SearchMinesBox.Enabled = selectedUnit.MineSearchesLeft >= 1; if (MapDisplay.CurrentOrder == Order.Move && selectedUnit.MovesLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.LightArtillery && selectedUnit.LightShotsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.HeavyArtillery && selectedUnit.HeavyShotsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Repair && selectedUnit.RepairsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Load && selectedUnit.LoadsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Unload && selectedUnit.LoadsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Torpedo && selectedUnit.TorpedoesLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.LoadTorpedoes && selectedUnit.Torpedoes >= selectedUnit.Type.MaxTorpedoes) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.DepthCharge && selectedUnit.DepthChargesLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.InstallBattery && selectedUnit.InstallsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Capture && selectedUnit.CapturesLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Mine && selectedUnit.MinesLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.LoadMines && selectedUnit.Mines >= selectedUnit.Type.MaxMines) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.Sweep && selectedUnit.SweepsLeft < 1) { MapDisplay.CurrentOrder = null; } if (MapDisplay.CurrentOrder == Order.SearchMines && selectedUnit.MineSearchesLeft < 1) { MapDisplay.CurrentOrder = null; } HealthBar.Value = (int)(selectedUnit.Health * 100); } else { UnitPanel.Hide(); OrdersPanel.Hide(); InfoPanel.Hide(); } Invalidate(); }