/// <summary>
    /// 数据显示
    /// </summary>
    /// <param name="scrollGridCell"></param>
    public void OnCellForInfiniteTowers(ScrollGridCell scrollGridCell)
    {
        ItemMountainInfiniteTowersCpt itemCpt            = scrollGridCell.GetComponent <ItemMountainInfiniteTowersCpt>();
        UserInfiniteTowersBean        userInfiniteTowers = listData[scrollGridCell.index];

        itemCpt.SetData(userInfiniteTowers);
    }
 public void SetData(UserInfiniteTowersBean infiniteTowersData)
 {
     this.infiniteTowersData = infiniteTowersData;
     SetLayer(infiniteTowersData.layer);
     SetIsSend(infiniteTowersData.isSend, infiniteTowersData.proForSend);
     SetMembers(infiniteTowersData.listMembers);
 }
Example #3
0
 public void SetData(List <UserInfiniteTowersBean> listData)
 {
     if (listInfiniteTowers == null)
     {
         listInfiniteTowers = new List <ItemGameMainHintForInfiniteTowersCpt>();
     }
     for (int f = 0; f < listData.Count; f++)
     {
         UserInfiniteTowersBean itemData = listData[f];
         bool hasData = false;
         for (int i = 0; i < listInfiniteTowers.Count; i++)
         {
             ItemGameMainHintForInfiniteTowersCpt itemCpt = listInfiniteTowers[i];
             if (itemCpt.infiniteTowersData == itemData)
             {
                 hasData = true;
                 itemCpt.RefreshData();
                 if (itemCpt.infiniteTowersData.proForSend == -1)
                 {
                     listInfiniteTowers.Remove(itemCpt);
                     Destroy(itemCpt.gameObject);
                     i--;
                 }
             }
         }
         if (!hasData)
         {
             CreateItemForInfiniteTowers(itemData);
         }
     }
     CheckHasData();
 }
Example #4
0
    /// <summary>
    /// 创建爬塔数据
    /// </summary>
    /// <param name="infiniteTowersData"></param>
    public void CreateItemForInfiniteTowers(UserInfiniteTowersBean infiniteTowersData)
    {
        GameObject objItem = Instantiate(objHintContainer, objInfiniteTowersModel);
        ItemGameMainHintForInfiniteTowersCpt itemCpt = objItem.GetComponent <ItemGameMainHintForInfiniteTowersCpt>();

        itemCpt.SetData(infiniteTowersData);
        listInfiniteTowers.Add(itemCpt);
    }
 public void Submit(DialogView dialogView, DialogBean dialogBean)
 {
     if (dialogView as PickForCharacterDialogView)
     {
         PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView;
         UserInfiniteTowersBean     infiniteTowersData     = new UserInfiniteTowersBean();
         List <CharacterBean>       listMembers            = pickForCharacterDialog.GetPickCharacter();
         GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
         if (dialogBean.dialogPosition == 0)
         {
             //亲自
             infiniteTowersData.isSend = false;
             foreach (CharacterBean itemCharacter in listMembers)
             {
                 infiniteTowersData.listMembers.Add(itemCharacter.baseInfo.characterId);
             }
             gameData.AddInfinteTowersData(infiniteTowersData);
             //跳转场景
             GameCommonInfo.SetInfiniteTowersPrepareData(infiniteTowersData);
             GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameInfiniteTowersScene);
         }
         else if (dialogBean.dialogPosition == 1)
         {
             //派遣
             infiniteTowersData.isSend = true;
             //检测
             foreach (CharacterBean itemCharacter in listMembers)
             {
                 WorkerStatusEnum workerStatusEnum = itemCharacter.baseInfo.GetWorkerStatus();
                 if (workerStatusEnum != WorkerStatusEnum.Rest && workerStatusEnum != WorkerStatusEnum.Work)
                 {
                     ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1142));
                     return;
                 }
             }
             //派遣
             foreach (CharacterBean itemCharacter in listMembers)
             {
                 infiniteTowersData.listMembers.Add(itemCharacter.baseInfo.characterId);
                 itemCharacter.baseInfo.SetWorkerStatus(WorkerStatusEnum.InfiniteTowers);
             }
             //计算每层攀登几率
             infiniteTowersData.InitSuccessRate(GameItemsHandler.Instance.manager, listMembers);
             gameData.AddInfinteTowersData(infiniteTowersData);
             RefreshUI();
         }
     }
     else
     {
         if (dialogBean.dialogPosition == 1)
         {
             //重置所有爬塔记录
             GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
             gameData.CleanInfinteTowers();
             RefreshUI();
         }
     }
 }
