예제 #1
0
    /// <summary>
    /// 设置装备
    /// </summary>
    /// <param name="itemInfo"></param>
    /// <param name="isTFequip">是否是幻化</param>
    public void SetEquip(ItemsInfoBean itemInfo, bool isTFequip)
    {
        if (itemInfo == null)
        {
            return;
        }
        GameDataBean             gameData = GameDataHandler.Instance.manager.GetGameData();
        ItemGameBackpackEquipCpt itemCpt  = null;
        long        unloadEquipId         = 0;
        GeneralEnum itemType = itemInfo.GetItemsType();

        switch (itemType)
        {
        case GeneralEnum.Hat:

            if (isTFequip)
            {
                itemCpt       = equipTFHat;
                unloadEquipId = characterData.equips.hatTFId;
                characterData.equips.hatTFId = itemInfo.id;
            }
            else
            {
                itemCpt       = equipHat;
                unloadEquipId = characterData.equips.hatId;
                characterData.equips.hatId = itemInfo.id;
            }

            break;

        case GeneralEnum.Clothes:
            if (isTFequip)
            {
                itemCpt       = equipTFClothes;
                unloadEquipId = characterData.equips.clothesTFId;
                characterData.equips.clothesTFId = itemInfo.id;
            }
            else
            {
                itemCpt       = equipClothes;
                unloadEquipId = characterData.equips.clothesId;
                characterData.equips.clothesId = itemInfo.id;
            }
            break;

        case GeneralEnum.Shoes:
            if (isTFequip)
            {
                itemCpt       = equipTFShoes;
                unloadEquipId = characterData.equips.shoesTFId;
                characterData.equips.shoesTFId = itemInfo.id;
            }
            else
            {
                itemCpt       = equipShoes;
                unloadEquipId = characterData.equips.shoesId;
                characterData.equips.shoesId = itemInfo.id;
            }
            break;

        case GeneralEnum.Chef:
        case GeneralEnum.Waiter:
        case GeneralEnum.Accoutant:
        case GeneralEnum.Accost:
        case GeneralEnum.Beater:
            if (isTFequip)
            {
                itemCpt       = equipTFHand;
                unloadEquipId = characterData.equips.handTFId;
                characterData.equips.handTFId = itemInfo.id;
            }
            else
            {
                itemCpt       = equipHand;
                unloadEquipId = characterData.equips.handId;
                characterData.equips.handId = itemInfo.id;
            }
            break;
        }
        itemCpt.SetData(characterData, itemInfo, null);

        //如果有卸载的装备 则添加到背包
        if (unloadEquipId != 0)
        {
            gameData.AddItemsNumber(unloadEquipId, 1);
        }
        //刷新场景中的人物
        if (SceneUtil.GetCurrentScene() == ScenesEnum.GameInnScene)
        {
            NpcHandler.Instance.builderForWorker.RefreshWorkerData();
            NpcHandler.Instance.builderForFamily.RefreshFamilyData();
        }
    }
예제 #2
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);
            }
        }
    }
예제 #3
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);
    }
예제 #4
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);
            }
        }
    }
