public PhaseInitial(BattleData data) : base(data) { if (RawData.api_active_deck()) { FriendFleetID = (int)RawData.api_active_deck[0]; } else { dynamic id = RawData.api_dock_id() ? RawData.api_dock_id : RawData.api_deck_id; FriendFleetID = id is string?int.Parse((string)id) : (int)id; } EnemyMembers = ArraySkip((int[])RawData.api_ship_ke); EnemyMembersInstance = EnemyMembers.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); EnemyMembersEscort = !RawData.api_ship_ke_combined() ? null : ArraySkip((int[])RawData.api_ship_ke_combined); EnemyMembersEscortInstance = EnemyMembersEscort == null ? null : EnemyMembersEscort.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); EnemyLevels = ArraySkip((int[])RawData.api_ship_lv); EnemyLevelsEscort = !RawData.api_ship_lv_combined() ? null : ArraySkip((int[])RawData.api_ship_lv_combined); InitialHPs = GetHPArray((int[])RawData.api_nowhps, !RawData.api_nowhps_combined() ? null : (int[])RawData.api_nowhps_combined); MaxHPs = GetHPArray((int[])RawData.api_maxhps, !RawData.api_maxhps_combined() ? null : (int[])RawData.api_maxhps_combined); EnemySlots = ((dynamic[])RawData.api_eSlot).Select(d => (int[])d).ToArray(); EnemySlotsInstance = EnemySlots.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemySlotsEscort = !RawData.api_eSlot_combined() ? null : ((dynamic[])RawData.api_eSlot_combined).Select(d => (int[])d).ToArray(); EnemySlotsEscortInstance = EnemySlotsEscort == null ? null : EnemySlotsEscort.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemyParameters = ((dynamic[])RawData.api_eParam).Select(d => (int[])d).ToArray(); EnemyParametersEscort = !RawData.api_eParam_combined() ? null : ((dynamic[])RawData.api_eParam_combined).Select(d => (int[])d).ToArray(); }
public PhaseInitial(BattleData data, string title) : base(data, title) { { dynamic id = RawData.api_dock_id() ? RawData.api_dock_id : RawData.api_deck_id() ? RawData.api_deck_id : 1; FriendFleetID = id is string?int.Parse((string)id) : (int)id; } if (FriendFleetID <= 0) { FriendFleetID = 1; } EnemyMembers = ArraySkip((int[])RawData.api_ship_ke); EnemyMembersInstance = EnemyMembers.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); EnemyMembersEscort = !RawData.api_ship_ke_combined() ? null : ArraySkip((int[])RawData.api_ship_ke_combined); EnemyMembersEscortInstance = EnemyMembersEscort == null ? null : EnemyMembersEscort.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); AllEnemyMembers = EnemyMembers.Concat(EnemyMembersEscort ?? Enumerable.Repeat(-1, 6)).ToArray(); AllEnemyMembersInstance = EnemyMembersInstance.Concat(EnemyMembersEscortInstance ?? Enumerable.Repeat <ShipDataMaster>(null, 6)).ToArray(); EnemyLevels = ArraySkip((int[])RawData.api_ship_lv); EnemyLevelsEscort = !RawData.api_ship_lv_combined() ? null : ArraySkip((int[])RawData.api_ship_lv_combined); InitialHPs = GetHPArray((int[])RawData.api_nowhps, !RawData.api_nowhps_combined() ? null : (int[])RawData.api_nowhps_combined); MaxHPs = GetHPArray((int[])RawData.api_maxhps, !RawData.api_maxhps_combined() ? null : (int[])RawData.api_maxhps_combined); EnemySlots = ((dynamic[])RawData.api_eSlot).Select(d => (int[])d).ToArray(); EnemySlotsInstance = EnemySlots.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemySlotsEscort = !RawData.api_eSlot_combined() ? null : ((dynamic[])RawData.api_eSlot_combined).Select(d => (int[])d).ToArray(); EnemySlotsEscortInstance = EnemySlotsEscort == null ? null : EnemySlotsEscort.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemyParameters = !RawData.api_eParam() ? null : ((dynamic[])RawData.api_eParam).Select(d => (int[])d).ToArray(); EnemyParametersEscort = !RawData.api_eParam_combined() ? null : ((dynamic[])RawData.api_eParam_combined).Select(d => (int[])d).ToArray(); { var rations = new List <int>(); if (RawData.api_combat_ration()) { rations.AddRange(((int[])RawData.api_combat_ration).Select(i => FriendFleet.Members.IndexOf(i))); } if (RawData.api_combat_ration_combined()) { rations.AddRange(((int[])RawData.api_combat_ration_combined).Select(i => FriendFleetEscort.Members.IndexOf(i) + 6)); } RationIndexes = rations.ToArray(); } }
public PhaseInitial(BattleData data, string title) : base(data, title) { { dynamic id = RawData.api_dock_id() ? RawData.api_dock_id : RawData.api_deck_id() ? RawData.api_deck_id : 1; FriendFleetID = id is string?int.Parse((string)id) : (int)id; } if (FriendFleetID <= 0) { FriendFleetID = 1; } int[] GetArrayOrDefault(string objectName) => !RawData.IsDefined(objectName) ? null : FixedArray((int[])RawData[objectName]); int[][] GetArraysOrDefault(string objectName, int bottomLength) { if (!RawData.IsDefined(objectName)) { return(null); } int[][] ret = new int[MemberCount][]; dynamic[] raw = (dynamic[])RawData[objectName]; for (int i = 0; i < ret.Length; i++) { if (i < raw.Length) { ret[i] = FixedArray((int[])raw[i], bottomLength); } else { ret[i] = Enumerable.Repeat(-1, bottomLength).ToArray(); } } return(ret); } EnemyMembers = GetArrayOrDefault("api_ship_ke"); EnemyMembersInstance = EnemyMembers.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); EnemyMembersEscort = GetArrayOrDefault("api_ship_ke_combined"); EnemyMembersEscortInstance = EnemyMembersEscort?.Select(id => KCDatabase.Instance.MasterShips[id]).ToArray(); EnemyLevels = GetArrayOrDefault("api_ship_lv"); EnemyLevelsEscort = GetArrayOrDefault("api_ship_lv_combined"); FriendInitialHPs = GetArrayOrDefault("api_f_nowhps"); FriendInitialHPsEscort = GetArrayOrDefault("api_f_nowhps_combined"); EnemyInitialHPs = GetArrayOrDefault("api_e_nowhps"); EnemyInitialHPsEscort = GetArrayOrDefault("api_e_nowhps_combined"); FriendMaxHPs = GetArrayOrDefault("api_f_maxhps"); FriendMaxHPsEscort = GetArrayOrDefault("api_f_maxhps_combined"); EnemyMaxHPs = GetArrayOrDefault("api_e_maxhps"); EnemyMaxHPsEscort = GetArrayOrDefault("api_e_maxhps_combined"); EnemySlots = GetArraysOrDefault("api_eSlot", 5); EnemySlotsInstance = EnemySlots.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemySlotsEscort = GetArraysOrDefault("api_eSlot_combined", 5); EnemySlotsEscortInstance = EnemySlotsEscort?.Select(part => part.Select(id => KCDatabase.Instance.MasterEquipments[id]).ToArray()).ToArray(); EnemyParameters = GetArraysOrDefault("api_eParam", 4); EnemyParametersEscort = GetArraysOrDefault("api_eParam_combined", 4); { var rations = new List <int>(); if (RawData.api_combat_ration()) { rations.AddRange(((int[])RawData.api_combat_ration).Select(i => FriendFleet.Members.IndexOf(i))); } if (RawData.api_combat_ration_combined()) { rations.AddRange(((int[])RawData.api_combat_ration_combined).Select(i => FriendFleetEscort.Members.IndexOf(i) + 6)); } RationIndexes = rations.ToArray(); } }