public bool Load(bool logging = true) { bool succeeded = true; ResourceManager.CopyDocumentFromArchive("Record/" + ShipParameter.FileName, MasterPath + "\\" + ShipParameter.FileName); succeeded &= EnemyFleet.Load(MasterPath); succeeded &= ShipParameter.Load(MasterPath); succeeded &= Construction.Load(MasterPath); succeeded &= ShipDrop.Load(MasterPath); succeeded &= Development.Load(MasterPath); succeeded &= Resource.Load(MasterPath); if (logging) { if (succeeded) { Utility.Logger.Add(2, "レコードをロードしました。"); } else { Utility.Logger.Add(3, "レコードのロードに失敗しました。"); } } return(succeeded); }
public IList <EnemyFleet> GetEncounters(int rpMap, int rpNode, EventMapDifficulty?rpDifficulty) { var rFleets = new Dictionary <long, EnemyFleet>(); using (var rCommand = r_Connection.CreateCommand()) { rCommand.CommandText = "SELECT composition.id AS id, group_concat(ship) AS ships, formation FROM abyssal.fleet JOIN abyssal.composition ON fleet.composition = composition.id WHERE map = @map AND node = @node AND difficulty = @difficulty GROUP BY id, formation;"; rCommand.Parameters.AddWithValue("@map", rpMap); rCommand.Parameters.AddWithValue("@node", rpNode); rCommand.Parameters.AddWithValue("@difficulty", (int?)rpDifficulty ?? 0); using (var rReader = rCommand.ExecuteReader()) while (rReader.Read()) { var rID = Convert.ToInt64(rReader["id"]); EnemyFleet rFleet; if (!rFleets.TryGetValue(rID, out rFleet)) { var rShips = (string)rReader["ships"]; var rShipIDs = rShips.Split(','); rFleets.Add(rID, rFleet = new EnemyFleet(rShipIDs)); } var rFormation = (Formation)Convert.ToInt32(rReader["formation"]); rFleet.Formations.Add(rFormation); } } return(rFleets.Values.ToArray()); }
public bool Save(bool logging = true) { //api_start2がロード済みのときのみ if (KCDatabase.Instance.MasterShips.Count == 0) { return(false); } bool succeeded = true; succeeded &= EnemyFleet.Save(MasterPath); succeeded &= ShipParameter.Save(MasterPath); succeeded &= Construction.Save(MasterPath); succeeded &= ShipDrop.Save(MasterPath); succeeded &= Development.Save(MasterPath); succeeded &= Resource.Save(MasterPath); if (logging) { if (succeeded) { Utility.Logger.Add(2, LoggerRes.SavedRecords); } else { Utility.Logger.Add(3, LoggerRes.FailedSavingRecords); } } return(succeeded); }
public bool Load(bool logging = true) { bool succeeded = true; ResourceManager.CopyFromArchive("Record/" + ShipParameter.FileName, MasterPath + "\\" + ShipParameter.FileName); succeeded &= EnemyFleet.Load(MasterPath); succeeded &= ShipParameter.Load(MasterPath); succeeded &= Construction.Load(MasterPath); succeeded &= ShipDrop.Load(MasterPath); succeeded &= Development.Load(MasterPath); succeeded &= Resource.Load(MasterPath); if (logging) { if (succeeded) { Utility.Logger.Add(2, LoggerRes.LoadedRecords); } else { Utility.Logger.Add(3, LoggerRes.FailedLoadingRecords); } } return(succeeded); }
public void Save() { //api_start2がロード済みのときのみ if (KCDatabase.Instance.MasterShips.Count == 0) { return; } bool successed = true; successed &= EnemyFleet.Save(MasterPath); successed &= ShipParameter.Save(MasterPath); successed &= Construction.Save(MasterPath); successed &= ShipDrop.Save(MasterPath); successed &= Development.Save(MasterPath); successed &= Resource.Save(MasterPath); if (successed) { Utility.Logger.Add(2, "レコードをセーブしました。"); } else { Utility.Logger.Add(2, "レコードのセーブに失敗しました。"); } }
public void setFleets(PlayerFleet p_Fleet, EnemyFleet e_Fleet) { Player = p_Fleet; Enemy = e_Fleet; P_Ship_Array = Player.get_Fleet(); E_Ship_Array = Enemy.get_Fleet(); }
public BattleManager(PlayerFleet p_Fleet, EnemyFleet e_Fleet) { Player = p_Fleet; Enemy = e_Fleet; P_Ship_Array = Player.get_Fleet(); E_Ship_Array = Enemy.get_Fleet(); }
// Start is called before the first frame update void Start() { level = FindObjectOfType <Level>(); level.CountActiveEnemies(); row = FindObjectOfType <EnemyFleet>(); int rand = UnityEngine.Random.Range(5, 15); Invoke("Fire", rand); }
private void TorpedoAttack(sortie_battle.torpedo api) { if (api == null) { return; } NightOrTorpedo.ArrayZip(api.api_fdam, 1, Delegates.SetDamage); EnemyFleet.ArrayZip(api.api_edam, 1, Delegates.SetDamage); NightOrTorpedo.ArrayZip(api.api_fydam, 1, Delegates.SetGiveDamage); EnemyFleet.ArrayZip(api.api_eydam, 1, Delegates.SetGiveDamage); }
private void EndApplyBattle() { Fleet1.ForEach(Delegates.OnEndUpdate); Fleet2?.ForEach(Delegates.OnEndUpdate); EnemyFleet.ForEach(Delegates.OnEndUpdate); //mvp Fleet1.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); Fleet2?.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); EnemyFleet.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); OnAllPropertyChanged(); }
private void SupportAttack(sortie_battle.support api) { if (api == null) { return; } AirBattle(api.api_support_airatack, true); if (api.api_support_hourai != null) { EnemyFleet.ArrayZip(api.api_support_hourai.api_damage, 1, Delegates.SetDamage); } }
private void AirBaseAttack(sortie_battle.air_base_attack[] api) { if (api == null) { return; } foreach (var attack in api) { if (attack.api_stage3 != null) { EnemyFleet.ArrayZip(attack.api_stage3.api_edam, 1, Delegates.SetDamage); } if (attack.api_stage3_combined != null) { EnemyFleet2.ArrayZip(attack.api_stage3_combined.api_edam, 1, Delegates.SetDamage); } } }
public void Load() { bool successed = true; successed &= EnemyFleet.Load(MasterPath); successed &= ShipParameter.Load(MasterPath); //successed &= Construction.Load( MasterPath ); //successed &= ShipDrop.Load( MasterPath ); //successed &= Development.Load( MasterPath ); //successed &= Resource.Load( MasterPath ); if (successed) { Utility.Logger.Add(2, "レコードをロードしました。"); } else { Utility.Logger.Add(3, "レコードのロードに失敗しました。"); } }
private void EndApplyBattle() { void OnEndUpdate(ShipInBattle ship) { ship.EndUpdate(); ship.IsMostDamage = false; } Fleet1.ForEach(OnEndUpdate); Fleet2?.ForEach(OnEndUpdate); EnemyFleet.ForEach(OnEndUpdate); EnemyFleet2?.ForEach(OnEndUpdate); //mvp Fleet1.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); Fleet2?.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); EnemyFleet.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); EnemyFleet2?.TakeMaxOrDefault(x => x.DamageGiven).SetMvp(); OnAllPropertyChanged(); }
public void AutoResolve(FleetManager fleetManager, EnemyFleet enemyFleet) { //determine type of attack float rnd = Random.Range(0.0f, 10.0f); if (rnd > 8) { } else if (rnd > 5) { } else if (rnd > 2) { } else { } //do math for resolution //give resolution }
void nullifier() { Player = null; Enemy = null; isActive = false; Turns = null; CurrentTurn.c_Ship = null; CurrentTurn.c_Wep = null; CurrentTurn.t_Ship = null; P_Ship_Array = null; E_Ship_Array = null; active_Ship = null; act_Ship = 0; en_Ship = null; en_Turn = null; TurnTransScript = null; thisScene = null; set_Action = false; c_Action_Set = false; playerSets = false; c_Battle = battle_State.bNull; aSelect = null; }
public override void CommandShips() { // see if we can disrupt an opponent foreach (var s in Fleet.AvailableShips) { var occupiedNeighbors = s.CurrentMapCell.Neighbors.Where(n => n.IsOccupiedByOpponent && !EnemyFleet.IsReturningHome(n.ship)); MapCell bestMove = null; double best = 0.0; foreach (var n in occupiedNeighbors) { var zone = new Zone(n.position, 5); if (zone.SafetyRatio < MyBot.HParams[Parameters.SAFETY_RATIO]) { continue; } if (GameInfo.MyShipsCount * 1.1 < GameInfo.OpponentShipsCount) { continue; } if (n.halite < s.CellHalite) { continue; } if (GameInfo.LowestNeighboringOpponentHalite(n) < s.halite) { continue; } if (Safety.IsSafeMove(s, n)) { var val = (n.halite * .25 + n.ship.halite) - (s.CellHalite * .25 + s.halite); if (val > best) { bestMove = n; best = val; } } } if (bestMove != null) { Fleet.AddMove(s.Move(bestMove, "trying to disrupt opponent from Combat logic")); } } }
private void Awake() { e_fleet = this.gameObject.AddComponent <EnemyFleet>(); }
private AirCombat AirBattle(sortie_battle.airbattle api, bool issupport) { if (api == null) { return(null); } AirCombat combat = new AirCombat(); ShipInBattle friendtorpedo = null, friendbomb = null, enemytorpedo = null, enemybomb = null; if (!issupport) { if (api.api_stage1 != null)//stage1一直都有吧 { combat.AirControl = (AirControl)api.api_stage1.api_disp_seiku; combat.FriendStage1 = new LimitedValue(api.api_stage1.api_f_count - api.api_stage1.api_f_lostcount, api.api_stage1.api_f_count); combat.EnemyStage1 = new LimitedValue(api.api_stage1.api_e_count - api.api_stage1.api_e_lostcount, api.api_stage1.api_e_count); } if (api.api_stage2 != null) { combat.FriendStage2 = new LimitedValue(api.api_stage2.api_f_count - api.api_stage2.api_f_lostcount, api.api_stage2.api_f_count); combat.EnemyStage2 = new LimitedValue(api.api_stage2.api_e_count - api.api_stage2.api_e_lostcount, api.api_stage2.api_e_count); } friendtorpedo = Fleet1.Where(x => x.CanAerialTorpedo).TakeIfSingle(); friendbomb = Fleet1.Where(x => x.CanAerialBomb).TakeIfSingle(); enemytorpedo = EnemyFleet.Where(x => x.CanAerialTorpedo).TakeIfSingle(); enemybomb = EnemyFleet.Where(x => x.CanAerialBomb).TakeIfSingle(); } if (api.api_stage3 != null) { if (!issupport) { Fleet1.ArrayZip(api.api_stage3.api_fdam, 1, Delegates.SetDamage); } EnemyFleet.ArrayZip(api.api_stage3.api_edam, 1, Delegates.SetDamage); if (!issupport) { for (int i = 1; i < api.api_stage3.api_fdam.Length; i++) { if (api.api_stage3.api_frai_flag[i] != 0) { if (api.api_stage3.api_fbak_flag[i] != 0) { if (enemytorpedo == enemybomb && enemytorpedo != null) { enemytorpedo.DamageGiven += (int)api.api_stage3.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_fdam[i]; } } else if (enemytorpedo != null) { enemytorpedo.DamageGiven += (int)api.api_stage3.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_fdam[i]; } } else if (api.api_stage3.api_fbak_flag[i] != 0) { if (enemybomb != null) { enemybomb.DamageGiven += (int)api.api_stage3.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_fdam[i]; } } } for (int i = 1; i < api.api_stage3.api_edam.Length; i++) { if (api.api_stage3.api_erai_flag[i] != 0) { if (api.api_stage3.api_ebak_flag[i] != 0) { if (friendtorpedo == friendbomb && friendtorpedo != null) { friendtorpedo.DamageGiven += (int)api.api_stage3.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3.api_edam[i]; } } else if (friendtorpedo != null) { friendtorpedo.DamageGiven += (int)api.api_stage3.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3.api_edam[i]; } } else if (api.api_stage3.api_ebak_flag[i] != 0) { if (friendbomb != null) { friendbomb.DamageGiven += (int)api.api_stage3.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3.api_edam[i]; } } } } } if (api.api_stage3_combined != null) { if (api.api_stage3_combined.api_fdam != null) { Fleet2?.ArrayZip(api.api_stage3_combined.api_fdam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3_combined.api_fdam.Length; i++) { if (api.api_stage3_combined.api_frai_flag[i] != 0) { if (api.api_stage3_combined.api_fbak_flag[i] != 0) { if (enemytorpedo == enemybomb && enemytorpedo != null) { enemytorpedo.DamageGiven += (int)api.api_stage3_combined.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3_combined.api_fdam[i]; } } else if (enemytorpedo != null) { enemytorpedo.DamageGiven += (int)api.api_stage3_combined.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3_combined.api_fdam[i]; } } else if (api.api_stage3_combined.api_fbak_flag[i] != 0) { if (enemybomb != null) { enemybomb.DamageGiven += (int)api.api_stage3_combined.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3_combined.api_fdam[i]; } } } } if (api.api_stage3_combined.api_edam != null) { EnemyFleet2?.ArrayZip(api.api_stage3_combined.api_edam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3_combined.api_edam.Length; i++) { if (api.api_stage3_combined.api_erai_flag[i] != 0) { if (api.api_stage3_combined.api_ebak_flag[i] != 0) { if (friendtorpedo == friendbomb && friendtorpedo != null) { friendtorpedo.DamageGiven += (int)api.api_stage3_combined.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3_combined.api_edam[i]; } } else if (friendtorpedo != null) { friendtorpedo.DamageGiven += (int)api.api_stage3_combined.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3_combined.api_edam[i]; } } else if (api.api_stage3_combined.api_ebak_flag[i] != 0) { if (friendbomb != null) { friendbomb.DamageGiven += (int)api.api_stage3_combined.api_edam[i]; } else { AnonymousFriendDamage += (int)api.api_stage3_combined.api_edam[i]; } } } } } return(combat); }
private void JetAttack(sortie_battle.airbattle api) { if (api == null) { return; } ShipInBattle friendattack = null, enemyattack = null; if (api.api_plane_from[0]?.Length == 1 && api.api_plane_from[0][0] > 0) { friendattack = Fleet1[api.api_plane_from[0][0] - 1]; } if (api.api_plane_from.Length >= 2 && api.api_plane_from[1]?.Length == 1 && api.api_plane_from[1][0] > 0) { enemyattack = EnemyFleet[api.api_plane_from[1][0] - 1]; } if (api.api_stage3 != null) { if (api.api_stage3.api_edam != null) { EnemyFleet.ArrayZip(api.api_stage3.api_edam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3.api_edam.Length; i++) { if (friendattack != null) { friendattack.DamageGiven += (int)api.api_stage3.api_edam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_edam[i]; } } } if (api.api_stage3.api_fdam != null) { Fleet1.ArrayZip(api.api_stage3.api_fdam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3.api_fdam.Length; i++) { if (enemyattack != null) { enemyattack.DamageGiven += (int)api.api_stage3.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_fdam[i]; } } } } if (api.api_stage3_combined != null) { if (api.api_stage3_combined.api_fdam != null) { Fleet2?.ArrayZip(api.api_stage3.api_fdam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3.api_fdam.Length; i++) { if (enemyattack != null) { enemyattack.DamageGiven += (int)api.api_stage3.api_fdam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_fdam[i]; } } } if (api.api_stage3_combined.api_edam != null) { EnemyFleet2?.ArrayZip(api.api_stage3.api_edam, 1, Delegates.SetDamage); for (int i = 1; i < api.api_stage3.api_edam.Length; i++) { if (friendattack != null) { friendattack.DamageGiven += (int)api.api_stage3.api_edam[i]; } else { AnonymousEnemyDamage += (int)api.api_stage3.api_edam[i]; } } } } }
public Battle(sortie_battle api, CombinedFleetType fleettype, MapNodeType battletype, BattleManager source) { FleetType = fleettype; BattleType = battletype; Fleet1 = (source.SortieFleet1?.Ships ?? Staff.Current.Homeport.Fleets[api.api_deck_id + api.api_dock_id].Ships) .Select(x => new ShipInBattle(x)).ToArray(); Fleet2 = source.SortieFleet2?.Ships .Select(x => new ShipInBattle(x)).ToArray(); if (source.SortieFleet1 == null)//演习 { Staff.Current.Homeport.Fleets[api.api_deck_id + api.api_dock_id].Ships.ForEach(x => x.IgnoreNextCondition()); } if (api.api_formation != null) { FriendFormation = (Formation)api.api_formation[0]; EnemyFormation = (Formation)api.api_formation[1]; Direction = (Direction)api.api_formation[2]; } bool iscombined = fleettype != CombinedFleetType.None; bool isenemycombined = battletype == MapNodeType.Combined || battletype == MapNodeType.CombinedBOSS; EnemyFleet = api.api_ship_ke.Where(x => x != -1) .Select((x, i) => new ShipInBattle { ShipInfo = Staff.Current.MasterData.ShipInfo[x], Level = api.api_ship_lv[i + 1], Equipments = api.api_eSlot[i].Select(y => Staff.Current.MasterData.EquipInfo[y]).Where(y => y != null).ToArray(), Firepower = api.api_eParam[i][0], Torpedo = api.api_eParam[i][1], AA = api.api_eParam[i][2], Armor = api.api_eParam[i][3] }) .ToArray(); EnemyFleet2 = api.api_ship_ke_combined?.Where(x => x != -1) .Select((x, i) => new ShipInBattle { ShipInfo = Staff.Current.MasterData.ShipInfo[x], Level = api.api_ship_lv_combined[i + 1], Equipments = api.api_eSlot_combined[i].Select(y => Staff.Current.MasterData.EquipInfo[y]).Where(y => y != null).ToArray(), Firepower = api.api_eParam_combined[i][0], Torpedo = api.api_eParam_combined[i][1], AA = api.api_eParam_combined[i][2], Armor = api.api_eParam_combined[i][3] }) .ToArray(); EnemyShipIds = api.api_ship_ke.Skip(1).ConcatNotNull(api.api_ship_ke_combined?.Skip(1)).ToArray(); Fleet1.ArrayZip(api.api_maxhps, 1, Delegates.SetMaxHP); Fleet2?.ArrayZip(api.api_maxhps_combined, 1, Delegates.SetMaxHP); EnemyFleet.ArrayZip(api.api_maxhps, 7, Delegates.SetMaxHP); EnemyFleet2?.ArrayZip(api.api_maxhps_combined, 7, Delegates.SetMaxHP); Fleet1.ArrayZip(api.api_nowhps, 1, Delegates.SetStartHP); Fleet2?.ArrayZip(api.api_nowhps_combined, 1, Delegates.SetStartHP); EnemyFleet.ArrayZip(api.api_nowhps, 7, Delegates.SetStartHP); EnemyFleet2?.ArrayZip(api.api_nowhps_combined, 7, Delegates.SetStartHP); api.api_escape_idx?.ForEach(x => Fleet1[x - 1].IsEscaped = true); api.api_escape_idx_combined?.ForEach(x => Fleet2[x - 1].IsEscaped = true); JetAttack(api.api_air_base_injection); JetAttack(api.api_injection_kouku); AirBaseAttack(api.api_air_base_attack); AirCombat1 = AirBattle(api.api_kouku, false); AirCombat2 = AirBattle(api.api_kouku2, false); SupportAttack(api.api_support_info); FireAttack(api.api_opening_taisen, NightOrTorpedo); if (isenemycombined) { ECTorpedoAttack(api.api_opening_atack); } else { TorpedoAttack(api.api_opening_atack); } if (isenemycombined) { ECFireAttack(api.api_hougeki1); ECFireAttack(api.api_hougeki2); ECFireAttack(api.api_hougeki3); } else { switch (fleettype) { case CombinedFleetType.None: FireAttack(api.api_hougeki1, Fleet1); FireAttack(api.api_hougeki2, Fleet1); break; case CombinedFleetType.Carrier: case CombinedFleetType.Transport: FireAttack(api.api_hougeki1, Fleet2); FireAttack(api.api_hougeki2, Fleet1); FireAttack(api.api_hougeki3, Fleet1); break; case CombinedFleetType.Surface: FireAttack(api.api_hougeki1, Fleet1); FireAttack(api.api_hougeki2, Fleet1); FireAttack(api.api_hougeki3, Fleet2); break; } } if (isenemycombined) { ECTorpedoAttack(api.api_raigeki); } else { TorpedoAttack(api.api_raigeki); } NightBattle(api); }