Esempio n. 1
0
    /// <summary>
    /// 完成成就
    /// </summary>
    public void SubmitAchievement()
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (achievementInfo == null)
        {
            return;
        }
        if (status == AchievementStatusEnum.ToBeConfirmed)
        {
            //添加该成就和奖励
            gameData.GetAchievementData().AddAchievement(achievementInfo.id);
            RewardTypeEnumTools.CompleteReward(null, achievementInfo.reward_data);
            //设置状态
            SetAchStatus(AchievementStatusEnum.Completed);
            //刷新UI
            if (GetUIComponent <UITownGuildAchievement>() != null)
            {
                GetUIComponent <UITownGuildAchievement>().InitDataByType(achievementInfo.type);
            }
            //弹出特效提示
            AchievementDialogView achDialog = DialogHandler.Instance.CreateDialog <AchievementDialogView>(DialogEnum.Achievement, null, null);
            achDialog.SetData(achievementInfo);
            //播放音效
            AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);
            //解锁steam成就
            SteamHandler.Instance.UnLockAchievement(achievementInfo.id);
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 提交按钮
    /// </summary>
    public void OnClickSubmit()
    {
        UIGameText   uiGameText = (UIGameText)uiComponent;
        GameDataBean gameData   = GameDataHandler.Instance.manager.GetGameData();

        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);
        //检测是否启用小游戏
        if (CheckUtil.StringIsNull(textData.pre_data_minigame))
        {
            List <PreTypeBean> listPre = PreTypeEnumTools.GetListPreData(textData.pre_data);
            foreach (PreTypeBean itemPreData in listPre)
            {
                PreTypeEnumTools.GetPreDetails(itemPreData, gameData);
                if (!itemPreData.isPre)
                {
                    ToastHandler.Instance.ToastHint(itemPreData.spPreIcon, itemPreData.preFailStr);
                    return;
                }
            }
            //完成前置条件
            PreTypeEnumTools.CompletePre(listPre, gameData);
            //完成所有奖励
            RewardTypeEnumTools.CompleteReward(null, textData.reward_data);
            uiGameText.SelectText(textData);
        }
        else
        {
            DialogBean dialogBean = new DialogBean();
            PickForCharacterDialogView dialogView = DialogHandler.Instance.CreateDialog <PickForCharacterDialogView>(DialogEnum.PickForCharacter, this, dialogBean);
            PreTypeForMiniGameEnumTools.GetPlayerNumber(textData.pre_data_minigame, out int playerNumber);
            dialogView.SetPickCharacterMax(playerNumber);
        }
    }
    /// <summary>
    /// 提交晋升
    /// </summary>
    public void OnClickSubmit()
    {
        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (isAllPre)
        {
            //前置如果有需要临时支付的条件
            PreTypeEnumTools.CompletePre(storeInfo.pre_data, gameData);
            //获取所有奖励
            RewardTypeEnumTools.CompleteReward(null, storeInfo.reward_data);
            //客栈升级
            gameData.innAttributes.SetInnLevelUp();

            ToastHandler.Instance.ToastHint(ivTitleIcon.sprite, TextHandler.Instance.manager.GetTextById(1062));
            UIHandler.Instance.manager.OpenUIAndCloseOther <UIGameMain>(UIEnum.GameMain);

            DialogBean            dialogData        = new DialogBean();
            AchievementDialogView achievementDialog = DialogHandler.Instance.CreateDialog <AchievementDialogView>(DialogEnum.Achievement, this, dialogData);
            achievementDialog.SetData(storeInfo);
        }
        else
        {
            ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1061));
        }
    }
Esempio n. 4
0
 /// <summary>
 /// 增加奖励
 /// </summary>
 /// <param name="reward"></param>
 public void AddReward(string reward)
 {
     if (CheckUtil.StringIsNull(reward))
     {
         return;
     }
     RewardTypeEnumTools.CompleteReward(null, reward);
 }
