public override void LoadFromResponse( string apiname, dynamic data ) { base.LoadFromResponse( apiname, (object)data ); BaseAirAttack = new PhaseBaseAirAttack( this ); AirBattle = new PhaseAirBattle( this ); Support = new PhaseSupport( this ); OpeningASW = new PhaseOpeningASW( this, true ); OpeningTorpedo = new PhaseTorpedo( this, 0 ); Shelling1 = new PhaseShelling( this, 1, "1", false ); Shelling2 = new PhaseShelling( this, 2, "2", false ); Shelling3 = new PhaseShelling( this, 3, "3", true ); Torpedo = new PhaseTorpedo( this, 4 ); BaseAirAttack.EmulateBattle( _resultHPs, _attackDamages ); AirBattle.EmulateBattle( _resultHPs, _attackDamages ); Support.EmulateBattle( _resultHPs, _attackDamages ); OpeningASW.EmulateBattle( _resultHPs, _attackDamages ); OpeningTorpedo.EmulateBattle( _resultHPs, _attackDamages ); Shelling1.EmulateBattle( _resultHPs, _attackDamages ); Shelling2.EmulateBattle( _resultHPs, _attackDamages ); Shelling3.EmulateBattle( _resultHPs, _attackDamages ); Torpedo.EmulateBattle( _resultHPs, _attackDamages ); }
public override void LoadFromResponse( string apiname, dynamic data ) { base.LoadFromResponse( apiname, (object)data ); AirBattle = new PhaseAirBattle( this ); // 支援はないものとする AirBattle.EmulateBattle( _resultHPs, _attackDamages ); }
public override void LoadFromResponse( string apiname, dynamic data ) { base.LoadFromResponse( apiname, (object)data ); AirBattle = new PhaseAirBattle( this ); Support = new PhaseSupport( this ); AirBattle2 = new PhaseAirBattle( this, "2" ); AirBattle.EmulateBattle( _resultHPs, _attackDamages ); Support.EmulateBattle( _resultHPs, _attackDamages ); AirBattle2.EmulateBattle( _resultHPs, _attackDamages ); }
/// <summary> /// 航空戦情報(航空戦)を設定します。 /// 通常艦隊・連合艦隊両用です。 /// </summary> private void SetAerialWarfareAirBattle( PhaseAirBattle pd1, PhaseAirBattle pd2 ) { //空対空戦闘 if ( pd1.IsStage1Available ) { //二回目の空戦が存在するか bool isBattle2Enabled = pd2.IsStage1Available; AirSuperiority.Text = Constants.GetAirSuperiority( pd1.AirSuperiority ); if ( isBattle2Enabled ) { ToolTipInfo.SetToolTip( AirSuperiority, "第2次: " + Constants.GetAirSuperiority( pd2.AirSuperiority ) ); } else { ToolTipInfo.SetToolTip( AirSuperiority, null ); } int[] planeFriend = { pd1.AircraftLostStage1Friend, pd1.AircraftTotalStage1Friend, ( isBattle2Enabled ? pd2.AircraftLostStage1Friend : 0 ), ( isBattle2Enabled ? pd2.AircraftTotalStage1Friend : 0 ), }; AirStage1Friend.Text = string.Format( "-{0}/{1}", planeFriend[0] + planeFriend[2], planeFriend[1] ); ToolTipInfo.SetToolTip( AirStage1Friend, string.Format( "第1次: -{0}/{1}\r\n第2次: -{2}/{3}\r\n", planeFriend[0], planeFriend[1], planeFriend[2], planeFriend[3] ) ); if ( ( planeFriend[1] > 0 && planeFriend[0] == planeFriend[1] ) || ( planeFriend[3] > 0 && planeFriend[2] == planeFriend[3] ) ) AirStage1Friend.ForeColor = Color.Red; else AirStage1Friend.ForeColor = SystemColors.ControlText; int[] planeEnemy = { pd1.AircraftLostStage1Enemy, pd1.AircraftTotalStage1Enemy, ( isBattle2Enabled ? pd2.AircraftLostStage1Enemy : 0 ), ( isBattle2Enabled ? pd2.AircraftTotalStage1Enemy : 0 ), }; AirStage1Enemy.Text = string.Format( "-{0}/{1}", planeEnemy[0] + planeEnemy[2], planeEnemy[1] ); ToolTipInfo.SetToolTip( AirStage1Enemy, string.Format( "第1次: -{0}/{1}\r\n第2次: -{2}/{3}\r\n", planeEnemy[0], planeEnemy[1], planeEnemy[2], planeEnemy[3] ) ); if ( ( planeEnemy[1] > 0 && planeEnemy[0] == planeEnemy[1] ) || ( planeEnemy[3] > 0 && planeEnemy[2] == planeEnemy[3] ) ) AirStage1Enemy.ForeColor = Color.Red; else AirStage1Enemy.ForeColor = SystemColors.ControlText; //触接 int[] touchFriend = { pd1.TouchAircraftFriend, isBattle2Enabled ? pd2.TouchAircraftFriend : -1 }; if ( touchFriend[0] != -1 || touchFriend[1] != -1 ) { AirStage1Friend.ImageAlign = ContentAlignment.MiddleLeft; AirStage1Friend.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane; EquipmentDataMaster[] planes = { KCDatabase.Instance.MasterEquipments[touchFriend[0]], KCDatabase.Instance.MasterEquipments[touchFriend[1]] }; ToolTipInfo.SetToolTip( AirStage1Friend, string.Format( "{0}触接中\r\n第1次: {1}\r\n第2次: {2}", ToolTipInfo.GetToolTip( AirStage1Friend ) ?? "", planes[0] != null ? planes[0].Name : "(なし)", planes[1] != null ? planes[1].Name : "(なし)" ) ); } else { AirStage1Friend.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Friend.ImageIndex = -1; //ToolTipInfo.SetToolTip( AirStage1Friend, null ); } int[] touchEnemy = { pd1.TouchAircraftEnemy, isBattle2Enabled ? pd2.TouchAircraftEnemy : -1 }; if ( touchEnemy[0] != -1 || touchEnemy[1] != -1 ) { AirStage1Enemy.ImageAlign = ContentAlignment.MiddleLeft; AirStage1Enemy.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane; EquipmentDataMaster[] planes = { KCDatabase.Instance.MasterEquipments[touchEnemy[0]], KCDatabase.Instance.MasterEquipments[touchEnemy[1]] }; ToolTipInfo.SetToolTip( AirStage1Enemy, string.Format( "{0}触接中\r\n第1次: {1}\r\n第2次: {2}", ToolTipInfo.GetToolTip( AirStage1Enemy ) ?? "", planes[0] != null ? planes[0].Name : "(なし)", planes[1] != null ? planes[1].Name : "(なし)" ) ); } else { AirStage1Enemy.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Enemy.ImageIndex = -1; //ToolTipInfo.SetToolTip( AirStage1Enemy, null ); } } else { //空対空戦闘発生せず(!?) AirSuperiority.Text = Constants.GetAirSuperiority( -1 ); ToolTipInfo.SetToolTip( AirSuperiority, null ); AirStage1Friend.Text = "-"; AirStage1Friend.ForeColor = SystemColors.ControlText; ToolTipInfo.SetToolTip( AirStage1Friend, null ); AirStage1Enemy.Text = "-"; AirStage1Enemy.ForeColor = SystemColors.ControlText; ToolTipInfo.SetToolTip( AirStage1Enemy, null ); } //艦対空戦闘 if ( pd1.IsStage2Available ) { //二回目の空戦が存在するか bool isBattle2Enabled = pd2.IsStage2Available; int[] planeFriend = { pd1.AircraftLostStage2Friend, pd1.AircraftTotalStage2Friend, ( isBattle2Enabled ? pd2.AircraftLostStage2Friend : 0 ), ( isBattle2Enabled ? pd2.AircraftTotalStage2Friend : 0 ), }; AirStage2Friend.Text = string.Format( "-{0}/{1}", planeFriend[0] + planeFriend[2], planeFriend[1] ); ToolTipInfo.SetToolTip( AirStage2Friend, string.Format( "第1次: -{0}/{1}\r\n第2次: -{2}/{3}\r\n", planeFriend[0], planeFriend[1], planeFriend[2], planeFriend[3] ) ); if ( ( planeFriend[1] > 0 && planeFriend[0] == planeFriend[1] ) || ( planeFriend[3] > 0 && planeFriend[2] == planeFriend[3] ) ) AirStage2Friend.ForeColor = Color.Red; else AirStage2Friend.ForeColor = SystemColors.ControlText; int[] planeEnemy = { pd1.AircraftLostStage2Enemy, pd1.AircraftTotalStage2Enemy, ( isBattle2Enabled ? pd2.AircraftLostStage2Enemy : 0 ), ( isBattle2Enabled ? pd2.AircraftTotalStage2Enemy : 0 ), }; AirStage2Enemy.Text = string.Format( "-{0}/{1}", planeEnemy[0] + planeEnemy[2], planeEnemy[1] ); ToolTipInfo.SetToolTip( AirStage2Enemy, string.Format( "第1次: -{0}/{1}\r\n第2次: -{2}/{3}\r\n{4}", planeEnemy[0], planeEnemy[1], planeEnemy[2], planeEnemy[3], isBattle2Enabled ? "" : "(第二次戦発生せず)" ) ); //DEBUG if ( ( planeEnemy[1] > 0 && planeEnemy[0] == planeEnemy[1] ) || ( planeEnemy[3] > 0 && planeEnemy[2] == planeEnemy[3] ) ) AirStage2Enemy.ForeColor = Color.Red; else AirStage2Enemy.ForeColor = SystemColors.ControlText; //対空カットイン { bool[] fire = new bool[] { pd1.IsAACutinAvailable, isBattle2Enabled && pd2.IsAACutinAvailable }; int[] cutinID = new int[] { fire[0] ? pd1.AACutInKind : -1, fire[1] ? pd2.AACutInKind : -1, }; int[] cutinIndex = new int[] { fire[0] ? pd1.AACutInIndex : -1, fire[1] ? pd2.AACutInIndex : -1, }; if ( fire[0] || fire[1] ) { AACutin.Text = string.Format( "#{0}/{1}", fire[0] ? ( cutinIndex[0] + 1 ).ToString() : "-", fire[1] ? ( cutinIndex[1] + 1 ).ToString() : "-" ); AACutin.ImageAlign = ContentAlignment.MiddleLeft; AACutin.ImageIndex = (int)ResourceManager.EquipmentContent.HighAngleGun; StringBuilder sb = new StringBuilder(); sb.AppendLine( "対空カットイン" ); for ( int i = 0; i < 2; i++ ) { if ( fire[i] ) { sb.AppendFormat( "第{0}次: {1}\r\nカットイン種別: {2} ({3})\r\n", i + 1, ( i == 0 ? pd1 : pd2 ).AACutInShip.NameWithLevel, cutinID[i], Constants.GetAACutinKind( cutinID[i] ) ); } else { sb.AppendFormat( "第{0}次: (発動せず)\r\n", i + 1 ); } } ToolTipInfo.SetToolTip( AACutin, sb.ToString() ); } else { AACutin.Text = "対空砲火"; AACutin.ImageAlign = ContentAlignment.MiddleCenter; AACutin.ImageIndex = -1; ToolTipInfo.SetToolTip( AACutin, null ); } } } else { //艦対空戦闘発生せず AirStage2Friend.Text = "-"; AirStage2Friend.ForeColor = SystemColors.ControlText; ToolTipInfo.SetToolTip( AirStage2Friend, null ); AirStage2Enemy.Text = "-"; AirStage2Enemy.ForeColor = SystemColors.ControlText; ToolTipInfo.SetToolTip( AirStage2Enemy, null ); AACutin.Text = "対空砲火"; AACutin.ImageAlign = ContentAlignment.MiddleCenter; AACutin.ImageIndex = -1; ToolTipInfo.SetToolTip( AACutin, null ); } AirStage2Friend.ImageAlign = ContentAlignment.MiddleCenter; AirStage2Friend.ImageIndex = -1; AirStage2Enemy.ImageAlign = ContentAlignment.MiddleCenter; AirStage2Enemy.ImageIndex = -1; }
/// <summary> /// 航空戦情報を設定します。 /// </summary> private void SetAerialWarfare( PhaseAirBattle pd ) { //空対空戦闘 if ( pd.IsStage1Available ) { AirSuperiority.Text = Constants.GetAirSuperiority( pd.AirSuperiority ); int[] planeFriend = { pd.AircraftLostStage1Friend, pd.AircraftTotalStage1Friend }; AirStage1Friend.Text = string.Format( "-{0}/{1}", planeFriend[0], planeFriend[1] ); if ( planeFriend[1] > 0 && planeFriend[0] == planeFriend[1] ) AirStage1Friend.ForeColor = Color.Red; else AirStage1Friend.ForeColor = SystemColors.ControlText; int[] planeEnemy = { pd.AircraftLostStage1Enemy, pd.AircraftTotalStage1Enemy }; AirStage1Enemy.Text = string.Format( "-{0}/{1}", planeEnemy[0], planeEnemy[1] ); if ( planeEnemy[1] > 0 && planeEnemy[0] == planeEnemy[1] ) AirStage1Enemy.ForeColor = Color.Red; else AirStage1Enemy.ForeColor = SystemColors.ControlText; //触接 int touchFriend = pd.TouchAircraftFriend; if ( touchFriend != -1 ) { AirStage1Friend.ImageAlign = ContentAlignment.MiddleLeft; AirStage1Friend.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane; ToolTipInfo.SetToolTip( AirStage1Friend, "触接中: " + KCDatabase.Instance.MasterEquipments[touchFriend].Name ); } else { AirStage1Friend.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Friend.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage1Friend, null ); } int touchEnemy = pd.TouchAircraftEnemy; if ( touchEnemy != -1 ) { AirStage1Enemy.ImageAlign = ContentAlignment.MiddleLeft; AirStage1Enemy.ImageIndex = (int)ResourceManager.EquipmentContent.Seaplane; ToolTipInfo.SetToolTip( AirStage1Enemy, "触接中: " + KCDatabase.Instance.MasterEquipments[touchEnemy].Name ); } else { AirStage1Enemy.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Enemy.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage1Enemy, null ); } } else { //空対空戦闘発生せず AirSuperiority.Text = Constants.GetAirSuperiority( -1 ); AirStage1Friend.Text = "-"; AirStage1Friend.ForeColor = SystemColors.ControlText; AirStage1Friend.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Friend.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage1Friend, null ); AirStage1Enemy.Text = "-"; AirStage1Enemy.ForeColor = SystemColors.ControlText; AirStage1Enemy.ImageAlign = ContentAlignment.MiddleCenter; AirStage1Enemy.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage1Enemy, null ); } //艦対空戦闘 if ( pd.IsStage2Available ) { int[] planeFriend = { pd.AircraftLostStage2Friend, pd.AircraftTotalStage2Friend }; AirStage2Friend.Text = string.Format( "-{0}/{1}", planeFriend[0], planeFriend[1] ); if ( planeFriend[1] > 0 && planeFriend[0] == planeFriend[1] ) AirStage2Friend.ForeColor = Color.Red; else AirStage2Friend.ForeColor = SystemColors.ControlText; int[] planeEnemy = { pd.AircraftLostStage2Enemy, pd.AircraftTotalStage2Enemy }; AirStage2Enemy.Text = string.Format( "-{0}/{1}", planeEnemy[0], planeEnemy[1] ); if ( planeEnemy[1] > 0 && planeEnemy[0] == planeEnemy[1] ) AirStage2Enemy.ForeColor = Color.Red; else AirStage2Enemy.ForeColor = SystemColors.ControlText; //対空カットイン if ( pd.IsAACutinAvailable ) { int cutinID = pd.AACutInKind; int cutinIndex = pd.AACutInIndex; AACutin.Text = "#" + ( cutinIndex + 1 ); AACutin.ImageAlign = ContentAlignment.MiddleLeft; AACutin.ImageIndex = (int)ResourceManager.EquipmentContent.HighAngleGun; ToolTipInfo.SetToolTip( AACutin, string.Format( "対空カットイン: {0}\r\nカットイン種別: {1} ({2})", pd.AACutInShip.NameWithLevel, cutinID, Constants.GetAACutinKind( cutinID ) ) ); } else { AACutin.Text = "対空砲火"; AACutin.ImageAlign = ContentAlignment.MiddleCenter; AACutin.ImageIndex = -1; ToolTipInfo.SetToolTip( AACutin, null ); } } else { //艦対空戦闘発生せず AirStage2Friend.Text = "-"; AirStage2Friend.ForeColor = SystemColors.ControlText; AirStage2Enemy.Text = "-"; AirStage2Enemy.ForeColor = SystemColors.ControlText; AACutin.Text = "対空砲火"; AACutin.ImageAlign = ContentAlignment.MiddleCenter; AACutin.ImageIndex = -1; ToolTipInfo.SetToolTip( AACutin, null ); } AirStage2Friend.ImageAlign = ContentAlignment.MiddleCenter; AirStage2Friend.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage2Friend, null ); AirStage2Enemy.ImageAlign = ContentAlignment.MiddleCenter; AirStage2Enemy.ImageIndex = -1; ToolTipInfo.SetToolTip( AirStage2Enemy, null ); }