private IEnumerator BattleAnimWithNone(RadingKind type, float cur, int died)
        {
            for (int i = 0; i < 2; i++)
            {
                shell.Initialize(enemy.transform.parent.localPosition, ship.transform.localPosition, type);
                yield return(MyWaitForSeconds((type != 0) ? 1f : 0.5f));

                iTween.ShakePosition(ship.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f));
                explosion.transform.localPosition = ship.transform.localPosition;
                SoundUtils.PlaySE(SEFIleInfos.BattleDamage);
                iTween.ValueTo(explosion.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.1f, "onupdate", "ExplosionAlpha", "onupdatetarget", base.gameObject));
                iTween.ScaleTo(explosion.gameObject, iTween.Hash("scale", 2f * Vector3.one, "islocal", true, "time", 0.5f, "easeType", iTween.EaseType.easeOutQuad));
                iTween.ValueTo(explosion.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.1f, "delay", 0.4f, "onupdate", "ExplosionAlpha", "onupdatetarget", base.gameObject));
                GameObject tmp = UnityEngine.Object.Instantiate(count.gameObject);
                tmp.transform.parent        = count.transform.parent;
                tmp.transform.localScale    = Vector3.one;
                tmp.transform.localPosition = count.transform.localPosition;
                iTween.MoveTo(tmp, iTween.Hash("position", tmp.transform.localPosition + 50f * Vector3.up, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear));
                iTween.RotateTo(tmp, iTween.Hash("x", 90, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear));
                UnityEngine.Object.Destroy(tmp, 0.4f);
                cur       -= (float)died / 2f;
                count.text = "x " + Mathf.RoundToInt(cur);
                yield return(MyWaitForSeconds(1f));
            }
        }
        public IEnumerator DelayedActions(bool guard, RadingKind type)
        {
            yield return(new WaitForSeconds(0.5f));

            yield return(StartCoroutine(TankerPopUp()));

            yield return(StartCoroutine(EnemyPopUp(guard)));

            yield return(StartCoroutine(GuardPopUp(guard)));

            float cur  = tot;
            int   died = tot - cnt;

            if (!CutMode)
            {
                if (guard)
                {
                    AttackCor = StartCoroutine(BattleAnimWithGuard(type, cur, died));
                    yield return(AttackCor);
                }
                else
                {
                    AttackCor = StartCoroutine(BattleAnimWithNone(type, cur, died));
                    yield return(AttackCor);
                }
            }
            AttackCor      = null;
            ResultPhaseCor = StartCoroutine(ResultPhase());
            yield return(ResultPhaseCor);

            CutMode = false;
        }
        private int getRadingTankerLostNum(RadingKind kind, List <Mem_ship> ships, int nowTankerNum, Mst_radingrate radingRecord)
        {
            int radingPow = radingRecord.GetRadingPow(kind);
            int num       = Enumerable.Count <Mem_ship>(ships, (Mem_ship x) => x.IsEscortDeffender());
            int num2      = 0;

            if (num == 0 || Utils.GetRandDouble(1.0, (double)(12 - num), 1.0, 1) >= 6.0)
            {
                if (num == 6)
                {
                    double randDouble = Utils.GetRandDouble(0.0, Math.Sqrt((double)radingPow), 0.1, 1);
                    num2 = (int)(randDouble + 0.5);
                }
                else if (num == 4 || num == 5)
                {
                    double randDouble2 = Utils.GetRandDouble(0.0, Math.Sqrt((double)(radingPow / 2)), 0.1, 1);
                    num2 = (int)(randDouble2 + 0.5);
                }
                else if (num >= 1 && num <= 3)
                {
                    double randDouble3 = Utils.GetRandDouble(0.0, Math.Sqrt((double)radingPow), 0.1, 1);
                    num2 = (int)(randDouble3 + 1.5);
                }
                else if (num == 0)
                {
                    return(nowTankerNum);
                }
            }
            if (num2 > nowTankerNum)
            {
                return(nowTankerNum);
            }
            return(num2);
        }
 public void Attack(bool guard, RadingKind type)
 {
     timer             = Time.time;
     on                = true;
     isFinished        = false;
     count.text        = "x " + tot;
     isGuard           = guard;
     DelayedActionsCor = StartCoroutine(DelayedActions(guard, type));
 }
 public void Attack(bool guard, RadingKind type)
 {
     this.timer             = Time.get_time();
     this.on                = true;
     this.isFinished        = false;
     this.count.text        = "x " + this.tot;
     this.isGuard           = guard;
     this.DelayedActionsCor = base.StartCoroutine(this.DelayedActions(guard, type));
 }