예제 #5
0
    /// <summary>
    /// 增加一个用户数据
    /// </summary>
    /// <param name="gameData"></param>
    public void AddGameData(GameDataBean gameData)
    {
        string userId = "UserId_" + SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N);

        gameData.userCharacter.baseInfo.characterId = userId;
        gameData.userId              = userId;
        gameData.moneyS              = 3000;
        gameData.moneyM              = 0;
        gameData.moneyL              = 0;
        gameData.innBuildData        = new InnBuildBean();
        gameData.listBuild           = new List <ItemBean>();
        gameData.listItems           = new List <ItemBean>();
        gameData.listWorkerCharacter = new List <CharacterBean>();
        gameData.listMenu            = new List <MenuOwnBean>();

        //添加门
        List <Vector3> doorPositionList = new List <Vector3>();

        doorPositionList.Add(new Vector3(4, 0, 0));
        doorPositionList.Add(new Vector3(5, 0, 0));
        doorPositionList.Add(new Vector3(6, 0, 0));
        InnResBean innResDoor = new InnResBean(90001, new Vector3(4.5f, 0.5f, 0), doorPositionList, Direction2DEnum.Left);
        //添加家具
        List <Vector3> counterPositionList = new List <Vector3>();

        counterPositionList.Add(new Vector3(7, 1, 0));
        counterPositionList.Add(new Vector3(6, 1, 0));
        counterPositionList.Add(new Vector3(7, 2, 0));
        counterPositionList.Add(new Vector3(6, 2, 0));
        counterPositionList.Add(new Vector3(7, 3, 0));
        counterPositionList.Add(new Vector3(6, 3, 0));
        counterPositionList.Add(new Vector3(8, 2, 0));
        InnResBean innResCounter = new InnResBean(50001, new Vector3(6.5f, 2.5f, 0), counterPositionList, Direction2DEnum.Right);

        List <Vector3> stovePositionList = new List <Vector3>();

        stovePositionList.Add(new Vector3(3, 6, 0));
        stovePositionList.Add(new Vector3(4, 6, 0));
        stovePositionList.Add(new Vector3(3, 5, 0));
        stovePositionList.Add(new Vector3(4, 5, 0));
        stovePositionList.Add(new Vector3(3, 4, 0));
        stovePositionList.Add(new Vector3(4, 4, 0));
        stovePositionList.Add(new Vector3(2, 5, 0));
        InnResBean innResStove = new InnResBean(40001, new Vector3(2.5f, 5.5f, 0), stovePositionList, Direction2DEnum.Left);

        List <Vector3> tablePositionList = new List <Vector3>();

        tablePositionList.Add(new Vector3(2, 2, 0));
        tablePositionList.Add(new Vector3(3, 2, 0));
        InnResBean innResTable = new InnResBean(30001, new Vector3(1.5f, 2.5f, 0), tablePositionList, Direction2DEnum.Left);

        gameData.innBuildData.AddFurniture(1, innResDoor);
        gameData.innBuildData.AddFurniture(1, innResCounter);
        gameData.innBuildData.AddFurniture(1, innResStove);
        gameData.innBuildData.AddFurniture(1, innResTable);
        //修改客栈大小
        gameData.innBuildData.ChangeInnSize(1, new List <InnResBean>()
        {
            innResDoor
        }, 9, 9);
        //母亲的信
        gameData.listItems.Add(new ItemBean(1500001, 1));
        //添加家具
        gameData.listBuild.Add(new ItemBean(30001, 2));

        //添加菜单
        gameData.listMenu.Add(new MenuOwnBean(1));
        gameData.listMenu.Add(new MenuOwnBean(2));

        //设置时间
        TimeBean gameTime = new TimeBean();

        gameTime.SetTimeForYMD(221, 1, 0);
        gameData.gameTime = gameTime;

        SetGameDataByUserId(userId, gameData);
    }
예제 #6
0
 /// <summary>
 /// 游戏结束
 /// </summary>
 /// <param name="isWinGame"></param>
 /// <param name="isSlow">是否开启慢镜头</param>
 public virtual void EndGame(MiniGameResultEnum gameResulte, bool isSlow)
 {
     if (GetMiniGameStatus() == MiniGameStatusEnum.Gameing)
     {
         SetMiniGameStatus(MiniGameStatusEnum.GameEnd);
         StopAllCoroutines();
         //拉近尽头
         BaseControl baseControl = GameControlHandler.Instance.manager.GetControl();
         if (baseControl)
         {
             baseControl.SetCameraOrthographicSize(6);
         }
         if (isSlow)
         {
             //开启慢镜头
             Time.timeScale = 0.1f;
         }
         transform.DOScale(new Vector3(1, 1, 1), 0.3f).OnComplete(delegate()
         {
             Time.timeScale = 1f;
             if (baseControl)
             {
                 baseControl.SetCameraOrthographicSize();
             }
             if (miniGameBuilder)
             {
                 miniGameBuilder.DestroyAll();
             }
             //设置游戏数据
             miniGameData.SetGameResult(gameResulte);
             GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
             //经验加成
             List <MiniGameCharacterBean> listUserData = miniGameData.GetListUserGameData();
             List <CharacterBean> listWorkerData       = gameData.GetAllCharacterData();
             foreach (MiniGameCharacterBean itemCharacterData in listUserData)
             {
                 foreach (CharacterBean itemWorkerData in listWorkerData)
                 {
                     if (itemWorkerData.baseInfo.characterId == null || itemCharacterData.characterData.baseInfo.characterId == null)
                     {
                         continue;
                     }
                     if (itemWorkerData.baseInfo.characterId.Equals(itemCharacterData.characterData.baseInfo.characterId))
                     {
                         WorkerEnum workerType = MiniGameEnumTools.GetWorkerTypeByMiniGameType(miniGameData.gameType);
                         CharacterWorkerBaseBean characterWorker = itemWorkerData.baseInfo.GetWorkerInfoByType(workerType);
                         if (miniGameData.GetGameResult() == MiniGameResultEnum.Win)
                         {
                             characterWorker.AddExp(10, out bool isLevelUp);
                         }
                         else
                         {
                             characterWorker.AddExp(5, out bool isLevelUp);
                         }
                     }
                 }
             }
             //打开游戏结束UI
             UIMiniGameEnd uiMiniGameEnd = UIHandler.Instance.manager.OpenUIAndCloseOther <UIMiniGameEnd>(UIEnum.MiniGameEnd);
             uiMiniGameEnd.SetData(miniGameData);
             uiMiniGameEnd.SetCallBack(this);
         });
         //通知 游戏结束
         notifyForMiniGameStatus?.Invoke(MiniGameStatusEnum.GameEnd, new object[] { miniGameData });
         AudioHandler.Instance.StopMusic();
     }
 }
