示例#1
0
    public void UITextSelectResult(TextInfoBean textData, List <CharacterBean> listPickCharacterData)
    {
        if (!CheckUtil.StringIsNull(textData.pre_data_minigame))
        {
            //小游戏初始化
            List <PreTypeForMiniGameBean> listPre    = PreTypeForMiniGameEnumTools.GetListPreData(textData.pre_data_minigame);
            List <RewardTypeBean>         listReward = RewardTypeEnumTools.GetListRewardData(textData.reward_data);
            MiniGameBaseBean miniGameData            = PreTypeForMiniGameEnumTools.GetMiniGameData(null, textData.pre_data_minigame, listPickCharacterData);
            miniGameData.listReward = listReward;
            switch (miniGameData.gameType)
            {
            case MiniGameEnum.Combat:
                MiniGameHandler.Instance.handlerForCombat.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus);
                MiniGameHandler.Instance.handlerForCombat.InitGame((MiniGameCombatBean)miniGameData);
                break;

            case MiniGameEnum.Debate:
                MiniGameHandler.Instance.handlerForDebate.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus);
                MiniGameHandler.Instance.handlerForDebate.InitGame((MiniGameDebateBean)miniGameData);
                break;
            }
            //隐藏重要NPC
            if (NpcHandler.Instance.buildForImportant)
            {
                NpcHandler.Instance.buildForImportant.HideNpc();
            }
            if (NpcHandler.Instance.builderForFamily)
            {
                NpcHandler.Instance.builderForFamily.HideNpc();
            }
        }
        notifyForEvent?.Invoke(NotifyEventTypeEnum.TextSelectResult, new object[] { textData });
    }
示例#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);
        }
    }
示例#3
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);
        }
    }
    /// <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));
        }
    }
示例#5
0
 /// <summary>
 /// 增加奖励
 /// </summary>
 /// <param name="reward"></param>
 public void AddReward(string reward)
 {
     if (CheckUtil.StringIsNull(reward))
     {
         return;
     }
     RewardTypeEnumTools.CompleteReward(null, reward);
 }
示例#6
0
    /// <summary>
    /// 设置奖励
    /// </summary>
    public void SetReward(string rewardData)
    {
        float animTimeDelay = 1f;

        CptUtil.RemoveChildsByActive(objRewardContent.transform);
        List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(rewardData);

        foreach (var itemRewardData in listRewardData)
        {
            RewardTypeEnumTools.GetRewardDetails(itemRewardData);
            Sprite spReward = itemRewardData.spRewardIcon;
            CreateRewardItem(spReward, animTimeDelay);
            animTimeDelay += 0.1f;
        }
    }
示例#7
0
 /// <summary>
 /// 设置奖励
 /// </summary>
 /// <param name="listReward"></param>
 public void SetReward(List <RewardTypeBean> listReward)
 {
     foreach (RewardTypeBean itemReward in listReward)
     {
         GameObject objReward = Instantiate(objRewardContainer, objRewardModel);
         Image      ivIcon    = CptUtil.GetCptInChildrenByName <Image>(objReward, "Icon");
         Text       tvNumber  = CptUtil.GetCptInChildrenByName <Text>(objReward, "Text");
         RewardTypeEnumTools.GetRewardDetails(itemReward);
         ivIcon.sprite = itemReward.spRewardIcon;
         tvNumber.text = "x" + itemReward.rewardNumber;
         if (itemReward.dataType == RewardTypeEnum.AddItems)
         {
             PopupItemsButton infoItemsPopup = objReward.GetComponent <PopupItemsButton>();
             ItemsInfoBean    itemsInfo      = GameItemsHandler.Instance.manager.GetItemsById(itemReward.rewardId);
             infoItemsPopup.SetData(itemsInfo, itemReward.spRewardIcon);
         }
     }
 }
    /// <summary>
    /// 创建奖励数据
    /// </summary>
    /// <param name="rewardData"></param>
    public void CreateRewardDataItem(string rewardData)
    {
        List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(rewardData);

        foreach (var itemData in listRewardData)
        {
            GameObject objReward = Instantiate(objRewardContainer, objRewardModel);
            RewardTypeEnumTools.GetRewardDetails(itemData);
            //设置图标
            Sprite spIcon = itemData.spRewardIcon;
            Image  ivIcon = CptUtil.GetCptInChildrenByName <Image>(objReward, "Icon");
            ivIcon.sprite = spIcon;
            //设置描述
            string rewardDes = itemData.rewardDescribe;
            Text   tvContent = CptUtil.GetCptInChildrenByName <Text>(objReward, "Text");
            tvContent.text  = rewardDes;
            tvContent.color = colorPre;
        }
        GameUtil.RefreshRectViewHight((RectTransform)objRewardContainer.transform, true);
        GameUtil.RefreshRectViewHight((RectTransform)transform, true);
    }