示例#6
0
 public int[] GetRadingValues(RadingKind kind)
 {
     int[] array = new int[2];
     if (kind == RadingKind.AIR_ATTACK)
     {
         array[0] = this.Air_rate;
         array[1] = this.Air_karyoku;
     }
     else
     {
         array[0] = this.Submarine_rate;
         array[1] = this.Submarine_karyoku;
     }
     return(array);
 }
示例#7
0
        private int getRadingTankerLostNum(RadingKind kind, List <Mem_ship> ships, int nowTankerNum, Mst_radingrate radingRecord)
        {
            int radingPow = radingRecord.GetRadingPow(kind);
            int num       = ships.Count((Mem_ship x) => x.IsEscortDeffender());
            int num2      = 0;

            if (num == 0 || Utils.GetRandDouble(1.0, 12 - num, 1.0, 1) >= 6.0)
            {
                switch (num)
                {
                case 6:
                {
                    double randDouble = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow), 0.1, 1);
                    num2 = (int)(randDouble + 0.5);
                    break;
                }

                case 4:
                case 5:
                {
                    double randDouble3 = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow / 2), 0.1, 1);
                    num2 = (int)(randDouble3 + 0.5);
                    break;
                }

                case 1:
                case 2:
                case 3:
                {
                    double randDouble2 = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow), 0.1, 1);
                    num2 = (int)(randDouble2 + 1.5);
                    break;
                }

                default:
                    if (num == 0)
                    {
                        return(nowTankerNum);
                    }
                    break;
                }
            }
            if (num2 > nowTankerNum)
            {
                return(nowTankerNum);
            }
            return(num2);
        }
        public void StartAnimation(bool friendly, RadingKind type, bool isFirst)
        {
            float num = 0f;

            if (isFirst)
            {
                textBG.alpha = 1f;
                iTween.ScaleTo(textBG.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.5f, "easeType", iTween.EaseType.easeOutQuad));
                iTween.MoveTo(text.gameObject, iTween.Hash("position", new Vector3(0f, 0f, 0f), "islocal", true, "time", 1, "delay", 0.4f, "easeType", iTween.EaseType.easeOutExpo));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.5f, "delay", 0.4f, "onupdate", "TextAlpha", "onupdatetarget", base.gameObject));
                iTween.MoveTo(text.gameObject, iTween.Hash("position", new Vector3(680f, 0f, 0f), "islocal", true, "time", 1, "delay", 1.4f, "easeType", iTween.EaseType.easeInExpo));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.5f, "delay", 1.9f, "onupdate", "TextAlpha", "onupdatetarget", base.gameObject));
                iTween.ScaleTo(textBG.gameObject, iTween.Hash("scale", new Vector3(1f, 0f, 1f), "time", 0.5f, "delay", 2, "easeType", iTween.EaseType.easeInQuad, "oncomplete", "TextBGAlphaOff", "oncompletetarget", base.gameObject));
                num = 2.4f;
            }
            StartCoroutine(StrategyTopTaskManager.Instance.UIModel.MapCamera.MoveToTargetTile(curTile + 1, 1f));
            iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0.5f, "time", 0.2f, "delay", num, "onupdate", "TileColor", "onupdatetarget", base.gameObject));
            this.DelayAction(num, delegate
            {
                StartCoroutine(Attack(3.4f, friendly, type));
            });
        }
        public IEnumerator Attack(float delay, bool friendly, RadingKind type)
        {
            attacking = true;
            taa.transform.localPosition = tiles[curTile].transform.parent.localPosition + tiles[curTile].transform.localPosition + new Vector3(-6f, 6f, 0f);
            taa.Attack(friendly, type);
            while (!taa.isFinished)
            {
                yield return(new WaitForEndOfFrame());
            }
            tileSprites[curTile].color = Color.white;
            attacking = false;
            on        = false;
            text.transform.localPosition = new Vector3(-680f, 0f, 0f);
            isFinished = true;
            TweenAlpha ta = TweenAlpha.Begin(taa.gameObject, 0.2f, 0f);

            ta.onFinished.Clear();
            ta.SetOnFinished(delegate
            {
                this.taa.SetActive(isActive: false);
                this.tileAnimInstance.SetActive(false);
            });
        }