예제 #7
0
    /// <summary>
    /// 游玩时间处理
    /// </summary>
    public void HandleForPlayTime()
    {
        GameDataBean gameData = manager.GetGameData();

        gameData.playTime.AddTimeForHMS(0, 0, 1);
    }
예제 #8
0
 /// <summary>
 /// 通过用户ID保存用户数据
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="gameData"></param>
 public void SetGameDataByUserId(string userId, GameDataBean gameData)
 {
     mGameDataService.UpdateDataByUserId(userId, gameData);
 }
예제 #9
0
    public void Submit(DialogView dialogView, DialogBean dialogData)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (dialogView as PickForNumberDialogView)
        {
            PickForNumberDialogView pickForNumberDialog = dialogView as PickForNumberDialogView;
            long number = pickForNumberDialog.GetPickNumber();
            //检测金钱
            if (!gameData.HasEnoughMoney(storeInfo.price_l * number, storeInfo.price_m * number, storeInfo.price_s * number))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005));
                return;
            }
            if (!gameData.HasEnoughGuildCoin(storeInfo.guild_coin * number))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1012));
                return;
            }
            if (!gameData.HasEnoughTrophy(storeInfo.trophy_elementary * number, storeInfo.trophy_intermediate * number, storeInfo.trophy_advanced * number, storeInfo.trophy_legendary * number))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1021));
                return;
            }
            gameData.PayMoney(storeInfo.price_l * number, storeInfo.price_m * number, storeInfo.price_s * number);
            gameData.PayGuildCoin(storeInfo.guild_coin * number);
            gameData.PayTrophy(storeInfo.trophy_elementary * number, storeInfo.trophy_intermediate * number, storeInfo.trophy_advanced * number, storeInfo.trophy_legendary * number);

            //加上获取数量
            int getNumber = 1;
            if (storeInfo.get_number != 0)
            {
                getNumber = storeInfo.get_number;
            }
            gameData.AddBuildNumber(buildItemData.id, number * getNumber);
            RefreshUI();
            string toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1010), buildItemData.name + "x" + (number * getNumber));
            ToastHandler.Instance.ToastHint(ivIcon.sprite, toastStr);
        }
        else
        {
            //检测金钱
            if (!gameData.HasEnoughMoney(storeInfo.price_l, storeInfo.price_m, storeInfo.price_s))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005));
                return;
            }
            if (!gameData.HasEnoughGuildCoin(storeInfo.guild_coin))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1012));
                return;
            }
            if (!gameData.HasEnoughTrophy(storeInfo.trophy_elementary, storeInfo.trophy_intermediate, storeInfo.trophy_advanced, storeInfo.trophy_legendary))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1021));
                return;
            }
            gameData.PayMoney(storeInfo.price_l, storeInfo.price_m, storeInfo.price_s);
            gameData.PayGuildCoin(storeInfo.guild_coin);
            gameData.PayTrophy(storeInfo.trophy_elementary, storeInfo.trophy_intermediate, storeInfo.trophy_advanced, storeInfo.trophy_legendary);

            string toastStr;
            if (storeInfo.store_goods_type == (int)StoreForCarpenterTypeEnum.Expansion)
            {
                InnBuildBean innBuildData = gameData.GetInnBuildData();
                if (storeInfo.mark_type == 1)
                {
                    //1楼扩建
                    innBuildData.buildLevel     = int.Parse(storeInfo.mark);
                    innBuildData.buildInnWidth  = storeInfo.mark_x;
                    innBuildData.buildInnHeight = storeInfo.mark_y;
                }
                else if (storeInfo.mark_type == 2)
                {
                    //2楼扩建
                    innBuildData.buildSecondLevel     = int.Parse(storeInfo.mark);
                    innBuildData.buildInnSecondWidth  = storeInfo.mark_x;
                    innBuildData.buildInnSecondHeight = storeInfo.mark_y;
                }

                //设置修建天数
                List <TimeBean> listBuildDay = new List <TimeBean>();
                listBuildDay.Add(GameTimeHandler.Instance.GetAfterDay(1));
                innBuildData.listBuildDay = listBuildDay;

                GetUIComponent <UITownCarpenter>().RefreshUI();
                toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1011), storeInfo.name);
            }
            else
            {
                //加上获取数量
                int getNumber = 1;
                if (storeInfo.get_number != 0)
                {
                    getNumber = storeInfo.get_number;
                }
                gameData.AddBuildNumber(buildItemData.id, 1 * getNumber);

                RefreshUI();
                toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1010), buildItemData.name + "x" + 1 * getNumber);
            }
            ToastHandler.Instance.ToastHint(ivIcon.sprite, toastStr);
        }
    }
