Esempio n. 1
0
    /// <summary>
    /// 初始化打手考试
    /// </summary>
    private MiniGameBaseBean InitBeaterGame()
    {
        MiniGameBaseBean miniGameData = MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Combat);

        miniGameData = PreTypeForMiniGameEnumTools.GetMiniGameData(miniGameData, levelData.pre_data_minigame, characterData);
        return(miniGameData);
    }
Esempio n. 2
0
    /// <summary>
    /// 初始化厨师考试
    /// </summary>
    private MiniGameBaseBean InitChefGame()
    {
        MiniGameBaseBean miniGameData = MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Cooking);

        miniGameData = PreTypeForMiniGameEnumTools.GetMiniGameData(miniGameData, levelData.pre_data_minigame);
        //先清除数据中的指定敌人
        miniGameData.listEnemyGameData.Clear();
        //随机生成敌人
        List <CharacterBean>    listEnemyData       = new List <CharacterBean>();
        CharacterWorkerBaseBean characterWorkerData = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
        int equipLevel = (characterWorkerData.GetLevel() + 1) / 2;

        for (int i = 0; i < UnityEngine.Random.Range(1, 16); i++)
        {
            CharacterBean randomEnemy = CharacterBean.CreateRandomEnemyData(100, 10, equipLevel);
            listEnemyData.Add(randomEnemy);
        }
        miniGameData.InitData(characterData, listEnemyData);
        return(miniGameData);
    }
Esempio n. 3
0
    /// <summary>
    /// 生成战斗
    /// </summary>
    public void OnClickCombatBuild()
    {
        MiniGameCombatBean miniGameCombat = (MiniGameCombatBean)MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Combat);

        if (CheckUtil.StringIsNull(etCombatPlayerIds.text))
        {
            LogUtil.LogError("没有玩家ID");
            return;
        }
        if (CheckUtil.StringIsNull(etCombatPlayerIds.text))
        {
            LogUtil.LogError("没有敌人ID");
            return;
        }
        List <long> playerIds = GetIds(etCombatPlayerIds.text);
        List <long> EnemyIds  = GetIds(etCombatEnemyIds.text);

        miniGameCombat.winBringDownNumber = EnemyIds.Count;
        miniGameCombat.winSurvivalNumber  = 1;
        List <CharacterBean> listOurData = new List <CharacterBean>();

        foreach (long id in playerIds)
        {
            listOurData.Add(NpcInfoHandler.Instance.manager.GetCharacterDataById(id));
        }
        List <CharacterBean> listEnemyData = new List <CharacterBean>();

        foreach (long id in EnemyIds)
        {
            listEnemyData.Add(NpcInfoHandler.Instance.manager.GetCharacterDataById(id));
        }
        miniGameCombat.InitData(listOurData, listEnemyData);
        //找到竞技场战斗的地点
        miniGameCombat.miniGamePosition = new Vector3(0, 10, 0);
        //初始化游戏
        MiniGameHandler.Instance.handlerForCombat.InitGame(miniGameCombat);
    }
Esempio n. 4
0
    /// <summary>
    /// 按钮-生孩子
    /// </summary>
    public void OnClickBirth()
    {
        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
        int          year     = gameData.GetGameTimeForYear();

        if (year == 0)
        {
            year = 1;
        }
        float             playSpeed     = Mathf.Clamp(10f / year, 2, 10);
        MiniGameBirthBean gameBirthData = MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Birth) as MiniGameBirthBean;

        gameBirthData.fireNumber         = 10;
        gameBirthData.enmeySpeed         = 3;
        gameBirthData.enmeyBuildInterval = 0.8f;
        gameBirthData.playSpeed          = playSpeed;
        gameBirthData.addBirthPro        = 0.01f;
        gameBirthData.gameReason         = MiniGameReasonEnum.Other;

        gameBirthData.InitForMiniGame();
        MiniGameHandler.Instance.handlerForBirth.RegisterNotifyForMiniGameStatus(NotifyForMiniGameStatus);
        MiniGameHandler.Instance.handlerForBirth.InitGame(gameBirthData);
    }
Esempio n. 5
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;
    }
Esempio n. 6
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);
    }
Esempio n. 7
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();
     }
 }