示例#10
0
        private List <RadingDamageData> getRadingDamage(int area, RadingKind kind, Mst_radingrate rateRecord, List <Mem_ship> targetShips, out int deckPow, out List <Mem_ship> deleteShips)
        {
            List <Mem_ship> list = targetShips.ToList();
            int             ec   = 0;
            double          ad3  = 0.0;
            double          ad2  = 0.0;

            list.ForEach(delegate(Mem_ship ship)
            {
                if (ship.IsEscortDeffender())
                {
                    ec++;
                }
                Ship_GrowValues battleBaseParam = ship.GetBattleBaseParam();
                int num9  = ship.Taiku - battleBaseParam.Taiku;
                ad3       = ad3 + Math.Sqrt(battleBaseParam.Taiku) + (double)num9;
                int num10 = ship.Taisen - battleBaseParam.Taisen;
                ad2       = ad2 + Math.Sqrt(battleBaseParam.Taisen) + (double)num10;
            });
            int[]  radingValues = rateRecord.GetRadingValues(kind);
            double num          = (kind != RadingKind.AIR_ATTACK) ? ad2 : ad3;
            int    num11        = radingValues[0];
            int    num2         = radingValues[1];

            deckPow     = (int)num;
            deleteShips = new List <Mem_ship>();
            if (list.Count == 0)
            {
                return(new List <RadingDamageData>());
            }
            RadingResultData radingResultData = new RadingResultData();

            radingResultData.DeckAttackPow = (int)num;
            double num3 = (double)num2 - Math.Sqrt(ec);
            int    num4 = (!(num3 < 1.0)) ? ((int)Utils.GetRandDouble(0.0, num3, 0.1, 1)) : 0;
            List <RadingDamageData>       list2      = new List <RadingDamageData>();
            Dictionary <int, DamageState> dictionary = (from x in list
                                                        select new
            {
                rid = x.Rid,
                state = x.Get_DamageState()
            }).ToDictionary(key => key.rid, val => val.state);

            for (int i = 0; i < num4; i++)
            {
                if (list.Count == 0)
                {
                    return(list2);
                }
                RadingDamageData radingDamageData = new RadingDamageData();
                double           num5             = (double)(num2 * 5) - num / 5.0 - Math.Sqrt(num);
                int      index    = (int)Utils.GetRandDouble(0.0, list.Count - 1, 1.0, 1);
                Mem_ship mem_ship = list[index];
                radingDamageData.Rid = mem_ship.Rid;
                if (num5 <= 0.0)
                {
                    radingDamageData.Damage      = false;
                    radingDamageData.DamageState = DamagedStates.None;
                }
                else
                {
                    int taik = Mst_DataManager.Instance.Mst_ship[mem_ship.Ship_id].Taik;
                    int num6 = (int)((double)taik * Utils.GetRandDouble(1.0, num5, 1.0, 1) / 100.0) + 1;
                    int num7 = mem_ship.Nowhp - num6;
                    if (num7 <= 0)
                    {
                        num7 = ((basicInstance.Difficult != DifficultKind.SHI) ? 1 : ((dictionary[mem_ship.Rid] != DamageState.Taiha) ? 1 : 0));
                    }
                    int num8 = mem_ship.Nowhp - num7;
                    if (num8 > 0)
                    {
                        DamageState damageState = mem_ship.Get_DamageState();
                        radingDamageData.Damage = true;
                        if (num7 == 0)
                        {
                            int[] array = mem_ship.FindRecoveryItem();
                            if (array[0] == -1)
                            {
                                radingDamageData.DamageState = DamagedStates.Gekichin;
                                list.Remove(mem_ship);
                                deleteShips.Add(mem_ship);
                            }
                            else
                            {
                                mem_ship.SubHp(num8);
                                mem_ship.UseRecoveryItem(array, flagShipRecovery: false);
                                radingDamageData.DamageState = ((array[1] != 43) ? DamagedStates.Youin : DamagedStates.Megami);
                                dictionary[mem_ship.Rid]     = DamageState.Normal;
                            }
                        }
                        else
                        {
                            mem_ship.SubHp(num8);
                            DamageState damageState2 = mem_ship.Get_DamageState();
                            if (damageState != damageState2)
                            {
                                switch (damageState2)
                                {
                                case DamageState.Taiha:
                                    radingDamageData.DamageState = DamagedStates.Taiha;
                                    break;

                                case DamageState.Shouha:
                                    radingDamageData.DamageState = DamagedStates.Shouha;
                                    break;

                                case DamageState.Tyuuha:
                                    radingDamageData.DamageState = DamagedStates.Tyuuha;
                                    break;
                                }
                            }
                            else
                            {
                                radingDamageData.DamageState = DamagedStates.None;
                            }
                        }
                    }
                    else
                    {
                        radingDamageData.Damage      = false;
                        radingDamageData.DamageState = DamagedStates.None;
                    }
                }
                list2.Add(radingDamageData);
            }
            return(list2);
        }
 public IEnumerator DelayedActions(bool guard, RadingKind type)
 {
     TileAnimationAttack.< DelayedActions > c__Iterator195 <DelayedActions> c__Iterator = new TileAnimationAttack.< DelayedActions > c__Iterator195();
示例#12
0
 public int GetRadingRate(RadingKind kind)
 {
     return((kind != RadingKind.AIR_ATTACK) ? this.Submarine_rate : this.Air_rate);
 }
示例#13
0
 public int GetRadingPow(RadingKind kind)
 {
     return((kind != RadingKind.AIR_ATTACK) ? this.Submarine_karyoku : this.Air_karyoku);
 }
        private IEnumerator BattleAnimWithGuard(RadingKind type, float cur, int died)
        {
            for (int i = 0; i < 2; i++)
            {
                shell.Initialize(enemy.transform.parent.localPosition, friendly.transform.parent.localPosition, type);
                yield return(MyWaitForSeconds((type != 0) ? 1f : 0.5f));

                iTween.ShakePosition(friendly.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f));
                ((Component)partExplosion).transform.localPosition = friendly.transform.parent.localPosition;
                partExplosion.time = 0f;
                partExplosion.Play(true);
                SoundUtils.PlaySE(SEFIleInfos.BattleDamage);
                GameObject tmp = UnityEngine.Object.Instantiate(count.gameObject);
                tmp.transform.parent        = count.transform.parent;
                tmp.transform.localScale    = Vector3.one;
                tmp.transform.localPosition = count.transform.localPosition;
                iTween.MoveTo(tmp, iTween.Hash("position", tmp.transform.localPosition + 50f * Vector3.up, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear));
                iTween.RotateTo(tmp, iTween.Hash("x", 90, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear));
                UnityEngine.Object.Destroy(tmp, 0.4f);
                cur       -= (float)died / 2f;
                count.text = "x " + Mathf.RoundToInt(cur);
                if (RadingData.RadingDamage.Any((RadingDamageData x) => x.Damage))
                {
                    bool isGekichin = RadingData.RadingDamage.Any((RadingDamageData x) => x.DamageState == DamagedStates.Gekichin);
                    bool isYouin    = RadingData.RadingDamage.Any((RadingDamageData x) => x.DamageState == DamagedStates.Youin);
                    if (i == 1 && (isGekichin || isYouin))
                    {
                        hukidashi.Play(TileAnimationHukidashi.Type.Goutin);
                        yield return(new WaitForSeconds(2f));

                        if (isYouin)
                        {
                            hukidashi.Play(TileAnimationHukidashi.Type.Damecon);
                            yield return(new WaitForSeconds(1f));

                            TrophyUtil.Unlock_At_Rading();
                        }
                    }
                    else
                    {
                        hukidashi.Play(TileAnimationHukidashi.Type.Damage);
                    }
                }
                yield return(MyWaitForSeconds(1.2f));

                partExplosion.Stop(true);
                partExplosion.Clear(true);
                SoundUtils.PlaySE(SEFIleInfos.BattleDamage);
                shell.Initialize(friendly.transform.parent.localPosition, enemy.transform.parent.localPosition, (RadingKind)0);
                yield return(MyWaitForSeconds(0.5f));

                iTween.ShakePosition(enemy.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f));
                ((Component)partExplosion).transform.localPosition = enemy.transform.parent.localPosition;
                partExplosion.time = 0f;
                partExplosion.Play(true);
                SoundUtils.PlaySE(SEFIleInfos.BattleDamage);
                yield return(MyWaitForSeconds(1.2f));

                partExplosion.Stop(true);
                partExplosion.Clear(true);
            }
        }
