private void LoadResource() { var jsonText = Resources.Load <TextAsset>("Json/Mission"); LoadedMissions = JsonUtility.FromJson <AllMissions>(jsonText.text); jsonText = Resources.Load <TextAsset>("Json/Item"); LoadItems = JsonUtility.FromJson <AllItems>(jsonText.text); #endregion }
public AllMissions GetMissions(WorldInfo world, IEnumerable <World> worlds) { AllMissions allmisions = new AllMissions(); foreach (var map in worlds) { allmisions.missions.AddRange(world.missions.Where(p => p.theaterId == map.uniqueId)); allmisions.missionAlerts.AddRange(world.missionAlerts.Where(p => p.theaterId == map.uniqueId)); } return(allmisions); }
//랜덤 Guid로 플레이어들을 정렬해서 미션을 분배하는 방식을 선택 private void AssignMissions(Guid orderId) { var players = GameManager.Instance.Players.Values.OrderBy(p => p.PlayerId).ToList(); for (int i = 0; i < players.Count; i++) { Player player = players[i]; //PlayerState might not be updated here. However, Missions assigned to Profesor has no meaning. if (player.State != PlayerState.Student) { continue; } PlayerMissionsProgress.Add(player.PlayerId, false); player.AssignMissions(AllMissions.Skip(i * MissionsPerPlayer).Take(MissionsPerPlayer)); } }
public override void OnStartClient() { base.OnStartClient(); var interactables = FindObjectsOfType <Interactable>(); foreach (var interactable in interactables) { AllMissions.Add(interactable.MiniGame); } //TODO : 정렬방법 더 좋은 거 가져와 AllMissions = AllMissions.OrderBy(x => x.gameObject.transform.parent.name).ToList(); OpenableDoors = FindObjectsOfType <OpenableDoor>().ToList(); AssignMissions(MatchManager.Instance.Match.MatchID.ToGuid()); }
private bool LoadWorld() { IsWorldReady = false; MissionsList = null; WorldInfo world = EpicApi.GetWorldInfo().Value; if (world != null) { // MyLogger.Log.Information("{lt}: WorldInfo is loading", "Service"); List <World> worlds = GetWorlds(world.theaters).ToList(); AllMissions allmisions = GetMissions(world, worlds); MissionsList = MissionMaping(worlds, allmisions); Top10MissionsList = TopMissions().Take(10); worlds = null; allmisions = null; SetCooldowns(); IsWorldReady = true; Global.Log.Information("{lt}: WorldInfo is successfuly loaded", "Service"); return(true); } Global.Log.Error("{lt}: WorldInfo is not loaded", "Service"); return(false); }
public IEnumerable <IMissionX> MissionMaping(List <World> worlds, AllMissions allMissions) { List <IMissionX> MissionXsList = new List <IMissionX>(); try { for (int i = 0; i < allMissions.missionAlerts.Count; i++) { var missionAlertsGroup = allMissions.missionAlerts[i].availableMissionAlerts .Where(c => c.missionAlertModifiers != null) .GroupBy(f => f.categoryName).ToList(); var theater = worlds[i]; var missionMap = allMissions.missions[i]; for (int j = 0; j < missionAlertsGroup.Count; j++) { var category = missionAlertsGroup[j].Key; if (category == "DudebroCategory") { continue; } var mssinsAlert = missionAlertsGroup[j].ToList(); for (int k = 0; k < mssinsAlert.Count; k++) { IMissionX mssnx = new MissionX { WorldName = theater.displayName.ParseMapName(), NextRefresh = missionMap.nextRefresh }; mssnx.MissionCategory = ((Alert)Enum.Parse(typeof(Alert), category)); mssnx.availableUntil = mssinsAlert[k].availableUntil; var currentMap = missionMap.availableMissions.First(p => p.tileIndex == mssinsAlert[k].tileIndex); var mapName = currentMap.missionGenerator.Split('.')[1].Replace("MissionGen_", ""); mssnx.IsGroupMission = mapName.IndexOf("_Group", StringComparison.CurrentCultureIgnoreCase) > -1; Regex r = new Regex("Mission_Select_T(\\d+)", RegexOptions.Singleline); var m = r.Match(currentMap.missionRewards.tierGroupName); if (m.Success)//mission level { mssnx.IsStormShieldDefense = false; mssnx.Tier = byte.Parse(m.Groups[1].Value); } else { r = new Regex("Outpost_Select_Theater(\\d+)", RegexOptions.Singleline); m = r.Match(currentMap.missionRewards.tierGroupName); if (m.Success)//stormshield detected no energy { mssnx.IsStormShieldDefense = true; mssnx.Tier = 0; } else { r = new Regex("Mission_Select_Group_T(\\d+)", RegexOptions.Singleline); m = r.Match(currentMap.missionRewards.tierGroupName); if (m.Success)//group missions { mssnx.Tier = byte.Parse(m.Groups[1].Value); } else { throw new Exception("i think this is, not defined case"); } } } //debuff//2. emoji serverinden bool hasMiniboss = false; foreach (var item in mssinsAlert[k].missionAlertModifiers.items) { mssnx.Modifiers.Add(new AlertModifierItem() { ItemType = item.itemType }); if (item.itemType == "GameplayModifier:minibossenableprimarymissionitem") { hasMiniboss = true; } } mssnx.MissionNameInfo = Utils.GetMissionName(mapName, hasMiniboss); foreach (var item in currentMap.missionRewards.items) { var ms1x = new MissionItemX { AlertReward = false, quantity = item.quantity, ItemType = item.itemType }; mssnx.Items.Add(ms1x); } for (int l = 0; l < mssinsAlert[k].missionAlertRewards.items.Count; l++) { var item = mssinsAlert[k].missionAlertRewards.items[l]; if (item.itemType.StartsWith("#")) { continue; } else { } var ms2x = new MissionItemX { AlertReward = true, quantity = item.quantity, ItemType = item.itemType }; mssnx.Items.Add(ms2x); } MissionXsList.Add(mssnx); } } } } catch (Exception e2) { Global.Log.Exception(e2); } return(MissionXsList.AsEnumerable()); }