예제 #1
0
    private void OnBattleResult()
    {
        if (_model.IsShowingAnimation)
        {
            return;
        }

        if (_model.IsGetBattleResult == false)
        {
            return;
        }

        BattleResultData model = GetData <BattleResultData>();

        if (model.Star > 0)
        {
            ShowBattleComment();
        }
        else
        {
            SendMessage(new Message(MessageConst.MODULE_BATTLE_SHOW_FAIL));
            _currentPanel.Destroy();
            _currentPanel = new FinalEstimateFailPanel();
            _currentPanel.Init(this);

            _battleFinalBg.Show();
            _battleFinalBg.transform.SetSiblingIndex(0);
        }
    }
예제 #2
0
    private void OnBattleFinishedComeFromServer(BattleResultData battleResultData, List <TroopCoolDownData> troopCoolDowns,
                                                bool connectionLost)
    {
        TimeManager.instance.Event_OneSecTick            -= OnSecTick;
        BattleDataProvider.instance.Event_BattlePingTick -= OnPinging;

        DivineDebug.Log("Battle Finish Come From Server", DivineLogType.Normal);

        _battleResultData = battleResultData;

        GameAnalytics.NewDesignEvent(
            "Battle Result " + (_battleInfo.isBot ? "With" : "Without") + "Bot: " +
            (_battleResultData.isVictorious ? "Win" : "Lose"));

        _battleEndCame = true;

        PlayerInfo player = GameManager.instance.player;

        for (int i = 0; i < troopCoolDowns.Count; i++)
        {
            player.FindTroop(troopCoolDowns[i].id).SetRemainingCooldownTime(troopCoolDowns[i].remainingSeconds);
        }

        if (connectionLost)
        {
            OnBattleFinished();
        }

        if (FakeServer.instance.isFake)
        {
            OnBattleFinished();
        }
    }
예제 #3
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
    public override void Start()
    {
        base.Start();
        BattleResultData data = GetData <BattleResultData>();

        GlobalData.CardModel.UpdateUserCards(data.UserCards.ToArray());
        Window.SetData(data, GlobalData.PlayerModel);

        if (GlobalData.RandomEventModel.CheckTrigger(7002, 7003))
        {
            new TriggerService().ShowNewGiftWindow().Execute();
        }
    }
예제 #5
0
    private void TriggerStarActivity(BattleResultData data)
    {
        if (GlobalData.MissionModel.IsHaveStarActivityMission)
        {
            List <int> cardLevels = new List <int>();
            foreach (var t in data.UserCards)
            {
                var cardData  = GlobalData.CardModel.GetUserCardById(t.CardId);
                var cardLevel = cardData.Level;
                cardLevels.Add(cardLevel);
            }

            GlobalData.MissionModel.MissionAttainmentModel.BattleTriggerPopWindow(cardLevels);
        }
    }
예제 #6
0
    public void BattleResult(WBattleResult result)
    {
        ChestInfo chestInfo = null;

        if (result.reward.chest_info != null)
        {
            chestInfo = ChestInfoHelper.GetChestInfo(result.reward.chest_info);
        }

        RewardData rewData = new RewardData(result.reward.coin,
                                            result.reward.trophy,
                                            chestInfo);

        BattleResultData btlResultData = new BattleResultData(result.total_score, result.current_rank,
                                                              result.previous_rank, result.victorious, rewData);

        if (Event_BattleFinish != null)
        {
            Event_BattleFinish(btlResultData, MakeTroopCooldownList(result.cooldown_data), result.connection_lost);
        }
    }
예제 #7
0
    protected virtual void OnBattleWin()
    {
        MainWindow mainWindow = FindObjectOfType <MainWindow>();

        if (mainWindow != null)
        {
            mainWindow.gameObject.SetActive(false);
        }

        GameObject       victoryPanel = (GameObject)Instantiate(Resources.Load("Prefabs/BattleResult/VictoryPanel"), GameObject.Find("MainCanvas").transform);
        BattleVictory    bv           = victoryPanel.GetComponent <BattleVictory>();
        BattleResultData resultData   = null;

        if (_map.IsWallMap)
        {
            WaveTplData waveTpl = TemplateManager.GetWaveTpl(_wave.TplId);
            resultData     = DropManager.CreateBattleResult(waveTpl.Dropid);
            resultData.Exp = waveTpl.Exp;
        }
        else
        {
            resultData     = DropManager.CreateBattleResult(_map.Tpl.Dropid, _map.Tpl);
            resultData.Exp = _map.Tpl.Exp;
        }
        resultData.Exp = (int)(resultData.Exp * (1 + Random.Range(-0.1f, 0.1f)));
        _hero.ObtainPastExp(resultData.Exp);

        resultData.BattleType = BattleType;
        bv.data = resultData;

        if (BattleType == BATTLE_TYPE_TREEHOLE)
        {
            TreeHoleCtrl.Instance.Win();
        }
        else if (BattleType == BATTLE_TYPE_CHAPTER)
        {
            WorldCtrl.Instance.Win();
        }

        _beAttacking = false;

        GameModel.Instance.WinTime++;

#if !DISABLESTEAMWORKS
        SteamAchievementMgr.Instance.AchievementAboutNumChanged();
        SteamAchievementMgr.Instance.WinABattle();
        if (BattleType == BATTLE_TYPE_TREEHOLE)
        {
            if (TreeHoleCtrl.Instance.CurrentLayerNum == 30)
            {
                SteamAchievementMgr.Instance.PastLastHole();
            }
        }
#endif

        GlobalEventLocator.Instance.dispatch(new GameEvent(GameEvent.BATTLE_STATE_CHANGED));
        _hero.ClearBuffs();
        UserSkillMgr.CancelSkill();

        if (BattleType == BATTLE_TYPE_GUARD)
        {
            GameModel.Instance.Wave++;
            SoundManager.InstanceOfScene.PlayPeaceBmg();
        }


        GameModel.Instance.OpenFunc(GameModel.FUNC_ID_BAG);
        if (!GameModel.Instance.IsFuncOpen(GameModel.FUNC_ID_INLAY))
        {
            foreach (var item in bv.data.Items)
            {
                if (item.Type == GoodsInfo.TYPE_GEM)
                {
                    GameModel.Instance.OpenFunc(GameModel.FUNC_ID_INLAY);
                }
            }
            if (!GameModel.Instance.IsFuncOpen(GameModel.FUNC_ID_INLAY) && GameModel.Instance.HeroInfo.Level >= SystemConsts.OPEN_INLAY_LEVEL)
            {
                GameModel.Instance.OpenFunc(GameModel.FUNC_ID_INLAY);
            }
        }

        DataService.Instance.Safe = true;

        AdManager.Instance.ShowInterstitial();
    }
