Beispiel #1
0
        protected virtual RaigekiInfo getRaigekiData(bool enemyFlag)
        {
            RaigekiInfo    raigekiInfo = new RaigekiInfo();
            List <int>     list;
            BattleBaseData battleBaseData;
            Dictionary <int, BattleShipSubInfo> dictionary;
            BattleBaseData battleBaseData2;
            Dictionary <int, BattleShipSubInfo> dictionary2;

            if (enemyFlag)
            {
                list            = e_AtkIdxs;
                battleBaseData  = E_Data;
                dictionary      = E_SubInfo;
                battleBaseData2 = F_Data;
                dictionary2     = F_SubInfo;
            }
            else
            {
                list            = f_AtkIdxs;
                battleBaseData  = F_Data;
                dictionary      = F_SubInfo;
                battleBaseData2 = E_Data;
                dictionary2     = E_SubInfo;
            }
            int num = list.Count();

            if (num == 0)
            {
                return(raigekiInfo);
            }
            List <Mem_ship>             list2     = battleBaseData2.ShipData.ToList();
            Dictionary <int, Mst_stype> mst_stype = Mst_DataManager.Instance.Mst_stype;
            Dictionary <int, Mst_ship>  mst_ship  = Mst_DataManager.Instance.Mst_ship;

            list2.RemoveAll(delegate(Mem_ship x)
            {
                if (x.Nowhp <= 0)
                {
                    return(true);
                }
                return(mst_stype[x.Stype].IsLandFacillity(mst_ship[x.Ship_id].Soku) ? true : false);
            });
            if (list2.Count == 0)
            {
                return(raigekiInfo);
            }
            for (int i = 0; i < num; i++)
            {
                int                 num2     = list[i];
                Mem_ship            mem_ship = battleBaseData.ShipData[num2];
                List <Mst_slotitem> atk_slot = battleBaseData.SlotData[num2];
                if (isAttackerFromTargetKind(dictionary[mem_ship.Rid]))
                {
                    BattleDamageKinds dKind       = BattleDamageKinds.Normal;
                    Mem_ship          atackTarget = getAtackTarget(mem_ship, list2, overKill: true, subMarineFlag: false, rescueFlag: true, ref dKind);
                    if (atackTarget != null)
                    {
                        int             deckIdx         = dictionary2[atackTarget.Rid].DeckIdx;
                        int             raigAttackValue = getRaigAttackValue(mem_ship, atk_slot, atackTarget);
                        int             soukou          = atackTarget.Soukou;
                        int             raigHitProb     = getRaigHitProb(mem_ship, atk_slot, raigAttackValue);
                        int             battleAvo       = getBattleAvo(FormationDatas.GetFormationKinds.RAIGEKI, atackTarget);
                        BattleHitStatus hitStatus       = getHitStatus(raigHitProb, battleAvo, mem_ship, atackTarget, valance3, airAttack: false);
                        int             num3            = setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, battleBaseData2.LostFlag);
                        raigekiInfo.Damage[num2]     = num3;
                        raigekiInfo.Target[num2]     = deckIdx;
                        raigekiInfo.DamageKind[num2] = dKind;
                        raigekiInfo.Clitical[num2]   = hitStatus;
                    }
                }
            }
            return(raigekiInfo);
        }
        private Dictionary <int, DamageModelBase> _CreateRaigekiDamageModel(List <ShipModel_BattleAll> a_ships, List <ShipModel_BattleAll> d_ships, List <DamageModelBase> data, RaigekiInfo rInfo)
        {
            Dictionary <int, DamageModelBase> dictionary = new Dictionary <int, DamageModelBase>();

            for (int i = 0; i < d_ships.get_Count(); i++)
            {
                ShipModel_BattleAll shipModel_BattleAll = d_ships.get_Item(i);
                if (shipModel_BattleAll != null)
                {
                    data.Add(new RaigekiDamageModel(shipModel_BattleAll));
                }
                else
                {
                    data.Add(null);
                }
            }
            for (int j = 0; j < rInfo.Target.Length; j++)
            {
                int num = rInfo.Target[j];
                if (num != -1)
                {
                    ShipModel_BattleAll shipModel_BattleAll2 = a_ships.get_Item(j);
                    DamageModelBase     damageModelBase      = data.get_Item(num);
                    if (damageModelBase == null)
                    {
                        ShipModel_BattleAll defender = d_ships.get_Item(num);
                        damageModelBase = new RaigekiDamageModel(defender);
                        data.set_Item(num, damageModelBase);
                    }
                    ((RaigekiDamageModel)damageModelBase).__AddData__(shipModel_BattleAll2, rInfo.Damage[j], rInfo.Clitical[j], rInfo.DamageKind[j]);
                    dictionary.set_Item(shipModel_BattleAll2.TmpId, damageModelBase);
                }
            }
            return(dictionary);
        }
        protected virtual RaigekiInfo getRaigekiData(bool enemyFlag)
        {
            RaigekiInfo    raigekiInfo = new RaigekiInfo();
            List <int>     list;
            BattleBaseData battleBaseData;
            Dictionary <int, BattleShipSubInfo> dictionary;
            BattleBaseData battleBaseData2;
            Dictionary <int, BattleShipSubInfo> dictionary2;

            if (enemyFlag)
            {
                list            = this.e_AtkIdxs;
                battleBaseData  = this.E_Data;
                dictionary      = this.E_SubInfo;
                battleBaseData2 = this.F_Data;
                dictionary2     = this.F_SubInfo;
            }
            else
            {
                list            = this.f_AtkIdxs;
                battleBaseData  = this.F_Data;
                dictionary      = this.F_SubInfo;
                battleBaseData2 = this.E_Data;
                dictionary2     = this.E_SubInfo;
            }
            int num = Enumerable.Count <int>(list);

            if (num == 0)
            {
                return(raigekiInfo);
            }
            List <Mem_ship>             list2     = Enumerable.ToList <Mem_ship>(battleBaseData2.ShipData);
            Dictionary <int, Mst_stype> mst_stype = Mst_DataManager.Instance.Mst_stype;
            Dictionary <int, Mst_ship>  mst_ship  = Mst_DataManager.Instance.Mst_ship;

            list2.RemoveAll((Mem_ship x) => x.Nowhp <= 0 || mst_stype.get_Item(x.Stype).IsLandFacillity(mst_ship.get_Item(x.Ship_id).Soku));
            if (list2.get_Count() == 0)
            {
                return(raigekiInfo);
            }
            for (int i = 0; i < num; i++)
            {
                int                 num2     = list.get_Item(i);
                Mem_ship            mem_ship = battleBaseData.ShipData.get_Item(num2);
                List <Mst_slotitem> atk_slot = battleBaseData.SlotData.get_Item(num2);
                if (this.isAttackerFromTargetKind(dictionary.get_Item(mem_ship.Rid)))
                {
                    BattleDamageKinds battleDamageKinds = BattleDamageKinds.Normal;
                    Mem_ship          atackTarget       = base.getAtackTarget(mem_ship, list2, true, false, true, ref battleDamageKinds);
                    if (atackTarget != null)
                    {
                        int             deckIdx         = dictionary2.get_Item(atackTarget.Rid).DeckIdx;
                        int             raigAttackValue = this.getRaigAttackValue(mem_ship, atk_slot, atackTarget);
                        int             soukou          = atackTarget.Soukou;
                        int             raigHitProb     = this.getRaigHitProb(mem_ship, atk_slot, raigAttackValue);
                        int             battleAvo       = base.getBattleAvo(FormationDatas.GetFormationKinds.RAIGEKI, atackTarget);
                        BattleHitStatus hitStatus       = this.getHitStatus(raigHitProb, battleAvo, mem_ship, atackTarget, this.valance3, false);
                        int             num3            = this.setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, battleBaseData2.LostFlag);
                        raigekiInfo.Damage[num2]     = num3;
                        raigekiInfo.Target[num2]     = deckIdx;
                        raigekiInfo.DamageKind[num2] = battleDamageKinds;
                        raigekiInfo.Clitical[num2]   = hitStatus;
                    }
                }
            }
            return(raigekiInfo);
        }