示例#15
0
 public IEnumerator Attack(float delay, bool friendly, RadingKind type)
 {
     TileAnimationManager.< Attack > c__Iterator19F <Attack> c__Iterator19F = new TileAnimationManager.< Attack > c__Iterator19F();
示例#16
0
        public void Initialize(Vector3 origin, Vector3 target, RadingKind type)
        {
            base.transform.localPosition = origin;
            base.transform.localScale    = Vector3.one;
            base.transform.eulerAngles   = Vector3.zero;
            tex.alpha = 0f;
            switch (type)
            {
            case RadingKind.AIR_ATTACK:
                if (StrategyTopTaskManager.GetLogicManager().Turn >= 500)
                {
                    tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_e54") as Texture);
                    tex.width       = 60;
                    tex.height      = 60;
                }
                else
                {
                    tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_506_2") as Texture);
                    tex.width       = 50;
                    tex.height      = 100;
                }
                tex.alpha = 1f;
                base.transform.localScale = 0.001f * Vector3.one;
                iTween.ScaleTo(base.gameObject, iTween.Hash("scale", Vector3.one, "islocal", true, "time", 0.2f, "delay", 0.5f, "easeType", iTween.EaseType.easeInOutQuad));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "delay", 0.5f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                iTween.MoveTo(base.gameObject, iTween.Hash("path", new Vector3[3]
                {
                    origin,
                    origin + 0.5f * (target - origin) + 50f * Vector3.down,
                    1.2f * target - 0.2f * origin
                }, "islocal", true, "time", 1.2f, "easeType", iTween.EaseType.linear));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 1.15f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                this.DelayAction(0.2f, delegate
                {
                    SoundUtils.PlaySE(SEFIleInfos.BattleTookOffAircraft);
                });
                break;

            case RadingKind.SUBMARINE_ATTACK:
            {
                tex.mainTexture = (Resources.Load("Textures/TileAnimations/kouseki") as Texture);
                tex.MakePixelPerfect();
                Vector3 vector2 = target - origin;
                base.transform.Rotate(Vector3.forward, 180f / (float)Math.PI * Mathf.Atan2(vector2.y, vector2.x));
                base.transform.localScale = new Vector3(0.001f, 0.75f, 0.75f);
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                iTween.ScaleTo(base.gameObject, iTween.Hash("scale", 0.75f * Vector3.one, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear));
                iTween.MoveTo(base.gameObject, iTween.Hash("position", 0.8f * target + 0.2f * origin, "islocal", true, "time", 1, "easeType", iTween.EaseType.linear));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 0.95f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                SoundUtils.PlaySE(SEFIleInfos.BattleTorpedo);
                break;
            }

            default:
            {
                tex.mainTexture = (Resources.Load("Textures/TileAnimations/fire_5") as Texture);
                tex.MakePixelPerfect();
                Vector3 vector = target - origin;
                base.transform.Rotate(Vector3.forward, 180f / (float)Math.PI * Mathf.Atan2(vector.y, vector.x));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                iTween.MoveTo(base.gameObject, iTween.Hash("position", target, "islocal", true, "time", 0.25f, "easeType", iTween.EaseType.linear));
                iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 0.2f, "onupdate", "Alpha", "onupdatetarget", base.gameObject));
                SoundUtils.PlaySE(SEFIleInfos.SE_901);
                break;
            }
            }
        }
