Exemple #1
0
        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, false);
            Shelling2      = new PhaseShelling(this, "第二次砲撃戦", 2, "2", true, true);
            Torpedo        = new PhaseTorpedo(this, "雷撃戦", 3);
            Shelling3      = new PhaseShelling(this, "第三次砲撃戦", 4, "3", false, false);


            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);
            Torpedo.EmulateBattle(_resultHPs, _attackDamages);
            Shelling3.EmulateBattle(_resultHPs, _attackDamages);
        }
Exemple #2
0
        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, false);
            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", false);
            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);

            NightInitial    = new PhaseNightInitial(this, "夜戦開始", false);
            FriendlySupport = new PhaseFriendlySupport(this, "友軍艦隊援護");
            NightSupport    = new PhaseSupport(this, "夜間支援攻撃", true);
            NightBattle     = new PhaseNightBattle(this, "第一次夜戦", 1);
            NightBattle2    = new PhaseNightBattle(this, "第二次夜戦", 2);


            if (NextToDay)
            {
                JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "噴式基地航空隊攻撃");
                JetAirBattle     = new PhaseJetAirBattle(this, "噴式航空戦");
                BaseAirAttack    = new PhaseBaseAirAttack(this, "基地航空隊攻撃");
                Support          = new PhaseSupport(this, "支援攻撃");
                AirBattle        = new PhaseAirBattle(this, "航空戦");
                OpeningASW       = new PhaseOpeningASW(this, "先制対潜");
                OpeningTorpedo   = new PhaseTorpedo(this, "先制雷撃", 0);
                Shelling1        = new PhaseShelling(this, "第一次砲撃戦", 1, "1");
                Shelling2        = new PhaseShelling(this, "第二次砲撃戦", 2, "2");
                Torpedo          = new PhaseTorpedo(this, "雷撃戦", 3);
            }

            foreach (var phase in GetPhases())
            {
                phase.EmulateBattle(_resultHPs, _attackDamages);
            }
        }
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            NightSupport = new PhaseSupport(this, "夜间支援攻击", true);
            NightBattle  = new PhaseNightBattle(this, "第一次夜战", 1, false);
            NightBattle2 = new PhaseNightBattle(this, "第二次夜战", 2, false);


            if (NextToDay)
            {
                JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "喷式基地航空队攻击");
                JetAirBattle     = new PhaseJetAirBattle(this, "喷式航空战");
                BaseAirAttack    = new PhaseBaseAirAttack(this, "基地航空队攻击");
                Support          = new PhaseSupport(this, "支援攻击");
                AirBattle        = new PhaseAirBattle(this, "航空战");
                OpeningASW       = new PhaseOpeningASW(this, "先制对潜");
                OpeningTorpedo   = new PhaseTorpedo(this, "开幕雷击", 0);
                Shelling1        = new PhaseShelling(this, "第一次炮击战", 1, "1");
                Shelling2        = new PhaseShelling(this, "第二次炮击战", 2, "2");
                Torpedo          = new PhaseTorpedo(this, "雷击战", 3);
            }

            foreach (var phase in GetPhases())
            {
                phase.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);
        }
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            Support     = new PhaseSupport(this, "支援攻撃", false);
            NightBattle = new PhaseNightBattle(this, "夜戦", 0, false);


            foreach (var phase in GetPhases())
            {
                phase.EmulateBattle(_resultHPs, _attackDamages);
            }
        }
Exemple #7
0
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            NightInitial    = new PhaseNightInitial(this, "夜戦開始", true);
            FriendlySupport = new PhaseFriendlySupport(this, "友軍艦隊援護");
            Support         = new PhaseSupport(this, "夜間支援攻撃", true);
            NightBattle     = new PhaseNightBattle(this, "夜戦", 0);


            foreach (var phase in GetPhases())
            {
                phase.EmulateBattle(_resultHPs, _attackDamages);
            }
        }