Esempio n. 5
0
    /// <summary>
    /// 创建胜利数据
    /// </summary>
    private void CreateWinItems()
    {
        CptUtil.RemoveChildsByActive(objResultContainer.transform);
        if (miniGameData == null)
        {
            return;
        }
        //通常列表
        string     reasonStr     = "";
        GameObject objReasonItem = Instantiate(objResultContainer, objResultWinModel);
        ItemMiniGameEndResultWinCpt itemReasonWin = objReasonItem.GetComponent <ItemMiniGameEndResultWinCpt>();

        switch (miniGameData.gameReason)
        {
        case MiniGameReasonEnum.Improve:
            //晋升成功
            reasonStr = TextHandler.Instance.manager.GetTextById(43);
            //数据添加
            Sprite attributeIcon          = null;
            string attributeRewardContent = "";
            foreach (MiniGameCharacterBean miniGameCharacterData in miniGameData.listUserGameData)
            {
                switch (miniGameData.gameType)
                {
                case MiniGameEnum.Cooking:
                    attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Cook) + " +5";
                    miniGameCharacterData.characterData.baseInfo.chefInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                    break;

                case MiniGameEnum.Barrage:
                    attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Speed) + " +5";
                    miniGameCharacterData.characterData.baseInfo.waiterInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                    break;

                case MiniGameEnum.Account:
                    attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Account) + " +5";
                    miniGameCharacterData.characterData.baseInfo.accountantInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                    break;

                case MiniGameEnum.Debate:
                    attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Charm) + " +5";
                    miniGameCharacterData.characterData.baseInfo.accostInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                    break;

                case MiniGameEnum.Combat:
                    attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Force) + " +5";
                    miniGameCharacterData.characterData.baseInfo.beaterInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                    break;
                }
            }
            //创建属性奖励
            attributeIcon = IconDataHandler.Instance.manager.GetIconSpriteByName("keyboard_button_up_1");
            CreateWinReward(attributeIcon, null, attributeRewardContent);
            break;

        case MiniGameReasonEnum.Fight:
            //决斗胜利
            reasonStr = TextHandler.Instance.manager.GetTextById(44);
            break;

        case MiniGameReasonEnum.Recruit:
            //决斗胜利
            reasonStr = TextHandler.Instance.manager.GetTextById(45);
            break;

        default:
            reasonStr = TextHandler.Instance.manager.GetTextById(901);
            break;
        }
        itemReasonWin.SetContent(reasonStr);
        itemReasonWin.SetIcon(IconDataHandler.Instance.manager.GetIconSpriteByName("text_win_1"));
        //添加奖励
        RewardTypeEnumTools.CompleteReward(miniGameData.GetListUserCharacterData(), miniGameData.listReward);
        //遍历奖励列表
        foreach (var itemReward in miniGameData.listReward)
        {
            CreateWinReward(itemReward.spRewardIcon, itemReward.workerCharacterData, itemReward.rewardDescribe);
        }
    }
Esempio n. 6
0
    public void Submit(DialogView dialogView, DialogBean dialogBean)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        //支付金钱
        gameData.PayMoney(levelData.price_l, levelData.price_m, levelData.price_s);
        //扣除时间
        int preGameTime = int.Parse(levelData.mark);

        //扣除时间
        GameTimeHandler.Instance.AddHour(preGameTime);
        //如果有研究菜谱 菜谱增加经验
        GameDataHandler.Instance.AddTimeProcess(preGameTime * 60);
        //判断玩哪个游戏
        MiniGameBaseBean miniGameData = null;

        switch (workerType)
        {
        case WorkerEnum.Chef:
            miniGameData = InitChefGame();
            break;

        case WorkerEnum.Waiter:
            //设置弹幕游戏数据
            miniGameData = InitWaiterGame();
            break;

        case WorkerEnum.Accountant:
            //设置算账游戏
            miniGameData = InitAccountantGame();
            break;

        case WorkerEnum.Accost:
            //设置辩论游戏
            miniGameData = InitAccostGame();
            break;

        case WorkerEnum.Beater:
            miniGameData = InitBeaterGame();
            break;

        default:
            break;
        }
        miniGameData.preGameTime = preGameTime;
        miniGameData.gameReason  = MiniGameReasonEnum.Improve;
        if (dialogBean.dialogPosition == 0)
        {
            //设置竞技场数据
            GameCommonInfo.SetArenaPrepareData(miniGameData);
            //保存之前的位置
            GameCommonInfo.ScenesChangeData.beforeUserPosition = GameControlHandler.Instance.manager.GetControl <BaseControl>(ControlEnum.Normal).transform.position;
            //跳转到竞技场
            GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameArenaScene);
        }
        else
        {
            bool isWin = characterData.CalculationGuildSendWin(miniGameData.gameType);
            if (isWin)
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7021));
                AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                //完成奖励
                RewardTypeEnumTools.CompleteReward(miniGameData.GetListUserCharacterData(), miniGameData.listReward);

                //数据添加
                Sprite attributeIcon          = IconDataHandler.Instance.manager.GetIconSpriteByName("keyboard_button_up_1");
                string attributeRewardContent = "";
                foreach (MiniGameCharacterBean miniGameCharacterData in miniGameData.listUserGameData)
                {
                    switch (miniGameData.gameType)
                    {
                    case MiniGameEnum.Cooking:
                        attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Cook) + " +5";
                        miniGameCharacterData.characterData.baseInfo.chefInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                        break;

                    case MiniGameEnum.Barrage:
                        attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Speed) + " +5";
                        miniGameCharacterData.characterData.baseInfo.waiterInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                        break;

                    case MiniGameEnum.Account:
                        attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Account) + " +5";
                        miniGameCharacterData.characterData.baseInfo.accountantInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                        break;

                    case MiniGameEnum.Debate:
                        attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Charm) + " +5";
                        miniGameCharacterData.characterData.baseInfo.accostInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                        break;

                    case MiniGameEnum.Combat:
                        attributeRewardContent = AttributesTypeEnumTools.GetAttributesName(AttributesTypeEnum.Force) + " +5";
                        miniGameCharacterData.characterData.baseInfo.beaterInfo.LevelUp(miniGameCharacterData.characterData.attributes);
                        break;
                    }
                }
                ToastHandler.Instance.ToastHint(attributeIcon, attributeRewardContent);
                //刷新UI
                ((UITownGuildImprove)uiComponent).RefreshUI();
            }
            else
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7022));
                AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive);
            }
        }
    }
