示例#1
0
        private void ChangePhase(BattlePhaseName phaseName)
        {
            if (currentPhaseName == phaseName)
            {
                return;
            }
            currentPhaseName = phaseName;

            if (currentPhase != null)
            {
                currentPhase.OnFinish();
            }

            if (phaseName == BattlePhaseName.PreLoad)
            {
                currentPhase = new BattlePreLoadPhase(CreatePreLoadParameterTest());
            }
            else if (phaseName == BattlePhaseName.InGame)
            {
                currentPhase = new BattleInGamePhase();
            }

            currentPhase.OnInit();

            Debug.Log("Success Change Scene To " + currentPhaseName.ToString());
        }
示例#2
0
 void Update()
 {
     if (CurrentPhase != null && CurrentPhase.IsOver())
     {
         CurrentPhase.Finish();
         CurrentPhase = CurrentPhase.GoToNext();
         CurrentPhase.Execute(this);
     }
 }
示例#3
0
 public ProdDamage()
 {
     _isPlaying           = false;
     _isFinished          = false;
     _actCallback         = null;
     _iBattlePhase        = null;
     _queFriedShipModel   = new Queue <ShipModel_Defender>();
     _listFriendShipModel = new List <ShipModel_Defender>();
     _listEnemyShipModel  = new List <ShipModel_Defender>();
 }
示例#4
0
        private void Start()
        {
            ShouldReload = false;
            Battle       = new Battle();
            Battle.Init();
            PlayerCharacter.Init(MonsterSpawner, Battle.Player, StatsPanelController);
            EnemyCharacter.Init(MonsterSpawner, Battle.Enemy, StatsPanelController);
            StatsPanelController.gameObject.SetActive(false);

            CurrentPhase = new DraftPhase();
            CurrentPhase.Execute(this);
        }
示例#5
0
        public void UpdateDamageAll(IBattlePhase iPhase, bool isFriend)
        {
            List <ShipModel_Defender> defenders = iPhase.GetDefenders(isFriend);

            defenders.ForEach(delegate(ShipModel_Defender x)
            {
                if (isFriend)
                {
                    dicFriendBattleShips[x.Index].UpdateDamage(x);
                }
                else
                {
                    dicEnemyBattleShips[x.Index].UpdateDamage(x);
                }
            });
        }
示例#6
0
 protected virtual void PlayProdDamage(IBattlePhase iBattlePhase, Action onFinished)
 {
     new ProdDamage().Play(iBattlePhase, onFinished);
 }
示例#7
0
 public void UpdateDamageAll(IBattlePhase iPhase)
 {
     UpdateDamageAll(iPhase, isFriend: true);
     UpdateDamageAll(iPhase, isFriend: false);
 }