Example #6
0
 public static void ClearData()
 {
     ArenaPrepareData   = null;
     InfiniteTowersData = null;
     DailyLimitData     = new UserDailyLimitBean();
     CurrentDayData     = new CurrentDayBean();
     ScenesChangeData   = new ScenesChangeBean();
     GameTimeHandler.Instance.SetDayStatus(GameTimeHandler.DayEnum.None);
 }
Example #7
0
    public void StartCombat(MiniGameCombatBean combatData, UserInfiniteTowersBean infiniteTowersData)
    {
        MiniGameHandler.Instance.handlerForCombat.InitGame(combatData);

        UIMiniGameCountDown uiCountDown = UIHandler.Instance.manager.GetUI <UIMiniGameCountDown>(UIEnum.MiniGameCountDown);

        //设置标题
        uiCountDown.SetTitle(infiniteTowersData.layer + TextHandler.Instance.manager.GetTextById(83));
    }
Example #8
0
    public override void Start()
    {
        base.Start();

        infiniteTowersData = GameCommonInfo.InfiniteTowersData;

        //测试
        if (infiniteTowersData == null)
        {
            infiniteTowersData       = new UserInfiniteTowersBean();
            infiniteTowersData.layer = 10;
            infiniteTowersData.listMembers.Add("");
        }
        SceneForInfiniteTowersHandler infiniteTowersHandler = GameScenesHandler.Instance.manager.GetSceneHandler <SceneForInfiniteTowersHandler>();

        StartCoroutine(infiniteTowersHandler.NextLayer(infiniteTowersData));
    }
Example #9
0
    public IEnumerator NextLayer(UserInfiniteTowersBean infiniteTowersData)
    {
        GameTimeHandler.Instance.SetTimeStop();
        //延迟开始。
        yield return(new WaitForSeconds(0.1f));

        //清理一下系统
        SystemUtil.GCCollect();

        this.infiniteTowersData = infiniteTowersData;
        //添加通知
        MiniGameHandler.Instance.handlerForCombat.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus);
        //获取战斗数据
        MiniGameCombatBean gameCombatData = InitCombat(infiniteTowersData);

        //开始战斗
        StartCombat(gameCombatData, infiniteTowersData);
    }
Example #10
0
    public float speedForCombat = 1;  //战斗加速

    /// <summary>
    /// 增加无尽之塔数据
    /// </summary>
    /// <param name="infiniteTowersData"></param>
    public void AddInfinteTowersData(UserInfiniteTowersBean infiniteTowersData)
    {
        listInfinteTowers.Add(infiniteTowersData);
    }
Example #11
0
 /// <summary>
 /// 移除无尽之塔数据
 /// </summary>
 /// <param name="infiniteTowersData"></param>
 /// <returns></returns>
 public bool RemoveInfiniteTowersData(UserInfiniteTowersBean infiniteTowersData)
 {
     return(listInfinteTowers.Remove(infiniteTowersData));
 }
Example #12
0
 /// <summary>
 /// 设置无尽之塔数据
 /// </summary>
 /// <param name="data"></param>
 public static void SetInfiniteTowersPrepareData(UserInfiniteTowersBean data)
 {
     InfiniteTowersData = data;
 }