Esempio n. 7
0
    public void Submit(DialogView dialogView, DialogBean dialogBean)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (dialogView as PickForCharacterDialogView)
        {
            //判断时间是否过晚
            GameTimeHandler.Instance.GetTime(out float hour, out float min);
            if (hour >= 21 || hour < 6)
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1034));
                return;
            }
            //支付金钱
            gameData.PayMoney(miniGameData.preMoneyL, miniGameData.preMoneyM, miniGameData.preMoneyS);
            //扣除时间
            GameTimeHandler.Instance.AddHour(miniGameData.preGameTime);
            //如果有研究菜谱 菜谱增加经验
            GameDataHandler.Instance.AddTimeProcess(miniGameData.preGameTime * 60);
            //设置参赛人员
            PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView;
            List <CharacterBean>       listCharacter          = pickForCharacterDialog.GetPickCharacter();
            miniGameData.InitData(listCharacter);
            //今日不能再参加
            GameCommonInfo.DailyLimitData.AddArenaAttendedCharacter(listCharacter);
            //删除该条数据
            GameCommonInfo.DailyLimitData.RemoveArenaDataByType(trophyType, miniGameData);

            if (arenaJoinType == 1)
            {
                //设置竞技场数据
                GameCommonInfo.SetArenaPrepareData(miniGameData);
                //保存之前的位置
                GameCommonInfo.ScenesChangeData.beforeUserPosition = GameControlHandler.Instance.manager.GetControl <BaseControl>(GameControlHandler.ControlEnum.Normal).transform.position;
                //跳转到竞技场
                GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameArenaScene);
            }
            else if (arenaJoinType == 2)
            {
                //刷新UI
                ((UITownArena)uiComponent).RefreshUI();
                CharacterBean character = listCharacter[0];
                bool          isWin     = character.CalculationArenaSendWin(miniGameData.gameType);
                if (isWin)
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7011));
                    AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                    //设置不记录
                    foreach (RewardTypeBean rewardData in miniGameData.listReward)
                    {
                        if (rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyAdvanced ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyElementary ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyIntermediate ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyLegendary)
                        {
                            rewardData.isRecord = false;
                        }
                    }
                    //完成奖励
                    RewardTypeEnumTools.CompleteReward(listCharacter, miniGameData.listReward);
                }
                else
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7012));
                    AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive);
                }
            }
        }
        else
        {
            //弹出选人界面
            DialogBean dialogData = new DialogBean();
            PickForCharacterDialogView pickForCharacterDialog = DialogHandler.Instance.CreateDialog <PickForCharacterDialogView>(DialogEnum.PickForCharacter, this, dialogData);
            pickForCharacterDialog.SetPickCharacterMax(1);
            List <string> listExpelCharacterId = new List <string>();
            //排出今日已经参加过的人
            List <string> listAttendedCharacterId = GameCommonInfo.DailyLimitData.GetArenaAttendedCharacter();
            //排出等级不符合的人
            List <CharacterBean> listWorker = gameData.GetAllCharacterData();
            foreach (CharacterBean itemWorker in listWorker)
            {
                bool isExpel = false;
                CharacterWorkerBaseBean workerInfo = null;
                switch (gameType)
                {
                case MiniGameEnum.Cooking:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
                    break;

                case MiniGameEnum.Barrage:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
                    break;

                case MiniGameEnum.Account:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);
                    break;

                case MiniGameEnum.Debate:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
                    break;

                case MiniGameEnum.Combat:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater);
                    break;
                }
                int workLevel = workerInfo.GetLevel();
                switch (trophyType)
                {
                case TrophyTypeEnum.Elementary:
                    if (workLevel != 0 && workLevel != 1)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Intermediate:
                    if (workLevel != 2 && workLevel != 3)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Advanced:
                    if (workLevel != 4 && workLevel != 5)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Legendary:
                    if (workLevel != 6)
                    {
                        isExpel = true;
                    }
                    break;
                }
                if (isExpel)
                {
                    listExpelCharacterId.Add(itemWorker.baseInfo.characterId);
                }
            }
            listExpelCharacterId.AddRange(listAttendedCharacterId);
            pickForCharacterDialog.SetExpelCharacter(listExpelCharacterId);
            if (miniGameData.gameType == MiniGameEnum.Combat)
            {
                pickForCharacterDialog.SetPickCharacterMax(miniGameData.winBringDownNumber);
            }
        }
    }
Esempio n. 8
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 });
    }