Esempio n. 1
0
    protected void GameEndHandle()
    {
        MiniGameCombatBean miniGameCombatData = MiniGameHandler.Instance.handlerForCombat.miniGameData;
        GameDataBean       gameData           = GameDataHandler.Instance.manager.GetGameData();

        if (miniGameCombatData.GetGameResult() == MiniGameResultEnum.Win)
        {
            //战斗胜利
            //层数+1
            infiniteTowersData.layer += 1;
            //记录
            UserAchievementBean userAchievement = gameData.userAchievement;
            userAchievement.SetMaxInfiniteTowersLayer(infiniteTowersData.layer);
            //开始下一层
            StartCoroutine(NextLayer(infiniteTowersData));
        }
        else if (miniGameCombatData.GetGameResult() == MiniGameResultEnum.Lose)
        {
            //战斗失败
            //删除记录
            gameData.RemoveInfiniteTowersData(infiniteTowersData);
            //跳转场景
            GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameMountainScene);
        }
        else if (miniGameCombatData.GetGameResult() == MiniGameResultEnum.Escape)
        {
            //战斗逃跑
            //跳转场景
            GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameMountainScene);
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 获取基础游戏数据
    /// </summary>
    /// <param name="miniGameType"></param>
    /// <returns></returns>
    public static MiniGameBaseBean GetMiniGameData(MiniGameEnum miniGameType)
    {
        MiniGameBaseBean miniGameData = null;

        switch (miniGameType)
        {
        case MiniGameEnum.Cooking:
            miniGameData = new MiniGameCookingBean();
            break;

        case MiniGameEnum.Barrage:
            miniGameData = new MiniGameBarrageBean();
            break;

        case MiniGameEnum.Account:
            miniGameData = new MiniGameAccountBean();
            break;

        case MiniGameEnum.Debate:
            miniGameData = new MiniGameDebateBean();
            break;

        case MiniGameEnum.Combat:
            miniGameData = new MiniGameCombatBean();
            break;

        case MiniGameEnum.Birth:
            miniGameData = new MiniGameBirthBean();
            break;
        }
        return(miniGameData);
    }
Esempio n. 3
0
    public void StartCombat(MiniGameCombatBean combatData, UserInfiniteTowersBean infiniteTowersData)
    {
        MiniGameHandler.Instance.handlerForCombat.InitGame(combatData);

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

        //设置标题
        uiCountDown.SetTitle(infiniteTowersData.layer + TextHandler.Instance.manager.GetTextById(83));
    }
Esempio n. 4
0
    /// <summary>
    /// 初始化战斗游戏
    /// </summary>
    /// <param name="gameCombatData"></param>
    public void InitGameCombat(MiniGameCombatBean gameCombatData)
    {
        SceneArenaManager sceneArenaManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneArenaManager>();

        //找到竞技场战斗的地点
        sceneArenaManager.GetArenaForCombatBy1(out Vector3 combatPosition);
        gameCombatData.miniGamePosition = combatPosition;
        //初始化游戏
        MiniGameHandler.Instance.handlerForCombat.InitGame(gameCombatData);
    }
Esempio n. 5
0
    public IEnumerator NextLayer(UserInfiniteTowersBean infiniteTowersData)
    {
        GameTimeHandler.Instance.SetTimeStop();
        //延迟开始。
        yield return(new WaitForSeconds(0.1f));

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

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

        //开始战斗
        StartCombat(gameCombatData, infiniteTowersData);
    }
Esempio n. 6
0
    /// <summary>
    /// 获取战斗游戏数据
    /// </summary>
    /// <param name="itemPreData"></param>
    /// <param name="miniGameData"></param>
    private static void GetMiniGameDataForCombat(PreTypeForMiniGameBean itemPreData, MiniGameBaseBean miniGameData)
    {
        if (miniGameData.gameType != MiniGameEnum.Combat)
        {
            return;
        }
        MiniGameCombatBean miniGameCombat = (MiniGameCombatBean)miniGameData;

        switch (itemPreData.dataType)
        {
        case PreTypeForMiniGameEnum.CombatForBringDownNumber:
            miniGameData.winBringDownNumber = int.Parse(itemPreData.data);
            break;

        case PreTypeForMiniGameEnum.CombatForSurvivalNumber:
            miniGameData.winSurvivalNumber = int.Parse(itemPreData.data);
            break;
        }
    }
Esempio n. 7
0
 /// <summary>
 /// 创建战斗游戏数据
 /// </summary>
 /// <param name="miniGameData"></param>
 /// <param name="storeInfo"></param>
 /// <returns></returns>
 private MiniGameCombatBean CreateCombatGameData(MiniGameCombatBean miniGameData, StoreInfoBean storeInfo, TrophyTypeEnum type)
 {
     int enemyBaseAttribute = 10;
     int enemyBaseLife = 100;
     int equipLevel = 0;
     switch (type)
     {
         case TrophyTypeEnum.Elementary:
             enemyBaseLife = 100;
             enemyBaseAttribute = 10;
             equipLevel = 0;
             break;
         case TrophyTypeEnum.Intermediate:
             enemyBaseLife = 200;
             enemyBaseAttribute = 30;
             equipLevel = 1;
             break;
         case TrophyTypeEnum.Advanced:
             enemyBaseLife = 300;
             enemyBaseAttribute = 50;
             equipLevel = 2;
             break;
         case TrophyTypeEnum.Legendary:
             enemyBaseLife = 500;
             enemyBaseAttribute = 80;
             equipLevel = 3;
             break;
     }
     miniGameData.winBringDownNumber = UnityEngine.Random.Range(1, 6);
     //生成敌人
     List<CharacterBean> listEnemyData = new List<CharacterBean>();
     for (int i = 0; i < miniGameData.winBringDownNumber; i++)
     {
         CharacterBean enemyData = CharacterBean.CreateRandomEnemyData(enemyBaseLife, enemyBaseAttribute, equipLevel);
         listEnemyData.Add(enemyData);
     }
     miniGameData.InitData(new List<CharacterBean>(), listEnemyData);
     return miniGameData;
 }
Esempio n. 8
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. 9
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);
    }