示例#8
0
        public void Play(IBattlePhase iBattlePhase, Action callback)
        {
            List <ShipModel_Defender> list = new List <ShipModel_Defender>();

            _iBattlePhase = iBattlePhase;
            _actCallback  = callback;
            _isPlaying    = true;
            BattleTaskManager.GetBattleShips().UpdateDamageAll(iBattlePhase, isFriend: false);
            if (iBattlePhase.HasGekichinEvent())
            {
                iBattlePhase.GetGekichinShips().ForEach(delegate(ShipModel_Defender x)
                {
                    _queFriedShipModel.Enqueue(x);
                });
                if (iBattlePhase.HasTaihaEvent())
                {
                    _listFriendShipModel.AddRange(iBattlePhase.GetDefenders(is_friend: true, DamagedStates.Taiha));
                }
                if (iBattlePhase.HasChuhaEvent())
                {
                    _listFriendShipModel.AddRange(iBattlePhase.GetDefenders(is_friend: true, DamagedStates.Tyuuha));
                }
                if (_listFriendShipModel.Count != 0)
                {
                    Observable.Timer(TimeSpan.FromSeconds(1.5)).Subscribe(delegate
                    {
                        ProdDamage prodDamage = this;
                        BattleShips ships     = BattleTaskManager.GetBattleShips();
                        _listFriendShipModel.ForEach(delegate(ShipModel_Defender x)
                        {
                            ships.dicFriendBattleShips[x.Index].UpdateDamage(x);
                        });
                    });
                }
                PlaySinking();
            }
            else if (iBattlePhase.HasTaihaEvent())
            {
                list.AddRange(iBattlePhase.GetDefenders(is_friend: true, DamagedStates.Taiha));
                if (iBattlePhase.HasChuhaEvent())
                {
                    list.AddRange(iBattlePhase.GetDefenders(is_friend: true, DamagedStates.Tyuuha));
                }
                _queFriedShipModel = new Queue <ShipModel_Defender>();
                int num = 0;
                foreach (ShipModel_Defender item in list)
                {
                    if (num >= 3)
                    {
                        break;
                    }
                    _queFriedShipModel.Enqueue(item);
                    num++;
                }
                PlayHeavyDamage(DamagedStates.Taiha);
            }
            else if (iBattlePhase.HasChuhaEvent())
            {
                list.AddRange(iBattlePhase.GetDefenders(is_friend: true, DamagedStates.Tyuuha).ConvertAll((ShipModel_Defender s) => s));
                int num2 = 0;
                foreach (ShipModel_Defender item2 in list)
                {
                    if (num2 >= 3)
                    {
                        break;
                    }
                    _queFriedShipModel.Enqueue(item2);
                    num2++;
                }
                PlayHeavyDamage(DamagedStates.Tyuuha);
            }
            else
            {
                OnFinished();
            }
            list.Clear();
        }
        public void Play(IBattlePhase iBattlePhase, Action callback)
        {
            List <ShipModel_Defender> list = new List <ShipModel_Defender>();

            this._iBattlePhase = iBattlePhase;
            this._actCallback  = callback;
            this._isPlaying    = true;
            BattleTaskManager.GetBattleShips().UpdateDamageAll(iBattlePhase, false);
            if (iBattlePhase.HasGekichinEvent())
            {
                iBattlePhase.GetGekichinShips().ForEach(delegate(ShipModel_Defender x)
                {
                    this._queFriedShipModel.Enqueue(x);
                });
                if (iBattlePhase.HasTaihaEvent())
                {
                    this._listFriendShipModel.AddRange(iBattlePhase.GetDefenders(true, DamagedStates.Taiha));
                }
                if (iBattlePhase.HasChuhaEvent())
                {
                    this._listFriendShipModel.AddRange(iBattlePhase.GetDefenders(true, DamagedStates.Tyuuha));
                }
                if (this._listFriendShipModel.get_Count() != 0)
                {
                    Observable.Timer(TimeSpan.FromSeconds(1.5)).Subscribe(delegate(long _)
                    {
                        BattleShips ships = BattleTaskManager.GetBattleShips();
                        this._listFriendShipModel.ForEach(delegate(ShipModel_Defender x)
                        {
                            ships.dicFriendBattleShips.get_Item(x.Index).UpdateDamage(x);
                        });
                    });
                }
                this.PlaySinking();
            }
            else if (iBattlePhase.HasTaihaEvent())
            {
                list.AddRange(iBattlePhase.GetDefenders(true, DamagedStates.Taiha));
                if (iBattlePhase.HasChuhaEvent())
                {
                    list.AddRange(iBattlePhase.GetDefenders(true, DamagedStates.Tyuuha));
                }
                this._queFriedShipModel = new Queue <ShipModel_Defender>();
                int num = 0;
                using (List <ShipModel_Defender> .Enumerator enumerator = list.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        ShipModel_Defender current = enumerator.get_Current();
                        if (num >= 3)
                        {
                            break;
                        }
                        this._queFriedShipModel.Enqueue(current);
                        num++;
                    }
                }
                this.PlayHeavyDamage(DamagedStates.Taiha);
            }
            else if (iBattlePhase.HasChuhaEvent())
            {
                list.AddRange(iBattlePhase.GetDefenders(true, DamagedStates.Tyuuha).ConvertAll <ShipModel_Defender>((ShipModel_Defender s) => s));
                int num2 = 0;
                using (List <ShipModel_Defender> .Enumerator enumerator2 = list.GetEnumerator())
                {
                    while (enumerator2.MoveNext())
                    {
                        ShipModel_Defender current2 = enumerator2.get_Current();
                        if (num2 >= 3)
                        {
                            break;
                        }
                        this._queFriedShipModel.Enqueue(current2);
                        num2++;
                    }
                }
                this.PlayHeavyDamage(DamagedStates.Tyuuha);
            }
            else
            {
                this.OnFinished();
            }
            list.Clear();
        }