Пример #1
0
        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);
        }
Пример #2
0
 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;
 }