/// <summary> /// 修改生命值 /// </summary> /// <param name="life"></param> public int AddLife(int life) { characterLife += life; if (characterLife <= 0) { characterLife = 0; SetIntent(RascalIntentEnum.Leave); long[] shoutIds = teamData.GetShoutIds(); TextInfoHandler.Instance.manager.GetTextForTalkByMarkId(shoutIds[1], SetTextInfoData); //随机获取一句喊话 if (!CheckUtil.ListIsNull(listShoutTextInfo)) { TextInfoBean textInfo = RandomUtil.GetRandomDataByList(listShoutTextInfo); characterShoutCpt.Shout(textInfo.content); } //快速离开 characterMoveCpt.SetMoveSpeed(5); } else if (characterLife > characterMaxLife) { characterLife = characterMaxLife; } characterLifeCpt.SetData(characterLife, characterMaxLife); return(characterLife); }
protected static RewardTypeBean GetRandomRewardForData(List <CharacterBean> listEnemyData, RewardTypeEnum rewardType, string rewardListStr) { if (CheckUtil.StringIsNull(rewardListStr)) { return(null); } List <string> listReward = StringUtil.SplitBySubstringForListStr(rewardListStr, '|'); string randomReward = RandomUtil.GetRandomDataByList(listReward); string rewardDataStr; if (randomReward.Equals("Skills")) { //如果没有传入敌人则不获取技能 if (CheckUtil.ListIsNull(listEnemyData)) { return(GetRandomRewardForData(listEnemyData, rewardType, rewardListStr)); } List <long> listSkills = new List <long>(); for (int i = 0; i < listEnemyData.Count; i++) { CharacterBean characterData = listEnemyData[i]; listSkills.AddRange(characterData.attributes.listSkills); } long randomSkill = RandomUtil.GetRandomDataByList(listSkills); rewardDataStr = (1400000 + randomSkill) + ""; } else { rewardDataStr = randomReward; } RewardTypeBean rewardData = new RewardTypeBean(rewardType, rewardDataStr); return(rewardData); }
/// <summary> /// 创建杂项事件 /// </summary> public void BuildSundry() { Vector3 npcPosition = GetRandomStartPosition(); NpcTeamBean teamData = RandomUtil.GetRandomDataByList(listSundry); BuildSundry(teamData, npcPosition); }
/// <summary> /// 开始制造麻烦 /// </summary> /// <returns></returns> public IEnumerator CoroutineForStartMakeTrouble() { while (rascalIntent == RascalIntentEnum.MakeTrouble || rascalIntent == RascalIntentEnum.ContinueMakeTrouble) { if (isMove) { movePosition = InnHandler.Instance.GetRandomInnPositon(); bool canGo = CheckUtil.CheckPath(transform.position, movePosition); if (canGo) { characterMoveCpt.SetDestination(movePosition); } } //随机获取一句喊话 //int shoutId = Random.Range(13101, 13106); if (!CheckUtil.ListIsNull(listShoutTextInfo)) { TextInfoBean textInfo = RandomUtil.GetRandomDataByList(listShoutTextInfo); characterShoutCpt.Shout(textInfo.content); } yield return(new WaitForSeconds(5)); //时间到了就离开 timeMakeTrouble -= 5; if (timeMakeTrouble <= 0) { SetIntent(RascalIntentEnum.Leave); } } }
/// <summary> /// 根据运气获取敌人装备 /// </summary> /// <returns></returns> public static List <RewardTypeBean> GetRewardEnemyEquipForInfiniteTowers(List <CharacterBean> listEnemyData, int layer, int totalLucky) { List <RewardTypeBean> listReward = new List <RewardTypeBean>(); if (layer % 10 == 0) { float getRate = 0.2f + 0.001f * totalLucky; float randomRate = UnityEngine.Random.Range(0f, 1f); if (randomRate <= getRate) { CharacterBean randomEnemy = RandomUtil.GetRandomDataByList(listEnemyData); if (randomEnemy.equips.hatId != 0) { listReward.Add(new RewardTypeBean(RewardTypeEnum.AddItems, randomEnemy.equips.hatId + "")); } if (randomEnemy.equips.clothesId != 0) { listReward.Add(new RewardTypeBean(RewardTypeEnum.AddItems, randomEnemy.equips.clothesId + "")); } if (randomEnemy.equips.shoesId != 0) { listReward.Add(new RewardTypeBean(RewardTypeEnum.AddItems, randomEnemy.equips.shoesId + "")); } } } return(listReward); }
/// <summary> /// 创建团队顾客 /// </summary> public void BuildGuestTeam() { Vector3 npcPosition = GetRandomStartPosition(); NpcTeamBean teamData = RandomUtil.GetRandomDataByList(listTeamCustomer); BuildGuestTeam(teamData, npcPosition); }
/// <summary> /// 创建转换者事件 /// </summary> public void BuildConvert() { Vector3 npcPosition = GetRandomStartPosition(); NpcTeamBean teamData = RandomUtil.GetRandomDataByList(listConvert); BuildConvert(teamData, npcPosition); }
/// <summary> /// 随机获取区域类型信息 /// </summary> /// <param name="areaType"></param> /// <returns></returns> public AreaTypeInfoBean GetRandomAreaTypeInfo(AreaTypeEnum areaType) { List <AreaTypeInfoBean> listData = new List <AreaTypeInfoBean>(); switch (areaType) { case AreaTypeEnum.Base: listData = listAreaTypeInfoForBase; break; case AreaTypeEnum.Null: case AreaTypeEnum.BaseInit: listData = listAreaTypeInfoForNull; break; case AreaTypeEnum.Building: listData = listAreaTypeInfoForBuilding; break; case AreaTypeEnum.Gold: listData = listAreaTypeInfoForGold; break; } return(RandomUtil.GetRandomDataByList(listData)); }
public void BuildTownFriendsForTeam() { Vector3 npcPosition = GetRandomStartPosition(); NpcTeamBean teamData = RandomUtil.GetRandomDataByList(listFriend); BuildTownFriendsForTeam(teamData, npcPosition); }
/// <summary> /// 随机化一个天气 /// </summary> public WeatherBean RandomWeather() { WeatherTypeEnum weatherStatusRandom = WeatherTypeEnum.Sunny; GameTimeHandler.Instance.GetTime(out int year, out int month, out int day); float weatherRate = UnityEngine.Random.Range(0f, 1f); if (weatherRate <= 0.5f) { weatherStatusRandom = WeatherTypeEnum.Sunny; } else if (weatherRate > 0.5f && weatherRate <= 0.8f) { weatherStatusRandom = WeatherTypeEnum.Cloudy; } else { List <WeatherTypeEnum> listWeather = WeatherTypeEnumTools.GetWeahterListByMonth(month); weatherStatusRandom = RandomUtil.GetRandomDataByList(listWeather); } WeatherBean weatherData = new WeatherBean(weatherStatusRandom); SetWeather(weatherData); return(weatherData); }
/// <summary> /// 获取随机空闲的座位 /// </summary> /// <returns></returns> public BuildTableCpt GetIdleTable() { if (listTableCpt == null) { return(null); } List <BuildTableCpt> idleTableList = new List <BuildTableCpt>(); for (int i = 0; i < listTableCpt.Count; i++) { BuildTableCpt itemTable = listTableCpt[i]; if (itemTable.tableStatus == BuildTableCpt.TableStatusEnum.Idle) { idleTableList.Add(itemTable); } } if (idleTableList.Count == 0) { return(null); } BuildTableCpt buildTable = RandomUtil.GetRandomDataByList(idleTableList); if (buildTable == null) { return(null); } buildTable.SetTableStatus(BuildTableCpt.TableStatusEnum.Ready); return(buildTable); }
/// <summary> /// 获取随机空闲的座位 /// </summary> /// <returns></returns> public BuildBedCpt GetIdleBed() { if (listBedCpt == null) { return(null); } List <BuildBedCpt> idleBedList = new List <BuildBedCpt>(); for (int i = 0; i < listBedCpt.Count; i++) { BuildBedCpt itemBed = listBedCpt[i]; if (itemBed.GetBedStatus() == BuildBedCpt.BedStatusEnum.Idle) { idleBedList.Add(itemBed); } } if (idleBedList.Count == 0) { return(null); } BuildBedCpt buildBed = RandomUtil.GetRandomDataByList(idleBedList); buildBed.SetBedStatus(BuildBedCpt.BedStatusEnum.Ready); return(buildBed); }
public static MiniGameEnum GetRandomMiniGameTypeForArena() { List <MiniGameEnum> list = new List <MiniGameEnum>() { MiniGameEnum.Cooking, MiniGameEnum.Barrage, MiniGameEnum.Account, MiniGameEnum.Debate, MiniGameEnum.Combat }; return(RandomUtil.GetRandomDataByList(list)); }
/// <summary> /// 获取山顶门坐标 /// </summary> /// <returns></returns> public Vector3 GetMountainDoorPosition() { if (CheckUtil.ListIsNull(listTownDoor)) { return(Vector3.zero); } Transform tfDoor = RandomUtil.GetRandomDataByList(listMountainDoor); return(tfDoor.transform.position); }
/// <summary> /// 获取随机城镇门坐标 /// </summary> /// <returns></returns> public Vector3 GetRandomTownDoorPosition() { if (CheckUtil.ListIsNull(listTownDoor)) { return(Vector3.zero); } Transform tfTownDoor = RandomUtil.GetRandomDataByList(listTownDoor); return(GameUtil.GetTransformInsidePosition2D(tfTownDoor)); }
/// <summary> /// 获取开始的随机地点 /// </summary> /// <returns></returns> public Vector3 GetRandomStartPosition() { if (CheckUtil.ListIsNull(listStartPosition)) { return(Vector3.zero); } Transform startPosition = RandomUtil.GetRandomDataByList(listStartPosition); return(GameUtil.GetTransformInsidePosition2D(startPosition)); }
/// <summary> /// 点餐 /// </summary> public override void HandleForOrderFood() { if (!characterMoveCpt.IsAutoMoveStop()) { return; } //首先调整修改朝向 SetCharacterFace(orderForCustomer.table.GetUserFace()); //点餐 //判断是否有团队喜欢的菜 List <long> loveMenus = new List <long>(); if (teamData != null) { loveMenus = teamData.GetLoveMenus(); } //如果没有团队专有喜欢的菜,没有则随机点 if (loveMenus.Count == 0) { InnHandler.Instance.OrderForFood(orderForCustomer); } else { //检测是否拥有自己喜欢的菜品 GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); if (gameData.CheckHasLoveMenus(loveMenus, out List <MenuOwnBean> ownLoveMenus)) { //随机获取一个喜欢的菜 MenuOwnBean loveMenu = RandomUtil.GetRandomDataByList(ownLoveMenus); InnHandler.Instance.OrderForFood(orderForCustomer, loveMenu); } else { //如果没有自己喜欢的菜品则点一杯茶 //InnHandler.Instance.OrderForFood(orderForCustomer, 1); } } //如果有这菜 if (orderForCustomer.foodData != null) { //喊出需要的菜品 characterShoutCpt.Shout(orderForCustomer.foodData.name); //设置等待食物 SetIntent(CustomerIntentEnum.WaitFood); } //如果没有这菜 甚至连茶都没有 else { //如果没有菜品出售 心情直接降为不加好感 SetMood(30, true); EndOrderAndLeave(true); characterShoutCpt.Shout(TextHandler.Instance.manager.GetTextById(13002)); } }
public virtual void PlayClip() { if (clickClip.IsNull()) { return; } GameConfigBean gameConfig = GameDataHandler.Instance.manager.GetGameConfig(); AudioClip audioClip = RandomUtil.GetRandomDataByList(clickClip); AudioSource.PlayClipAtPoint(audioClip, button.transform.position, gameConfig.soundVolume); }
public PersonInfoBean GetRandomPersonInfoByNumber(int number) { if (dicPersonInfo.TryGetValue(number, out List <PersonInfoBean> listPersonInfo)) { return(RandomUtil.GetRandomDataByList(listPersonInfo)); } else { return(null); } }
public virtual void PlayClip() { if (CheckUtil.ListIsNull(clickClip)) { return; } volume = GameCommonInfo.GameConfig.soundVolume; AudioClip audioClip = RandomUtil.GetRandomDataByList(clickClip); AudioSource.PlayClipAtPoint(audioClip, button.transform.position, volume); }
public void BuildGuestTeam(NpcTeamBean npcTeam, Vector3 npcPosition) { if (npcTeam == null) { return; } //设置小队相关 string teamCode = SystemUtil.GetUUID(SystemUtil.UUIDTypeEnum.N); Color teamColor = new Color(UnityEngine.Random.Range(0f, 1f), UnityEngine.Random.Range(0f, 1f), UnityEngine.Random.Range(0f, 1f)); //设置是否想吃 bool isWant = IsWantEat(CustomerTypeEnum.Team); //获取小队成员数据 npcTeam.GetTeamCharacterData(out List <CharacterBean> listLeader, out List <CharacterBean> listMembers); //设置小队人数(团队领袖全生成,小队成员随机生成) int npcNumber = UnityEngine.Random.Range(listLeader.Count + 1, listLeader.Count + 1 + npcTeam.team_number); for (int i = 0; i < npcNumber; i++) { CharacterBean characterData = null; if (i < listLeader.Count) { characterData = listLeader[i]; } else { characterData = RandomUtil.GetRandomDataByList(listMembers); } //如果发现成员数据为空 默认取领导的 if (characterData == null) { characterData = listLeader[0]; } //随机生成身体数据 characterData.body.CreateRandomEye(); GameObject npcObj = BuildNpc(listGuestTeamHide, objGuestTeamModel, characterData, npcPosition + new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), UnityEngine.Random.Range(-0.5f, 0.5f))); BaseNpcAI baseNpcAI = npcObj.GetComponent <BaseNpcAI>(); baseNpcAI.SetCharacterData(characterData); baseNpcAI.AddStatusIconForGuestTeam(teamColor); NpcAICustomerForGuestTeamCpt customerAI = baseNpcAI.GetComponent <NpcAICustomerForGuestTeamCpt>(); customerAI.SetTeamData(teamCode, npcTeam, i, teamColor); if (GameTimeHandler.Instance.GetDayStatus() == GameTimeHandler.DayEnum.Work && isWant) { customerAI.SetIntent(NpcAICustomerCpt.CustomerIntentEnum.Want); } else { customerAI.SetIntent(NpcAICustomerCpt.CustomerIntentEnum.Walk); } } }
public void CreateEnemyItem() { GameObject objModel = RandomUtil.GetRandomDataByList(listObjEnemyModel); GameObject objEnemy = Instantiate(gameObject, objModel); UIMiniGameBirthEnemy enemy = objEnemy.GetComponent <UIMiniGameBirthEnemy>(); GetRandomEnemyStartAndEndPosition(out Vector3 startPosition, out Vector3 endPosition); //获取敌人速度 float speedEnemy = MiniGameHandler.Instance.handlerForBirth.miniGameData.enmeySpeed; //设置敌人输入 enemy.SetData(startPosition, endPosition, speedEnemy); }
public void HandleForWeather() { WeatherBase weather = manager.GetWeather(); weather.weatherData.timeForWeather -= Time.deltaTime; if (weather.weatherData.timeForWeather <= 0) { //根据世界类型获取天气 List <WeatherTypeEnum> weatherTypes = manager.GetWeatherTypeListByWorldType(WorldTypeEnum.Main); ChangeWeather(RandomUtil.GetRandomDataByList(weatherTypes), 2000); SystemUtil.GCCollect(); } //天气更新 weather.Update(); }
/// <summary> /// 开启AI /// </summary> public void OpenAI() { //相对友方列表 List <NpcAIMiniGameCombatCpt> relativeOurList = null; //相对敌人列表 List <NpcAIMiniGameCombatCpt> relativeEnemyList = null; //如果是友方AI if (characterMiniGameData.characterType == 1) { relativeOurList = MiniGameHandler.Instance.handlerForCombat.miniGameBuilder.GetCharacter(1); relativeEnemyList = MiniGameHandler.Instance.handlerForCombat.miniGameBuilder.GetCharacter(0); } //如果是敌方AI else if (characterMiniGameData.characterType == 0) { relativeOurList = MiniGameHandler.Instance.handlerForCombat.miniGameBuilder.GetCharacter(0); relativeEnemyList = MiniGameHandler.Instance.handlerForCombat.miniGameBuilder.GetCharacter(1); } float intentRate = UnityEngine.Random.Range(0f, 1f); if (intentRate <= 0.5f) { //一定概率攻击 StartCoroutine(CoroutineForIntentFight(relativeOurList, relativeEnemyList)); } else { //一定概率使用技能 List <long> skillIds = characterMiniGameData.characterData.attributes.listSkills; //如果没有技能 默认攻击 if (skillIds == null || skillIds.Count == 0) { StartCoroutine(CoroutineForIntentFight(relativeOurList, relativeEnemyList)); } else { Action <List <SkillInfoBean> > callBack = (listData) => { if (!CheckUtil.ListIsNull(listData)) { StartCoroutine(CoroutineForIntentSkill(listData[0], relativeOurList, relativeEnemyList)); } }; SkillInfoHandler.Instance.manager.GetSkillById(RandomUtil.GetRandomDataByList(skillIds), callBack); } } }
/// <summary> /// 获取建筑模型 /// </summary> /// <param name="buildRule"></param> /// <returns></returns> public GameObject GetBuildBaseModel(List <BuildBase> listAroundBuildBase, BuildBase centerBuildBase, BuildRuleEnum buildRule) { if (dicBuildRule.TryGetValue(buildRule, out BuildBaseModelBean modelData)) { if (modelData != null) { if (!CheckUtil.ListIsNull(listAroundBuildBase)) { //是否有地面方块 bool hasGround = false; BuildRuleEnum centerBuildRule = centerBuildBase.buildBaseData.GetBuildRule(); //检测周围方块 for (int i = 0; i < listAroundBuildBase.Count; i++) { BuildBase itemBuildBase = listAroundBuildBase[i]; //检测是否下面有砖块,并且砖块为地基 if (BuildRuleEnumTool.CheckHasDown(centerBuildRule) && (itemBuildBase.buildBaseData.GetBuildType() == BuildTypeEnum.Foundation || itemBuildBase.buildBaseData.GetBuildType() == BuildTypeEnum.Ground)) { hasGround = true; } } //如果有地面方块,则使用地基层 if (hasGround) { if (!CheckUtil.ListIsNull(modelData.listBaseModel)) { return(RandomUtil.GetRandomDataByList(modelData.listBaseModel)); } } } if (!CheckUtil.ListIsNull(modelData.listObjModel)) { return(RandomUtil.GetRandomDataByList(modelData.listObjModel)); } } } if (dicBuildRule.TryGetValue(BuildRuleEnum.Zero, out BuildBaseModelBean modelDataZero)) { if (!CheckUtil.ListIsNull(modelDataZero.listObjModel)) { return(modelDataZero.listObjModel[0]); } } return(null); }
/// <summary> /// 获取闲置的金币 /// </summary> /// <returns></returns> public GoldCpt GetGoldByStatus(GoldStatusEnum goldStatus) { if (CheckUtil.ListIsNull(listGold)) { return(null); } List <GoldCpt> listTemp = new List <GoldCpt>(); for (int i = 0; i < listGold.Count; i++) { GoldCpt itemGold = listGold[i]; if (itemGold.GetGoldStatus() == goldStatus) { listTemp.Add(itemGold); } } return(RandomUtil.GetRandomDataByList(listTemp)); }
/// <summary> /// 获取随机一个入口附近的坐标 /// </summary> /// <returns></returns> public Vector3 GetRandomEntrancePosition() { BuildDoorCpt buildDoor = RandomUtil.GetRandomDataByList(GetEntranceList()); Transform tfEntrance = null; if (buildDoor != null && buildDoor.entranceObj != null) { tfEntrance = buildDoor.entranceObj.transform; } if (tfEntrance != null) { return(GameUtil.GetTransformInsidePosition2D(tfEntrance)); } else { return(Vector3.zero); } }
/// <summary> /// 初始化基地 /// </summary> /// <param name="enemyIds"></param> public void InitAreaTypeForBase(List <string> enemyIds) { List <GroundHexagons> listData = manager.GetListGroundHexagons(); //首先修建友方建筑 GroundHexagons playerBase = RandomUtil.GetRandomDataByList(listData); List <GroundHexagons> aroundData = manager.GetGroundHexagonsForAround(playerBase); for (int i = 0; i < aroundData.Count; i++) { GroundHexagons itemGroundHexagons = aroundData[i]; //基地初始化 SetAreaTypeForGroundHexagons(AreaTypeEnum.BaseInit, itemGroundHexagons); manager.AddInfluence(currentGroundData.GetPlayerBelongId(), itemGroundHexagons); } //设置区域类型 SetAreaTypeForGroundHexagons(AreaTypeEnum.Base, playerBase); manager.AddInfluence(currentGroundData.GetPlayerBelongId(), playerBase); }
/// <summary> /// 随机点餐 /// </summary> /// <returns></returns> public MenuInfoBean OrderForFood(OrderForCustomer orderForCustomer) { GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData(); //获取正在出售的菜品 List <MenuOwnBean> listOwnMenu = gameData.GetMenuListForSell(); if (listOwnMenu.Count == 0) { return(null); } //随机获取一个菜品 MenuOwnBean menuOwnItem = RandomUtil.GetRandomDataByList(listOwnMenu); if (menuOwnItem == null) { return(null); } return(OrderForFood(orderForCustomer, menuOwnItem)); }
/// <summary> /// 创建游戏按键 /// </summary> public void CreateRandomCookingButton() { CptUtil.RemoveChildsByActive(objCookingContainer); mListButton.Clear(); List <ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum> listRandomType = new List <ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum>(); listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Left); listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Right); if (gameCookingData.cookButtonNumber > 2) { if (gameCookingData.cookButtonNumber >= 3) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Up); } if (gameCookingData.cookButtonNumber >= 4) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Down); } if (gameCookingData.cookButtonNumber >= 5) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.One); } if (gameCookingData.cookButtonNumber >= 6) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Two); } if (gameCookingData.cookButtonNumber >= 7) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Three); } if (gameCookingData.cookButtonNumber >= 8) { listRandomType.Add(ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum.Four); } } for (int i = 0; i < buttonNumber; i++) { ItemMiniGameCookingButtonCpt.MiniGameCookingButtonTypeEnum randomType = RandomUtil.GetRandomDataByList(listRandomType); CreateCookingButtonItem(i, randomType); } //默认第一个选中 mListButton[0].SetSelectedStatus(true); }