Exemple #8
0
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "噴式基地航空隊攻撃");
            JetAirBattle     = new PhaseJetAirBattle(this, "噴式航空戦");
            BaseAirAttack    = new PhaseBaseAirAttack(this, "基地航空隊攻撃");
            AirBattle        = new PhaseAirBattle(this, "第一次航空戦");
            Support          = new PhaseSupport(this, "支援攻撃");
            AirBattle2       = new PhaseAirBattle(this, "第二次航空戦", "2");

            foreach (var phase in GetPhases())
            {
                phase.EmulateBattle(_resultHPs, _attackDamages);
            }
        }
        public override void LoadFromResponse(string apiname, dynamic data)
        {
            base.LoadFromResponse(apiname, (object)data);

            JetBaseAirAttack = new PhaseJetBaseAirAttack(this, "噴式基地航空隊攻撃");
            JetAirBattle     = new PhaseJetAirBattle(this, "噴式航空戦");
            BaseAirAttack    = new PhaseBaseAirAttack(this, "基地航空隊攻撃");
            AirBattle        = new PhaseAirBattle(this, "航空戦");
            Support          = new PhaseSupport(this, "支援攻撃");
            OpeningASW       = new PhaseOpeningASW(this, "先制対潜");
            OpeningTorpedo   = new PhaseTorpedo(this, "先制雷撃", 0);
            Shelling1        = new PhaseShelling(this, "第一次砲撃戦", 1, "1");
            Torpedo          = new PhaseTorpedo(this, "雷撃戦", 2);
            Shelling2        = new PhaseShelling(this, "第二次砲撃戦", 3, "2");
            Shelling3        = new PhaseShelling(this, "第三次砲撃戦", 4, "3");

            foreach (var phase in GetPhases())
            {
                phase.EmulateBattle(_resultHPs, _attackDamages);
            }
        }