Example #13
0
    public MiniGameCombatBean InitCombat(UserInfiniteTowersBean infiniteTowersData)
    {
        SceneInfiniteTowersManager infiniteTowersManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInfiniteTowersManager>();

        //设置标牌
        infiniteTowersManager.SetSignForLayer(infiniteTowersData.layer);
        //设置战斗数据
        MiniGameCombatBean miniGameCombat = (MiniGameCombatBean)MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Combat);

        //设置战斗地点
        miniGameCombat.miniGamePosition = infiniteTowersManager.GetCombatPostionByLayer(infiniteTowersData.layer);
        //获取战斗成员数据
        //获取友方数据
        List <CharacterBean> listUserData = new List <CharacterBean>();
        int          totalLucky           = 0;
        GameDataBean gameData             = GameDataHandler.Instance.manager.GetGameData();

        foreach (string memberId in infiniteTowersData.listMembers)
        {
            CharacterBean itemCharacterData = gameData.GetCharacterDataById(memberId);
            if (itemCharacterData != null)
            {
                listUserData.Add(itemCharacterData);
                itemCharacterData.GetAttributes(out CharacterAttributesBean characterAttributes);
                totalLucky += characterAttributes.lucky;
            }
        }

        //如果没有就启动测试数据
        if (listUserData.Count == 0)
        {
            CharacterBean itemCharacterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(10001);
            listUserData.Add(itemCharacterData);
            listUserData.Add(itemCharacterData);
            listUserData.Add(itemCharacterData);
        }

        //获取敌方数据
        List <CharacterBean> listEnemyData = infiniteTowersManager.GetCharacterDataByInfiniteTowersLayer(infiniteTowersData.layer);

        //设置敌方能力
        foreach (CharacterBean itemEnemyData in listEnemyData)
        {
            CharacterAttributesBean enemyAttributes = infiniteTowersManager.GetEnemyAttributesByLayer(itemEnemyData, infiniteTowersData.layer);
            if (enemyAttributes != null)
            {
                itemEnemyData.attributes.InitAttributes(enemyAttributes);
            }
        }

        //初始化战斗数据
        miniGameCombat.gameReason         = MiniGameReasonEnum.Fight;
        miniGameCombat.winSurvivalNumber  = 1;
        miniGameCombat.winBringDownNumber = listEnemyData.Count;
        miniGameCombat.InitData(listUserData, listEnemyData);

        //添加奖励装备
        List <RewardTypeBean> listRewardEquip = RewardTypeEnumTools.GetRewardEnemyEquipForInfiniteTowers(listEnemyData, infiniteTowersData.layer, totalLucky);

        if (!CheckUtil.ListIsNull(listRewardEquip))
        {
            miniGameCombat.listReward.AddRange(listRewardEquip);
        }
        //添加奖励物品
        List <RewardTypeBean> listRewardItems = RewardTypeEnumTools.GetRewardItemsForInfiniteTowers(listEnemyData, infiniteTowersData.layer, totalLucky, false);

        if (!CheckUtil.ListIsNull(listRewardItems))
        {
            miniGameCombat.listReward.AddRange(listRewardItems);
        }
        return(miniGameCombat);
    }
 public void SetData(UserInfiniteTowersBean infiniteTowersData)
 {
     this.infiniteTowersData = infiniteTowersData;
     RefreshData();
 }
