public static void Postfix(Panel_Map __instance, String sceneName) { if (sceneName != SceneManager.GetActiveScene().name) { // not the current region -> don't add the current location to the map return; } Traverse panel_Map = Traverse.Create(__instance); Traverse worldPositionToMapPosition = panel_Map.Method("WorldPositionToMapPosition", new Type[] { typeof(String), typeof(Vector3) }); Vector3 mapPosition = worldPositionToMapPosition.GetValue <Vector3>(new object[] { sceneName, GameManager.GetPlayerTransform().localPosition }); MapElementSaveData mapElementSaveData = new MapElementSaveData(); mapElementSaveData.m_LocationNameLocID = "GAMEPLAY_Location"; mapElementSaveData.m_SpriteName = "ico_X"; mapElementSaveData.m_BigSprite = false; mapElementSaveData.m_IsDetail = true; mapElementSaveData.m_NameIsKnown = true; mapElementSaveData.m_PositionOnMap = (Vector2)mapPosition; mapElementSaveData.m_ActiveMissionLocIDs = new List <string>(); mapElementSaveData.m_ActiveMissionTimerIDs = new List <string>(); mapElementSaveData.m_ActiveMissionIDs = new List <string>(); Transform child = __instance.m_BigSpritePoolParent.GetChild(0); child.GetComponent <MapIcon>().DoSetup(mapElementSaveData, __instance.m_BigSpriteActiveObjects, 1000, MapIcon.MapIconType.TopIcon); Dictionary <Transform, MapElementSaveData> m_TransformToMapData = panel_Map.Field("m_TransformToMapData").GetValue <Dictionary <Transform, MapElementSaveData> >(); m_TransformToMapData.Add(child, mapElementSaveData); }
public static void Prefix(Panel_Map __instance, string sceneName) { var currentScene = NormalizeSceneName(GameManager.m_ActiveScene); if (currentScene == sceneName) { ShowMapLocation.ShowLocationMarker(); } }
internal static void Prefix(Panel_Map __instance, ref int opts) { if (GameManager.IsStoryMode()) { return; } string mapName = Traverse.Create(__instance).Method("GetMapNameOfCurrentScene").GetValue <string>(); bool canBeMapped = SceneCanBeMapped(mapName); if (!canBeMapped) { return; } int currentIndex = Traverse.Create(__instance).Method("GetIndexOfCurrentScene").GetValue <int>(); int selectedIndex = Traverse.Create(__instance).Field("m_RegionSelectedIndex").GetValue <int>(); if (currentIndex == selectedIndex) { opts |= 4; } }
internal static void Prefix(Panel_Map __instance, ref Panel_Map.ResetOpts opts) { if (GameManager.IsStoryMode()) { return; } string mapName = __instance.GetMapNameOfCurrentScene(); bool canBeMapped = SceneCanBeMapped(mapName); if (!canBeMapped) { return; } int currentIndex = __instance.GetIndexOfCurrentScene(); int selectedIndex = __instance.m_RegionSelectedIndex; if (currentIndex == selectedIndex) { opts |= Panel_Map.ResetOpts.ShowPlayer; } }
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); } }