示例#9
0
    /// <summary>
    /// 创建迷你游戏数据
    /// </summary>
    /// <returns></returns>
    private List<MiniGameBaseBean> CreateMiniGameData(TrophyTypeEnum type)
    {
        List<MiniGameBaseBean> listMiniGameData = new List<MiniGameBaseBean>();
        int arenaNumber = UnityEngine.Random.Range(5, 15);
        for (int i = 0; i < arenaNumber; i++)
        {
            MiniGameEnum gameType = MiniGameEnumTools.GetRandomMiniGameTypeForArena();
            StoreInfoBean storeInfo = null;

            MiniGameBaseBean miniGameData = MiniGameEnumTools.GetMiniGameData(gameType);
            miniGameData.gameReason = MiniGameReasonEnum.Fight;
            switch (gameType)
            {
                case MiniGameEnum.Cooking:
                    storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Chef);
                    miniGameData = CreateCookingGameData((MiniGameCookingBean)miniGameData, storeInfo, type);
                    break;
                case MiniGameEnum.Barrage:
                    storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Waiter);
                    miniGameData = CreateBarrageGameData((MiniGameBarrageBean)miniGameData, storeInfo, type);
                    break;
                case MiniGameEnum.Account:
                    storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Accountant);
                    miniGameData = CreateAccountGameData((MiniGameAccountBean)miniGameData, storeInfo, type);
                    break;
                case MiniGameEnum.Debate:
                    storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Accost);
                    miniGameData = CreateDebateGameData((MiniGameDebateBean)miniGameData, storeInfo, type);
                    break;
                case MiniGameEnum.Combat:
                    storeInfo = GetStoreInfoByTypeAndWorker(type, WorkerEnum.Beater);
                    miniGameData = CreateCombatGameData((MiniGameCombatBean)miniGameData, storeInfo, type);
                    break;
            }
            PreTypeForMiniGameEnumTools.GetMiniGameData(miniGameData, storeInfo.pre_data_minigame);
            //奖励添加
            miniGameData.listReward = new List<RewardTypeBean>();
            List<RewardTypeBean> listReward = RewardTypeEnumTools.GetListRewardData(storeInfo.reward_data);
            //固定奖励
            List<RewardTypeBean> listFixedReward = new List<RewardTypeBean>();
            //随机奖励
            List<RewardTypeBean> listRandomReward = new List<RewardTypeBean>();
            foreach (RewardTypeBean itemReward in listReward)
            {
                switch (itemReward.GetRewardType())
                {
                    case RewardTypeEnum.AddMoneyL:
                    case RewardTypeEnum.AddMoneyM:
                    case RewardTypeEnum.AddMoneyS:
                    case RewardTypeEnum.AddArenaTrophyElementary:
                    case RewardTypeEnum.AddArenaTrophyIntermediate:
                    case RewardTypeEnum.AddArenaTrophyAdvanced:
                    case RewardTypeEnum.AddArenaTrophyLegendary:
                        if (miniGameData.winBringDownNumber > 0)
                        {
                            //针对多人战 奖励提升
                            itemReward.data = long.Parse(itemReward.data) * miniGameData.winBringDownNumber + "";
                        }
                        listFixedReward.Add(itemReward);
                        break;
                    default:
                        listRandomReward.Add(itemReward);
                        break;
                }
            }
            miniGameData.listReward.AddRange(listFixedReward);
            if (!CheckUtil.ListIsNull(listRandomReward))
            {
                RewardTypeBean randomReward = RandomUtil.GetRandomDataByList(listRandomReward);
                miniGameData.listReward.Add(randomReward);
            }

            //添加对应的奖杯
            switch (type)
            {
                case TrophyTypeEnum.Elementary:
                    break;
                case TrophyTypeEnum.Intermediate:
                    break;
                case TrophyTypeEnum.Advanced:
                    break;
                case TrophyTypeEnum.Legendary:
                    break;
            }
            //设置游戏时间
            if (storeInfo.mark != null)
                miniGameData.preGameTime = int.Parse(storeInfo.mark);
            //设置前置金钱
            miniGameData.preMoneyL = storeInfo.price_l;
            miniGameData.preMoneyM = storeInfo.price_m;
            miniGameData.preMoneyS = storeInfo.price_s;
            //添加游戏数据
            listMiniGameData.Add(miniGameData);
        }
        return listMiniGameData;
    }
