private static void ShowMissingPlacesInCurrentRegion() { int count = 0; MapDetailManager mapDetailManager = GameManager.GetMapDetailManager(); List <MapDetail> m_MapDetailObjects = (List <MapDetail>)AccessTools.Field(mapDetailManager.GetType(), "m_MapDetailObjects").GetValue(mapDetailManager); foreach (MapDetail eachMapDetail in m_MapDetailObjects) { if (eachMapDetail.m_IconType != MapIcon.MapIconType.DetailEntry && eachMapDetail.gameObject.activeInHierarchy) { if (!eachMapDetail.m_IsUnlocked) { Debug.Log("Missing: " + eachMapDetail.m_LocID + ", requiresInteraction = " + eachMapDetail.m_RequiresInteraction + ", location = " + eachMapDetail.transform.position); count++; } } } Debug.Log(count + " missing locations"); }
private static void Prefix(Panel_Map __instance) { MapDetailManager mapDetailManager = GameManager.GetMapDetailManager(); var mapDetails = mapDetailManager.m_MapDetailObjects; bool startCalled = __instance.m_StartHasBeenCalled; if (startCalled) { // Grow detail pool if required Transform objectDetails = __instance.m_DetailEntryPoolParent; int detailsRequired = mapDetails.Count - objectDetails.childCount; if (detailsRequired > 0) { Panel_Map.OBJECT_POOL_SIZE = 0; Panel_Map.DETAIL_POOL_SIZE = detailsRequired; __instance.CreateObjectPools(); } } else { Panel_Map.DETAIL_POOL_SIZE = Math.Max(Panel_Map.DETAIL_POOL_SIZE, mapDetails.Count); } }
private static void Prefix(Panel_Map __instance) { MapDetailManager mapDetailManager = GameManager.GetMapDetailManager(); List <MapDetail> mapDetails = Traverse.Create(mapDetailManager).Field("m_MapDetailObjects").GetValue <List <MapDetail> >(); bool startCalled = Traverse.Create(__instance).Field("m_StartHasBeenCalled").GetValue <bool>(); if (startCalled) { // Grow detail pool if required Transform objectDetails = Traverse.Create(__instance).Field("m_DetailEntryPoolParent").GetValue <Transform>(); int detailsRequired = mapDetails.Count - objectDetails.childCount; if (detailsRequired > 0) { Panel_Map.OBJECT_POOL_SIZE = 0; Panel_Map.DETAIL_POOL_SIZE = detailsRequired; AccessTools.Method(typeof(Panel_Map), "CreateObjectPools").Invoke(__instance, new object[0]); } } else { Panel_Map.DETAIL_POOL_SIZE = Math.Max(Panel_Map.DETAIL_POOL_SIZE, mapDetails.Count); } }