예제 #8
0
    public void SetData(BattleResultData data, PlayerModel playerModel)
    {
        transform.Find("StarAndGrade/Star").GetComponent <StarComponent>().ShowStar(data.Star);
        // transform.Find("StarAndGrade/Text").GetComponent<Text>().text = "应援热度:<b> " + data.Cap + "</b>";
        transform.Find("StarAndGrade/Text/Text").GetComponent <Text>().text = data.Cap.ToString();
        var propContainer = transform.Find("Reward/Props");
        var cardContainer = transform.Find("Cards");

        for (int i = 0; i < data.RewardList.Count; i++)
        {
            GameObject item = InstantiatePrefab("Battle/Prefabs/RewardItem");
            item.transform.SetParent(propContainer, false);
            RewardItem             rewardItem = item.transform.gameObject.AddComponent <RewardItem>();
            DrawActivityDropItemVo extReward;
            data.DrawActivityDropItemDict.TryGetValue(i, out extReward);
            rewardItem.SetData(data.RewardList[i], extReward);
            item.GetComponent <ItemShowEffect>().OnShowEffect(0.3f + i * 0.2f);
        }

        PlayerVo player = playerModel.PlayerVo;

        _levelText.text  = "Lv." + player.Level;
        _expAddText.text = "+" + data.Exp + " exp";

        var isOnVip = GlobalData.PlayerModel.PlayerVo.IsOnVip;

        _vip.gameObject.SetActive(isOnVip);

        _userNameText.text = I18NManager.Get("Battle_Name", player.UserName);

        int lastNeedExp = player.NeedExp;

        _expText.text = player.CurrentLevelExp + "/" + player.NeedExp;

        _progressBar.DeltaX   = 0;
        _progressBar.Progress = (int)((float)player.CurrentLevelExp / player.NeedExp * 100);

        bool isLevelup = playerModel.AddExp(data.Exp);

        int rate = (int)((float)player.CurrentLevelExp / player.NeedExp * 100);

        if (isLevelup)
        {
            if (player.Level >= 100)
            {
                _expText.text = "MAX";
            }
            else
            {
                DOTween.To(() => _progressBar.Progress, x => _progressBar.Progress = x, 100, 0.3f).SetDelay(0.9f)
                .onComplete =
                    () =>
                {
                    _expText.text         = player.CurrentLevelExp + "/" + player.NeedExp;
                    _progressBar.DeltaX   = 0;
                    _progressBar.Progress = 0;
                    DOTween.To(() => _progressBar.Progress, x => _progressBar.Progress = x, rate, 0.3f)
                    .SetDelay(1.3f);
                    Util.TweenTextNum(_expText, 0.3f, player.CurrentLevelExp, "", "/" + player.NeedExp);
                    _levelText.text = "Lv." + player.Level;
                };

                Util.TweenTextNum(_expText, 0.3f, lastNeedExp, "", "/" + lastNeedExp);
            }
        }
        else
        {
            if (player.Level >= 100)
            {
                _expText.text = "MAX";
            }
            else
            {
                DOTween.To(() => _progressBar.Progress, x => _progressBar.Progress = x, rate, 0.3f).SetDelay(0.9f);
                Util.TweenTextNum(_expText, 0.3f, player.CurrentLevelExp, "", "/" + player.NeedExp);
            }
        }

        TriggerStarActivity(data);

        for (int i = 0; i < data.UserCards.Count; i++)
        {
            GameObject item = InstantiatePrefab("Battle/FinalEstimate/RewardHeroCard");
            item.transform.SetParent(cardContainer, false);
            item.AddComponent <ItemShowEffect>().OnShowEffect(1 + i * 0.2f);

            var cardData = GlobalData.CardModel.GetUserCardById(data.UserCards[i].CardId);
            item.transform.GetComponent <RewardHeroCard>().SetData(cardData, data.CardExp);
        }

        StartCoroutine(StarRotation());
    }