示例#10
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);
        }
    }
示例#11
0
    /// <summary>
    /// 设置奖励
    /// </summary>
    /// <param name="data"></param>
    public void SetReward(AchievementInfoBean data)
    {
        CptUtil.RemoveChildsByActive(objRewardContent.transform);
        if (data == null)
        {
            return;
        }

        List <RewardTypeBean> listRewardData = RewardTypeEnumTools.GetListRewardData(data.reward_data);
        GameObject            objTitle       = Instantiate(objRewardContent, objRewardTitle);

        foreach (var itemRewardData in listRewardData)
        {
            RewardTypeEnumTools.GetRewardDetails(itemRewardData);
            string rewardDes = itemRewardData.rewardDescribe;
            Sprite spReward  = itemRewardData.spRewardIcon;
            CreateRewardItem(rewardDes, spReward);
        }

        //}
        ////奖励-道具
        //if (!CheckUtil.StringIsNull(data.reward_items_ids))
        //{
        //    List<long> listItems = data.GetRewardItems();
        //    foreach (long itemId in listItems)
        //    {
        //        ItemsInfoBean itemsInfo = GameItemsHandler.Instance.manager.GetItemsById(itemId);
        //        if (itemsInfo == null)
        //            continue;
        //        Sprite spIcon;
        //        if (itemsInfo.items_type == (int)GeneralEnum.Hat)
        //        {
        //            spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_hat_1");
        //        }
        //        else if (itemsInfo.items_type == (int)GeneralEnum.Clothes)
        //        {
        //            spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_clothes_1");
        //        }
        //        else if (itemsInfo.items_type == (int)GeneralEnum.Shoes)
        //        {
        //            spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName("unknown_shoes_1");
        //        }
        //        else
        //        {
        //            spIcon = GameItemsHandler.Instance.manager.GetItemsSpriteByName(itemsInfo.icon_key);
        //        }
        //        CreateRewardItem(itemsInfo.name, 0, spIcon);
        //    }
        //}
        ////奖励-建筑材料
        //if (!CheckUtil.StringIsNull(data.reward_build_ids))
        //{
        //    List<long> listBuild = data.GetRewardBuild();
        //    foreach (long buildId in listBuild)
        //    {
        //        BuildItemBean buildItem = InnBuildHandler.Instance.manager.GetBuildDataById(buildId);
        //        if (buildItem == null)
        //            continue;
        //        Sprite spIcon = innBuildManager.GetFurnitureSpriteByName(buildItem.icon_key);
        //        CreateRewardItem(buildItem.name, 0, spIcon);
        //    }
        //}
    }
示例#12
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);
            }
        }
    }
示例#13
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);
            }
        }
    }
示例#14
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);
    }
示例#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 });
    }