Ejemplo n.º 1
0
        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);
            }
        }