Esempio n. 8
0
    public static MiniGameBaseBean GetMiniGameData(MiniGameBaseBean miniGameData, string data, List <CharacterBean> listPickCharacter)
    {
        List <PreTypeForMiniGameBean> listPreData   = GetListPreData(data);
        List <CharacterBean>          listUserData  = new List <CharacterBean>();
        List <CharacterBean>          listEnemyData = new List <CharacterBean>();
        Vector2 minigamePosition = Vector2.zero;

        //如果没有传入游戏数据则先根据条件生成一个
        if (miniGameData == null)
        {
            GetMiniGameType(data, out MiniGameEnum miniGameType);
            miniGameData = MiniGameEnumTools.GetMiniGameData(miniGameType);
        }

        foreach (PreTypeForMiniGameBean itemPreData in listPreData)
        {
            switch (itemPreData.dataType)
            {
            case PreTypeForMiniGameEnum.MiniGameType:
                MiniGameEnum miniGameType = (MiniGameEnum)int.Parse(itemPreData.data);
                miniGameData.gameType = miniGameType;
                break;

            case PreTypeForMiniGameEnum.GameReason:
                MiniGameReasonEnum miniGameReason = (MiniGameReasonEnum)int.Parse(itemPreData.data);
                miniGameData.gameReason = miniGameReason;
                break;

            case PreTypeForMiniGameEnum.UserIds:
                long[] userIds = StringUtil.SplitBySubstringForArrayLong(itemPreData.data, ',');
                listUserData = NpcInfoHandler.Instance.manager.GetCharacterDataByIds(userIds);
                break;

            case PreTypeForMiniGameEnum.EnemyIds:
                long[] enemyIds = StringUtil.SplitBySubstringForArrayLong(itemPreData.data, ',');
                listEnemyData = NpcInfoHandler.Instance.manager.GetCharacterDataByIds(enemyIds);
                break;

            case PreTypeForMiniGameEnum.MiniGamePosition:
                float[] arrayPosition = StringUtil.SplitBySubstringForArrayFloat(itemPreData.data, ',');
                minigamePosition = new Vector2(arrayPosition[0], arrayPosition[1]);
                break;

            case PreTypeForMiniGameEnum.TalkMarkIdForWin:
                miniGameData.gameResultWinTalkMarkId = long.Parse(itemPreData.data);
                break;

            case PreTypeForMiniGameEnum.TalkMarkIdForLose:
                miniGameData.gameResultLoseTalkMarkId = long.Parse(itemPreData.data);
                break;

            case PreTypeForMiniGameEnum.WinLife:
                miniGameData.winLife = long.Parse(itemPreData.data);
                break;

            case PreTypeForMiniGameEnum.WinSurvivalTime:
                miniGameData.winSurvivalTime = float.Parse(itemPreData.data);
                break;

            case PreTypeForMiniGameEnum.BarrageForLaunchInterval:
            case PreTypeForMiniGameEnum.BarrageForLaunchSpeed:
            case PreTypeForMiniGameEnum.BarrageForLaunchTypes:
            case PreTypeForMiniGameEnum.BarrageForLaunchNumber:
            case PreTypeForMiniGameEnum.BarrageForBulletType:
                GetMiniGameDataForBarrage(itemPreData, miniGameData);
                break;

            case PreTypeForMiniGameEnum.AccountForWinMoneyL:
            case PreTypeForMiniGameEnum.AccountForWinMoneyM:
            case PreTypeForMiniGameEnum.AccountForWinMoneyS:
                GetMiniGameDataForAccount(itemPreData, miniGameData);
                break;

            case PreTypeForMiniGameEnum.CombatForBringDownNumber:
            case PreTypeForMiniGameEnum.CombatForSurvivalNumber:
                GetMiniGameDataForCombat(itemPreData, miniGameData);
                break;

            case PreTypeForMiniGameEnum.CookingForScore:
            case PreTypeForMiniGameEnum.CookingForStoryStartId:
            case PreTypeForMiniGameEnum.CookingForStoryAuditId:
            case PreTypeForMiniGameEnum.CookingForAuditCharacter:
            case PreTypeForMiniGameEnum.CookingForCompereCharacter:
            case PreTypeForMiniGameEnum.CookingForThemeId:
            case PreTypeForMiniGameEnum.CookingForThemeLevel:
            case PreTypeForMiniGameEnum.CookingForButtonNumber:
            case PreTypeForMiniGameEnum.CookingForWinRank:

                GetMiniGameDataForCook(itemPreData, miniGameData);
                break;
            }
        }
        if (miniGameData == null)
        {
            return(miniGameData);
        }
        //如果有传入角色则把传入角色也加入到用户数据中
        if (listPickCharacter != null)
        {
            listUserData.AddRange(listPickCharacter);
        }
        miniGameData.miniGamePosition = minigamePosition;
        miniGameData.InitData(listUserData, listEnemyData);
        return(miniGameData);
    }