예제 #10
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 });
    }
예제 #11
0
    public static void CompleteReward(List <CharacterBean> listCharacterData, List <RewardTypeBean> listRewardData)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        foreach (var itemData in listRewardData)
        {
            GetRewardDetails(itemData);
            RewardTypeEnum dataType = itemData.dataType;
            switch (dataType)
            {
            case RewardTypeEnum.AddWorkerNumber:
                int addWorkerNumber = itemData.rewardNumber;
                gameData.workerNumberLimit += addWorkerNumber;
                break;

            case RewardTypeEnum.AddWorker:
                gameData.AddWorkCharacter(itemData.workerCharacterData);
                ToastHandler.Instance.ToastHint(string.Format(TextHandler.Instance.manager.GetTextById(6011), itemData.workerCharacterData.baseInfo.name));
                break;

            case RewardTypeEnum.AddGuildCoin:
                long addGuildCoin = itemData.rewardNumber;
                gameData.AddGuildCoin(addGuildCoin);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddMoneyL:
                long addMoneyL = itemData.rewardNumber;
                gameData.AddMoney(addMoneyL, 0, 0);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6014), addMoneyL + ""));
                break;

            case RewardTypeEnum.AddMoneyM:
                long addMoneyM = itemData.rewardNumber;
                gameData.AddMoney(0, addMoneyM, 0);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6013), addMoneyM + ""));
                break;

            case RewardTypeEnum.AddMoneyS:
                long addMoneyS = itemData.rewardNumber;
                gameData.AddMoney(0, 0, addMoneyS);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6012), addMoneyS + ""));
                break;

            case RewardTypeEnum.AddArenaTrophyElementary:
                long addTrophy1 = itemData.rewardNumber;
                gameData.AddArenaTrophy(addTrophy1, 0, 0, 0, itemData.isRecord);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6006), addTrophy1 + "")));
                break;

            case RewardTypeEnum.AddArenaTrophyIntermediate:
                long addTrophy2 = itemData.rewardNumber;
                gameData.AddArenaTrophy(0, addTrophy2, 0, 0, itemData.isRecord);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6007), addTrophy2 + "")));
                break;

            case RewardTypeEnum.AddArenaTrophyAdvanced:
                long addTrophy3 = itemData.rewardNumber;
                gameData.AddArenaTrophy(0, 0, addTrophy3, 0, itemData.isRecord);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6008), addTrophy3 + "")));
                break;

            case RewardTypeEnum.AddArenaTrophyLegendary:
                long addTrophy4 = itemData.rewardNumber;
                gameData.AddArenaTrophy(0, 0, 0, addTrophy4, itemData.isRecord);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), string.Format(TextHandler.Instance.manager.GetTextById(6009), addTrophy4 + "")));
                break;

            case RewardTypeEnum.AddItems:
            case RewardTypeEnum.RandomAddItems:
                gameData.AddItemsNumber(itemData.rewardId, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddBuildItems:
                gameData.AddBuildNumber(itemData.rewardId, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngOilsalt:
                gameData.AddIng(IngredientsEnum.Oilsalt, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngMeat:
                gameData.AddIng(IngredientsEnum.Meat, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngRiverfresh:
                gameData.AddIng(IngredientsEnum.Riverfresh, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngSeafood:
                gameData.AddIng(IngredientsEnum.Seafood, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngVegetables:
                gameData.AddIng(IngredientsEnum.Vegetables, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngMelonfruit:
                gameData.AddIng(IngredientsEnum.Melonfruit, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngWaterwine:
                gameData.AddIng(IngredientsEnum.Waterwine, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddIngFlour:
                gameData.AddIng(IngredientsEnum.Flour, itemData.rewardNumber);
                ToastHandler.Instance.ToastHint(itemData.spRewardIcon, string.Format(TextHandler.Instance.manager.GetTextById(6099), itemData.rewardDescribe));
                break;

            case RewardTypeEnum.AddChefExp:
                CompleteRewardForExp(listCharacterData, WorkerEnum.Chef, itemData.rewardNumber);
                break;

            case RewardTypeEnum.AddWaiterExp:
                CompleteRewardForExp(listCharacterData, WorkerEnum.Waiter, itemData.rewardNumber);
                break;

            case RewardTypeEnum.AddAccountantExp:
                CompleteRewardForExp(listCharacterData, WorkerEnum.Accountant, itemData.rewardNumber);
                break;

            case RewardTypeEnum.AddAccostExp:
                CompleteRewardForExp(listCharacterData, WorkerEnum.Accost, itemData.rewardNumber);
                break;

            case RewardTypeEnum.AddBeaterExp:
                CompleteRewardForExp(listCharacterData, WorkerEnum.Beater, itemData.rewardNumber);
                break;

            case RewardTypeEnum.AddChild:
                CompleteRewardForAddChild(itemData);
                break;
            }
        }
    }
예제 #12
0
    private NpcAIImportantCpt BuildNpc(CharacterBean characterData)
    {
        GameObject npcObj = null;

        try
        {
            if (objNpcModel == null || objNpcContainer == null)
            {
                return(null);
            }
            //检测是否已经招募
            GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
            if (gameData.CheckHasWorker(characterData.baseInfo.characterId))
            {
                return(null);
            }
            //检测是否是老婆
            FamilyDataBean familyData = gameData.GetFamilyData();
            if (familyData.CheckIsMate(characterData.npcInfoData.id))
            {
                return(null);
            }
            if (gameData.gameTime.year == 0 &&
                gameData.gameTime.month == 0 &&
                gameData.gameTime.day == 0)
            {
                //如果是测试 这默认生成所有NPC
            }
            else
            {
                //检测是否满足出现条件
                if (!CheckUtil.StringIsNull(characterData.npcInfoData.condition) && !ShowConditionTools.CheckIsMeetAllCondition(gameData, characterData.npcInfoData.condition))
                {
                    return(null);
                }
            }

            npcObj = Instantiate(objNpcContainer, objNpcModel);
            npcObj.transform.position   = new Vector3(characterData.npcInfoData.position_x, characterData.npcInfoData.position_y);
            npcObj.transform.localScale = new Vector3(1, 1);
            NpcAIImportantCpt aiCpt = npcObj.GetComponent <NpcAIImportantCpt>();
            aiCpt.SetCharacterData(characterData);

            if (characterData.npcInfoData.GetNpcType() == NpcTypeEnum.Special || characterData.npcInfoData.GetNpcType() == NpcTypeEnum.RecruitTown)
            {
                if (!GameCommonInfo.DailyLimitData.CheckIsTalkNpc(characterData.npcInfoData.id))
                {
                    if (characterData.npcInfoData.GetTalkTypes().Contains(NpcTalkTypeEnum.OneTalk) ||
                        characterData.npcInfoData.GetTalkTypes().Contains(NpcTalkTypeEnum.Recruit))
                    {
                        aiCpt.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Doubt, -1);
                    }
                }
            }

            //如果没有对话选项则不能互动
            BoxCollider2D talkBox = npcObj.GetComponent <BoxCollider2D>();
            if (talkBox != null)
            {
                if (CheckUtil.StringIsNull(characterData.npcInfoData.talk_types))
                {
                    talkBox.enabled = false;
                }
            }
            return(aiCpt);
        }
        catch
        {
            if (npcObj != null)
            {
                Destroy(npcObj);
            }
            return(null);
        }
    }
예제 #13
0
 /// <summary>
 /// 保存游戏数据
 /// </summary>
 /// <param name="data"></param>
 public void SetGameDataData(GameDataBean data)
 {
     serviceGameData.UpdateData(data);
 }
예제 #14
0
    public void Submit(DialogView dialogView, DialogBean dialogBean)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (dialogView is PickForCharacterDialogView)
        {
            buildBedData.GetResearchPrice(out long researchPriceL, out long researchPriceM, out long researchPriceS);
            //先判断一下是否有钱支付
            if (!gameData.HasEnoughMoney(researchPriceL, researchPriceM, researchPriceS))
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1005));
                return;
            }
            //扣除金钱
            gameData.PayMoney(researchPriceL, researchPriceM, researchPriceS);
            //角色选择
            PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView;
            List <CharacterBean>       listPickCharacter      = pickForCharacterDialog.GetPickCharacter();
            if (!CheckUtil.ListIsNull(listPickCharacter))
            {
                //开始研究
                buildBedData.StartResearch(listPickCharacter);
                string toastStr = string.Format(TextHandler.Instance.manager.GetTextById(1201), listPickCharacter[0].baseInfo.name, buildBedData.bedName);
                ToastHandler.Instance.ToastHint(toastStr);
            }
        }
        else if (dialogView is InputTextDialogView)
        {
            InputTextDialogView inputTextDialog = dialogView as InputTextDialogView;
            string bedName = inputTextDialog.GetText();
            if (!CheckUtil.StringIsNull(bedName))
            {
                buildBedData.bedName = bedName;
            }
        }
        else
        {
            if (dialogBean.dialogPosition == 1)
            {
                if (buildBedData.GetBedStatus() == ResearchStatusEnum.Researching)
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1313));
                    return;
                }
                if (buildBedData.isSet)
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1314));
                    return;
                }
                //丢弃确认
                gameData.RemoveBed(buildBedData);
                uiComponent.RefreshUI();
            }
            else if (dialogBean.dialogPosition == 2)
            {
                //普通弹窗(取消研究)
                buildBedData.CancelResearch(gameData);
            }
        }
        //重新设置数据
        if (gameObject)
        {
            SetData(buildBedData);
        }
    }