Exemple #10
0
		/// <summary>
		/// 両軍のHPゲージを設定します。
		/// </summary>
		private void SetHPBar(BattleData bd)
		{

			KCDatabase db = KCDatabase.Instance;
			bool isPractice = bd.IsPractice;
			bool isFriendCombined = bd.IsFriendCombined;
			bool isEnemyCombined = bd.IsEnemyCombined;
			bool isBaseAirRaid = bd.IsBaseAirRaid;
			bool hasFriend7thShip = bd.Initial.FriendMaxHPs.Count(hp => hp > 0) == 7;

			var initial = bd.Initial;
			var resultHPs = bd.ResultHPs;
			var attackDamages = bd.AttackDamages;


			foreach (var bar in HPBars)
				bar.SuspendUpdate();


			void EnableHPBar(int index, int initialHP, int resultHP, int maxHP)
			{
				HPBars[index].Value = resultHP;
				HPBars[index].PrevValue = initialHP;
				HPBars[index].MaximumValue = maxHP;
				HPBars[index].BackColor = SystemColors.Control;
				HPBars[index].Visible = true;
			}

			void DisableHPBar(int index)
			{
				HPBars[index].Visible = false;
			}



			// friend main
			for (int i = 0; i < initial.FriendInitialHPs.Length; i++)
			{
				int refindex = BattleIndex.Get(BattleSides.FriendMain, i);

				if (initial.FriendInitialHPs[i] != -1)
				{
					EnableHPBar(refindex, initial.FriendInitialHPs[i], resultHPs[refindex], initial.FriendMaxHPs[i]);

					string name;
					bool isEscaped;
					bool isLandBase;

					var bar = HPBars[refindex];

					if (isBaseAirRaid)
					{
						name = string.Format("第{0}基地", i + 1);
						isEscaped = false;
						isLandBase = true;
						bar.Text = "LB";        //note: Land Base (Landing Boat もあるらしいが考えつかなかったので)

					}
					else
					{
						ShipData ship = bd.Initial.FriendFleet.MembersInstance[i];
						name = ship.NameWithLevel;
						isEscaped = bd.Initial.FriendFleet.EscapedShipList.Contains(ship.MasterID);
						isLandBase = ship.MasterShip.IsLandBase;
						bar.Text = Constants.GetShipClassClassification(ship.MasterShip.ShipType);
					}

					ToolTipInfo.SetToolTip(bar, string.Format
						("{0}\r\nHP: ({1} → {2})/{3} ({4}) [{5}]\r\n与ダメージ: {6}\r\n\r\n{7}",
						name,
						Math.Max(bar.PrevValue, 0),
						Math.Max(bar.Value, 0),
						bar.MaximumValue,
						bar.Value - bar.PrevValue,
						Constants.GetDamageState((double)bar.Value / bar.MaximumValue, isPractice, isLandBase, isEscaped),
						attackDamages[refindex],
						bd.GetBattleDetail(refindex)
						));

					if (isEscaped) bar.BackColor = Color.Silver;
					else bar.BackColor = SystemColors.Control;
				}
				else
				{
					DisableHPBar(refindex);
				}
			}


			// enemy main
			for (int i = 0; i < initial.EnemyInitialHPs.Length; i++)
			{
				int refindex = BattleIndex.Get(BattleSides.EnemyMain, i);

				if (initial.EnemyInitialHPs[i] != -1)
				{
					EnableHPBar(refindex, initial.EnemyInitialHPs[i], resultHPs[refindex], initial.EnemyMaxHPs[i]);
					ShipDataMaster ship = bd.Initial.EnemyMembersInstance[i];

					var bar = HPBars[refindex];
					bar.Text = Constants.GetShipClassClassification(ship.ShipType);

					ToolTipInfo.SetToolTip(bar,
						string.Format("{0} Lv. {1}\r\nHP: ({2} → {3})/{4} ({5}) [{6}]\r\n\r\n{7}",
							ship.NameWithClass,
							initial.EnemyLevels[i],
							Math.Max(bar.PrevValue, 0),
							Math.Max(bar.Value, 0),
							bar.MaximumValue,
							bar.Value - bar.PrevValue,
							Constants.GetDamageState((double)bar.Value / bar.MaximumValue, isPractice, ship.IsLandBase),
							bd.GetBattleDetail(refindex)
							)
						);
				}
				else
				{
					DisableHPBar(refindex);
				}
			}


			// friend escort
			if (isFriendCombined)
			{
				FleetFriendEscort.Visible = true;

				for (int i = 0; i < initial.FriendInitialHPsEscort.Length; i++)
				{
					int refindex = BattleIndex.Get(BattleSides.FriendEscort, i);

					if (initial.FriendInitialHPsEscort[i] != -1)
					{
						EnableHPBar(refindex, initial.FriendInitialHPsEscort[i], resultHPs[refindex], initial.FriendMaxHPsEscort[i]);

						ShipData ship = bd.Initial.FriendFleetEscort.MembersInstance[i];
						bool isEscaped = bd.Initial.FriendFleetEscort.EscapedShipList.Contains(ship.MasterID);

						var bar = HPBars[refindex];
						bar.Text = Constants.GetShipClassClassification(ship.MasterShip.ShipType);

						ToolTipInfo.SetToolTip(bar, string.Format(
							"{0} Lv. {1}\r\nHP: ({2} → {3})/{4} ({5}) [{6}]\r\n与ダメージ: {7}\r\n\r\n{8}",
							ship.MasterShip.NameWithClass,
							ship.Level,
							Math.Max(bar.PrevValue, 0),
							Math.Max(bar.Value, 0),
							bar.MaximumValue,
							bar.Value - bar.PrevValue,
							Constants.GetDamageState((double)bar.Value / bar.MaximumValue, isPractice, ship.MasterShip.IsLandBase, isEscaped),
							attackDamages[refindex],
							bd.GetBattleDetail(refindex)
							));

						if (isEscaped) bar.BackColor = Color.Silver;
						else bar.BackColor = SystemColors.Control;
					}
					else
					{
						DisableHPBar(refindex);
					}
				}

			}
			else
			{
				FleetFriendEscort.Visible = false;

				foreach (var i in BattleIndex.FriendEscort.Skip(Math.Max(bd.Initial.FriendFleet.Members.Count - 6, 0)))
					DisableHPBar(i);
			}

			MoveHPBar(hasFriend7thShip);



			// enemy escort
			if (isEnemyCombined)
			{
				FleetEnemyEscort.Visible = true;

				for (int i = 0; i < 6; i++)
				{
					int refindex = BattleIndex.Get(BattleSides.EnemyEscort, i);

					if (initial.EnemyInitialHPsEscort[i] != -1)
					{
						EnableHPBar(refindex, initial.EnemyInitialHPsEscort[i], resultHPs[refindex], initial.EnemyMaxHPsEscort[i]);

						ShipDataMaster ship = bd.Initial.EnemyMembersEscortInstance[i];

						var bar = HPBars[refindex];
						bar.Text = Constants.GetShipClassClassification(ship.ShipType);

						ToolTipInfo.SetToolTip(bar,
							string.Format("{0} Lv. {1}\r\nHP: ({2} → {3})/{4} ({5}) [{6}]\r\n\r\n{7}",
								ship.NameWithClass,
								bd.Initial.EnemyLevelsEscort[i],
								Math.Max(bar.PrevValue, 0),
								Math.Max(bar.Value, 0),
								bar.MaximumValue,
								bar.Value - bar.PrevValue,
								Constants.GetDamageState((double)bar.Value / bar.MaximumValue, isPractice, ship.IsLandBase),
								bd.GetBattleDetail(refindex)
								)
							);
					}
					else
					{
						DisableHPBar(refindex);
					}
				}

			}
			else
			{
				FleetEnemyEscort.Visible = false;

				foreach (var i in BattleIndex.EnemyEscort)
					DisableHPBar(i);
			}




			if ((isFriendCombined || (hasFriend7thShip && !Utility.Configuration.Config.FormBattle.Display7thAsSingleLine)) && isEnemyCombined)
			{
				foreach (var bar in HPBars)
				{
					bar.Size = SmallBarSize;
					bar.Text = null;
				}
			}
			else
			{
				bool showShipType = Utility.Configuration.Config.FormBattle.ShowShipTypeInHPBar;

				foreach (var bar in HPBars)
				{
					bar.Size = DefaultBarSize;

					if (!showShipType)
						bar.Text = "HP:";
				}
			}


			{   // support
				PhaseSupport support = null;

				if (bd is BattleDayFromNight bddn)
				{
					if (bddn.NightSupport?.IsAvailable ?? false)
						support = bddn.NightSupport;
				}
				if (support == null)
					support = bd.Support;

				if (support?.IsAvailable ?? false)
				{

					switch (support.SupportFlag)
					{
						case 1:
							FleetFriend.ImageIndex = (int)ResourceManager.EquipmentContent.CarrierBasedTorpedo;
							break;
						case 2:
							FleetFriend.ImageIndex = (int)ResourceManager.EquipmentContent.MainGunL;
							break;
						case 3:
							FleetFriend.ImageIndex = (int)ResourceManager.EquipmentContent.Torpedo;
							break;
						case 4:
							FleetFriend.ImageIndex = (int)ResourceManager.EquipmentContent.DepthCharge;
							break;
						default:
							FleetFriend.ImageIndex = (int)ResourceManager.EquipmentContent.Unknown;
							break;
					}

					FleetFriend.ImageAlign = ContentAlignment.MiddleLeft;
					ToolTipInfo.SetToolTip(FleetFriend, "支援攻撃\r\n" + support.GetBattleDetail());

					if ((isFriendCombined || hasFriend7thShip) && isEnemyCombined)
						FleetFriend.Text = "自軍";
					else
						FleetFriend.Text = "自軍艦隊";

				}
				else
				{
					FleetFriend.ImageIndex = -1;
					FleetFriend.ImageAlign = ContentAlignment.MiddleCenter;
					FleetFriend.Text = "自軍艦隊";
					ToolTipInfo.SetToolTip(FleetFriend, null);

				}
			}


			if (bd.Initial.IsBossDamaged)
				HPBars[BattleIndex.EnemyMain1].BackColor = Color.MistyRose;

			if (!isBaseAirRaid)
			{
				foreach (int i in bd.MVPShipIndexes)
					HPBars[BattleIndex.Get(BattleSides.FriendMain, i)].BackColor = Color.Moccasin;

				if (isFriendCombined)
				{
					foreach (int i in bd.MVPShipCombinedIndexes)
						HPBars[BattleIndex.Get(BattleSides.FriendEscort, i)].BackColor = Color.Moccasin;
				}
			}

			foreach (var bar in HPBars)
				bar.ResumeUpdate();
		}