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); } }
/// <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); }
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)); }
/// <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); }
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); }
/// <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; } }
/// <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; }
/// <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); }
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); }