예제 #15
0
    /// <summary>
    /// 设置数据
    /// </summary>
    /// <param name="textData"></param>
    /// <param name="listTextInfo"></param>
    public void SetData(TextInfoBean textData, List <TextInfoBean> listTextInfo)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        //清空选项
        CptUtil.RemoveChildsByName(objSelectContent.transform, "SelectButton", true);
        //清空文本
        tvContent.text = "";
        tvName.text    = "";
        //回到顶部
        scrollRect.verticalNormalizedPosition = 0;
        this.textData = textData;
        //选择对话 特殊处理 增加选择框
        if (textData.GetTextType() == TextInfoTypeEnum.Select ||
            textData.GetTextType() == TextInfoTypeEnum.Talk)
        {
            objNext.gameObject.SetActive(false);
            foreach (TextInfoBean itemData in listTextInfo)
            {
                //提示文本
                if (itemData.select_type == 0)
                {
                    this.textData = itemData;
                }
                // 选项
                else
                {
                    GameObject objSelect = Instantiate(objSelectModel, objSelectContent.transform);
                    objSelect.SetActive(true);
                    ItemGameTextSelectCpt itemCpt = objSelect.GetComponent <ItemGameTextSelectCpt>();
                    itemCpt.SetData(itemData);
                }
            }
        }
        else
        {
            objNext.gameObject.SetActive(true);
            //添加奖励
            AddReward(textData.reward_data);
        }
        //正常文本处理

        //查询角色数据
        CharacterBean characterData;

        if (textData.user_id == 0)
        {
            characterData = gameData.userCharacter;
        }
        else
        {
            characterData = NpcInfoHandler.Instance.manager.GetCharacterDataById(textData.user_id);
        }
        if (characterData == null)
        {
            LogUtil.LogError("文本展示没有找到该文本发起者");
            return;
        }
        //名字设置
        SetName(characterData.baseInfo.titleName, characterData.baseInfo.name, textData.name);
        //设置角色形象
        SetCharacterUI(characterData);
        //设置正文内容
        SetContent(textData.content);
        //添加好感度
        AddFavorability(textData.user_id, textData.add_favorability);
        //场景人物表情展示
        ShowSceneExpression(textData.scene_expression);
    }