Example #15
0
    /// <summary>
    /// 增加爬塔进度
    /// </summary>
    /// <param name="time"></param>
    public void AddInfiniteTowers(int time)
    {
        GameDataBean gameData = manager.GetGameData();
        List <UserInfiniteTowersBean> listInfiniteTowersData = gameData.listInfinteTowers;

        if (CheckUtil.ListIsNull(listInfiniteTowersData))
        {
            return;
        }
        float addTime = 0.01f * time;
        List <UserInfiniteTowersBean> listSendData = new List <UserInfiniteTowersBean>();

        for (int i = 0; i < listInfiniteTowersData.Count; i++)
        {
            UserInfiniteTowersBean itemInfiniteTowerData = listInfiniteTowersData[i];
            if (itemInfiniteTowerData.isSend == false)
            {
                //如果不是派遣数据则不处理
                continue;
            }
            listSendData.Add(itemInfiniteTowerData);
            itemInfiniteTowerData.proForSend += addTime;
            if (itemInfiniteTowerData.proForSend >= 1)
            {
                //计算总计攀登层数
                int addLayer = (int)Mathf.Floor(itemInfiniteTowerData.proForSend);
                List <CharacterBean> listCharacterData = gameData.GetCharacterDataByIds(itemInfiniteTowerData.listMembers);
                for (int f = 0; f < addLayer; f++)
                {
                    itemInfiniteTowerData.proForSend = 0;
                    bool isSuccessNextLayer = itemInfiniteTowerData.CheckIsSccessNextLayer();
                    if (isSuccessNextLayer)
                    {
                        //如果是成功攻略
                        //弹出提示
                        if (manager.gameConfig.isShowDetailsForTower)
                        {
                            AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                            ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1331), itemInfiniteTowerData.layer + ""));
                        }
                        else
                        {
                            if (itemInfiniteTowerData.layer % 10 == 0)
                            {
                                AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                                ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1331), itemInfiniteTowerData.layer + ""));
                            }
                        }

                        //添加奖励物品
                        int totalLucky = 0;
                        for (int c = 0; c < listCharacterData.Count; c++)
                        {
                            CharacterBean itemCharacterData = listCharacterData[c];
                            itemCharacterData.GetAttributes(out CharacterAttributesBean characterAttributes);
                            totalLucky += characterAttributes.lucky;
                        }
                        List <RewardTypeBean> listRewardItems = RewardTypeEnumTools.GetRewardItemsForInfiniteTowers(null, itemInfiniteTowerData.layer, totalLucky, true);
                        if (!CheckUtil.ListIsNull(listRewardItems))
                        {
                            RewardTypeEnumTools.CompleteReward(listCharacterData, listRewardItems);
                        }
                        //增加层数
                        itemInfiniteTowerData.layer++;
                        //达到最大层数
                        UserAchievementBean userAchievement = gameData.GetAchievementData();
                        if (itemInfiniteTowerData.layer > userAchievement.maxInfiniteTowersLayer - 1)
                        {
                            //弹出提示
                            AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                            ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1332), (itemInfiniteTowerData.layer - 1) + ""));
                            itemInfiniteTowerData.proForSend = -1;
                            //还原员工状态
                            for (int c = 0; c < listCharacterData.Count; c++)
                            {
                                CharacterBean itemCharacterData = listCharacterData[c];
                                itemCharacterData.baseInfo.SetWorkerStatus(WorkerStatusEnum.Rest);
                            }
                            //移除数据
                            listInfiniteTowersData.Remove(itemInfiniteTowerData);
                            i--;
                            break;
                        }
                    }
                    else
                    {
                        //弹出提示
                        AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive);
                        ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(1333), itemInfiniteTowerData.layer + ""));
                        //如果是失败攻略
                        itemInfiniteTowerData.proForSend = -1;
                        //还原员工状态
                        for (int c = 0; c < listCharacterData.Count; c++)
                        {
                            CharacterBean itemCharacterData = listCharacterData[c];
                            itemCharacterData.baseInfo.SetWorkerStatus(WorkerStatusEnum.Rest);
                        }
                        //移除数据
                        listInfiniteTowersData.Remove(itemInfiniteTowerData);
                        i--;
                        break;
                    }
                }
            }
        }
        notifyForData?.Invoke(NotifyTypeEnum.InfiniteTowerProChange, new object[] { listSendData });
    }