示例#17
0
 public void Initialize(Vector3 origin, Vector3 target, RadingKind type)
 {
     base.get_transform().set_localPosition(origin);
     base.get_transform().set_localScale(Vector3.get_one());
     base.get_transform().set_eulerAngles(Vector3.get_zero());
     this.tex.alpha = 0f;
     if (type == RadingKind.AIR_ATTACK)
     {
         if (StrategyTopTaskManager.GetLogicManager().Turn >= 500)
         {
             this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_e54") as Texture);
             this.tex.width       = 60;
             this.tex.height      = 60;
         }
         else
         {
             this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_506_2") as Texture);
             this.tex.width       = 50;
             this.tex.height      = 100;
         }
         this.tex.alpha = 1f;
         base.get_transform().set_localScale(0.001f * Vector3.get_one());
         iTween.ScaleTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "scale",
             Vector3.get_one(),
             "islocal",
             true,
             "time",
             0.2f,
             "delay",
             0.5f,
             "easeType",
             iTween.EaseType.easeInOutQuad
         }));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             0,
             "to",
             1,
             "time",
             0.05f,
             "delay",
             0.5f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "path",
             new Vector3[]
             {
                 origin,
                 origin + 0.5f * (target - origin) + 50f * Vector3.get_down(),
                 1.2f * target - 0.2f * origin
             },
             "islocal",
             true,
             "time",
             1.2f,
             "easeType",
             iTween.EaseType.linear
         }));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             1,
             "to",
             0,
             "time",
             0.05f,
             "delay",
             1.15f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         this.DelayAction(0.2f, delegate
         {
             SoundUtils.PlaySE(SEFIleInfos.BattleTookOffAircraft);
         });
     }
     else if (type == RadingKind.SUBMARINE_ATTACK)
     {
         this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/kouseki") as Texture);
         this.tex.MakePixelPerfect();
         Vector3 vector = target - origin;
         base.get_transform().Rotate(Vector3.get_forward(), 57.2957764f * Mathf.Atan2(vector.y, vector.x));
         base.get_transform().set_localScale(new Vector3(0.001f, 0.75f, 0.75f));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             0,
             "to",
             1,
             "time",
             0.05f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         iTween.ScaleTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "scale",
             0.75f * Vector3.get_one(),
             "islocal",
             true,
             "time",
             0.4f,
             "easeType",
             iTween.EaseType.linear
         }));
         iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "position",
             0.8f * target + 0.2f * origin,
             "islocal",
             true,
             "time",
             1,
             "easeType",
             iTween.EaseType.linear
         }));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             1,
             "to",
             0,
             "time",
             0.05f,
             "delay",
             0.95f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         SoundUtils.PlaySE(SEFIleInfos.BattleTorpedo);
     }
     else
     {
         this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/fire_5") as Texture);
         this.tex.MakePixelPerfect();
         Vector3 vector2 = target - origin;
         base.get_transform().Rotate(Vector3.get_forward(), 57.2957764f * Mathf.Atan2(vector2.y, vector2.x));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             0,
             "to",
             1,
             "time",
             0.05f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "position",
             target,
             "islocal",
             true,
             "time",
             0.25f,
             "easeType",
             iTween.EaseType.linear
         }));
         iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[]
         {
             "from",
             1,
             "to",
             0,
             "time",
             0.05f,
             "delay",
             0.2f,
             "onupdate",
             "Alpha",
             "onupdatetarget",
             base.get_gameObject()
         }));
         SoundUtils.PlaySE(SEFIleInfos.SE_901);
     }
 }
        private List <RadingDamageData> getRadingDamage(int area, RadingKind kind, Mst_radingrate rateRecord, List <Mem_ship> targetShips, out int deckPow, out List <Mem_ship> deleteShips)
        {
            List <Mem_ship> list = Enumerable.ToList <Mem_ship>(targetShips);
            int             ec   = 0;
            double          ad1  = 0.0;
            double          ad2  = 0.0;

            list.ForEach(delegate(Mem_ship ship)
            {
                if (ship.IsEscortDeffender())
                {
                    ec++;
                }
                Ship_GrowValues battleBaseParam = ship.GetBattleBaseParam();
                int num11 = ship.Taiku - battleBaseParam.Taiku;
                ad1       = ad1 + Math.Sqrt((double)battleBaseParam.Taiku) + (double)num11;
                int num12 = ship.Taisen - battleBaseParam.Taisen;
                ad2       = ad2 + Math.Sqrt((double)battleBaseParam.Taisen) + (double)num12;
            });
            int[]  radingValues = rateRecord.GetRadingValues(kind);
            double num          = (kind != RadingKind.AIR_ATTACK) ? ad2 : ad1;
            int    num2         = radingValues[0];
            int    num3         = radingValues[1];

            deckPow     = (int)num;
            deleteShips = new List <Mem_ship>();
            if (list.get_Count() == 0)
            {
                return(new List <RadingDamageData>());
            }
            RadingResultData radingResultData = new RadingResultData();

            radingResultData.DeckAttackPow = (int)num;
            double num4 = (double)num3 - Math.Sqrt((double)ec);
            int    num5 = (num4 >= 1.0) ? ((int)Utils.GetRandDouble(0.0, num4, 0.1, 1)) : 0;
            List <RadingDamageData>       list2      = new List <RadingDamageData>();
            Dictionary <int, DamageState> dictionary = Enumerable.ToDictionary(Enumerable.Select(list, (Mem_ship x) => new
            {
                rid   = x.Rid,
                state = x.Get_DamageState()
            }), key => key.rid, val => val.state);

            for (int i = 0; i < num5; i++)
            {
                if (list.get_Count() == 0)
                {
                    return(list2);
                }
                RadingDamageData radingDamageData = new RadingDamageData();
                double           num6             = (double)(num3 * 5) - num / 5.0 - Math.Sqrt(num);
                int      num7     = (int)Utils.GetRandDouble(0.0, (double)(list.get_Count() - 1), 1.0, 1);
                Mem_ship mem_ship = list.get_Item(num7);
                radingDamageData.Rid = mem_ship.Rid;
                if (num6 <= 0.0)
                {
                    radingDamageData.Damage      = false;
                    radingDamageData.DamageState = DamagedStates.None;
                }
                else
                {
                    int taik = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id).Taik;
                    int num8 = (int)((double)taik * Utils.GetRandDouble(1.0, num6, 1.0, 1) / 100.0) + 1;
                    int num9 = mem_ship.Nowhp - num8;
                    if (num9 <= 0)
                    {
                        if (this.basicInstance.Difficult != DifficultKind.SHI)
                        {
                            num9 = 1;
                        }
                        else if (dictionary.get_Item(mem_ship.Rid) != DamageState.Taiha)
                        {
                            num9 = 1;
                        }
                        else
                        {
                            num9 = 0;
                        }
                    }
                    int num10 = mem_ship.Nowhp - num9;
                    if (num10 > 0)
                    {
                        DamageState damageState = mem_ship.Get_DamageState();
                        radingDamageData.Damage = true;
                        if (num9 == 0)
                        {
                            int[] array = mem_ship.FindRecoveryItem();
                            if (array[0] == -1)
                            {
                                radingDamageData.DamageState = DamagedStates.Gekichin;
                                list.Remove(mem_ship);
                                deleteShips.Add(mem_ship);
                            }
                            else
                            {
                                mem_ship.SubHp(num10);
                                mem_ship.UseRecoveryItem(array, false);
                                radingDamageData.DamageState = ((array[1] != 43) ? DamagedStates.Youin : DamagedStates.Megami);
                                dictionary.set_Item(mem_ship.Rid, DamageState.Normal);
                            }
                        }
                        else
                        {
                            mem_ship.SubHp(num10);
                            DamageState damageState2 = mem_ship.Get_DamageState();
                            if (damageState != damageState2)
                            {
                                if (damageState2 == DamageState.Taiha)
                                {
                                    radingDamageData.DamageState = DamagedStates.Taiha;
                                }
                                else if (damageState2 == DamageState.Shouha)
                                {
                                    radingDamageData.DamageState = DamagedStates.Shouha;
                                }
                                else if (damageState2 == DamageState.Tyuuha)
                                {
                                    radingDamageData.DamageState = DamagedStates.Tyuuha;
                                }
                            }
                            else
                            {
                                radingDamageData.DamageState = DamagedStates.None;
                            }
                        }
                    }
                    else
                    {
                        radingDamageData.Damage      = false;
                        radingDamageData.DamageState = DamagedStates.None;
                    }
                }
                list2.Add(radingDamageData);
            }
            return(list2);
        }