示例#1
0
            public static bool Prefix(WholeMapViewer __instance, ref MapIconData iconData, ref MapIconInfo icon)
            {
                if (!enabled)
                {
                    return(true);
                }
                if (iconData.CurIcon is PresetIcon && (iconData.CurIcon as PresetIcon).IsIcon(MapIcon.TRANSFERPOINT))
                {
                    iconData.iconObject.GetComponent <Image>().raycastTarget = false;
                    UnityEngine.Object.Destroy(iconData.iconObject.GetComponent <MapIconInteractTransfer>());
                    UnityEngine.Object.Destroy(iconData.iconObject.GetComponent <Selectable>());
                }
                iconData.SetCurIcon(icon, __instance.GetHashCode());

                PresetIcon presetIcon = icon as PresetIcon;

                if (icon is PresetIcon && presetIcon.IsIcon(MapIcon.TRANSFERPOINT))
                {
                    (iconData.iconObject as MapIconPoolSprite).SetRaycastTarget(true);
                    if (iconData.iconObject.gameObject.GetComponent <MapIconInteractTransfer>() == null)
                    {
                        iconData.iconObject.gameObject.AddComponent <MapIconInteractTransfer>();
                        iconData.iconObject.gameObject.AddComponent <Selectable>();
                    }
                    iconData.iconObject.gameObject.GetComponent <MapIconInteractTransfer>().SetImap(iconData.imap);
                    int tranId = Singleton <TransferTransIdDataBase> .Self.GetTranId((iconData.imap as SceneItemTransfer_IMap).SItem.ID);

                    string name = (tranId <= 0) ? string.Empty : TextMgr.GetStr(tranId, -1);
                    Dbgl($"name: {name} pos: {iconData.imap.GetPos()}");
                }
                return(false);
            }
示例#2
0
            static bool Prefix(WholeMapViewer __instance, Image iconImage, Image ___NowPlayingMap)
            {
                if (KeyDown(settings.ModifierKey))
                {
                    Dbgl("Trying to teleport");
                    Vector3 v1 = iconImage.rectTransform.position;
                    Vector3 v2 = ___NowPlayingMap.rectTransform.InverseTransformPoint(v1);
                    Vector3 v3 = (Vector3)typeof(WholeMapViewer).GetMethod("ReverseConvertGamePosFromGameMap", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { new Vector3(v2.x, v2.y, 0f) });
                    Vector3 v4 = GetValidPos(v3);
                    //v4 += new Vector3(0, 20f, 0);
                    Dbgl($"Player Pos: {Module<Player>.Self.actor.gamePos}");
                    Dbgl($"Teleport Pos: {v3}");
                    Dbgl($"Safe Pos: {v3}");

                    UIStateMgr.Instance.PopState(false);
                    if (Module <ScenarioModule> .Self.CurrentScenarioName != "Main")
                    {
                        nextMainPos = v3;
                        SceneManager.activeSceneChanged += TeleportFromIndoors;
                        Teleport("Main");
                        return(false);
                    }
                    Teleport("Main", v4);
                    return(false);
                }
                return(true);
            }
示例#3
0
 public static void Postfix(WholeMapViewer __instance, GameObject ___layerParent)
 {
     if (!enabled)
     {
         return;
     }
     input = __instance.GetComponent <MapInput>();
 }
示例#4
0
            static bool Prefix(WholeMapViewer __instance, Image iconImage, Image ___NowPlayingMap, bool ___forceWorldMap)
            {
                if (Input.GetKey(KeyCode.LeftControl))
                {
                    Vector3    vector    = ___NowPlayingMap.rectTransform.InverseTransformPoint(iconImage.rectTransform.position);
                    MethodInfo dynMethod = __instance.GetType().GetMethod("ReverseConvertGamePosFromGameMap", BindingFlags.NonPublic | BindingFlags.Instance);
                    Vector3    v3        = (Vector3)dynMethod.Invoke(__instance, new object[] { new Vector3(vector.x, vector.y, 0f) });
                    v3.z = 100f;

                    Module <Player> .Self.GamePos = v3;

                    //Module<Player>.Self.actor.RequestForceMove(new Vector3(0,0,-1000f));

                    return(false);
                }
                return(true);
            }
示例#5
0
            public static bool Prefix(WholeMapViewer __instance, MapIconData iconData, MapIconInfo icon, float ___curLayerMin, float ___curLayerMax)
            {
                if (!enabled)
                {
                    return(true);
                }
                PresetIcon presetIcon = icon as PresetIcon;

                if (icon.HasInfo(MapType.Transport) && presetIcon != null && presetIcon.IsIcon(MapIcon.TRANSFERPOINT))
                {
                    GameObject parent = (GameObject)typeof(MapViewer).GetMethod("GetIconLayerParent", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { icon.GetIconLayer() });
                    typeof(MapViewer).GetMethod("ShowIcon", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { iconData, parent, icon });
                    typeof(WholeMapViewer).GetMethod("SetIconRectTrans", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { iconData, icon });
                    return(false);
                }
                return(true);
            }
示例#6
0
            public static void Postfix(WholeMapViewer __instance)
            {
                if (!enabled)
                {
                    return;
                }
                List <MapIconData> listIconPrefabs = AccessTools.FieldRefAccess <MapViewer, List <MapIconData> >(__instance, "listIconPrefabs");
                var i = 0;

                foreach (MapIconData mid in listIconPrefabs)
                {
                    if (mid != null && mid.imap != null && mid.imap.GetIconInfo().HasInfo(MapType.Transport) && (mid.imap.GetIconInfo() as PresetIcon) != null && (mid.imap.GetIconInfo() as PresetIcon).IsIcon(MapIcon.TRANSFERPOINT))
                    {
                        //Dbgl($"scene: {mid.imap.GetScenarioName()} pos: {mid.imap.GetPos()} hover: {mid.imap.GetHoverInfo()}");
                    }
                }
                MessageManager.Instance.Subscribe("UIOtherMapTransfer", new Action <object[]>(JoyStickConfirm));
            }
示例#7
0
            public static bool Prefix(WholeMapViewer __instance, Image image, MapHoverDetail details, bool isDrag, ref Vector2 nearestAim, List <IMap> ___imapShowInfo, List <MapIconData> ___listIconPrefabs)
            {
                if (!enabled)
                {
                    return(true);
                }
                nearestAim = Vector2.zero;
                float num  = 100f;
                bool  flag = false;

                ___imapShowInfo.Clear();
                if (!isDrag)
                {
                    Rect rect = WholeMapViewer.RectTransformToWorldSpace(image.rectTransform);
                    for (int i = 0; i < ___listIconPrefabs.Count; i++)
                    {
                        if (!(___listIconPrefabs[i].iconObject == null))
                        {
                            if (___listIconPrefabs[i].iconObject.gameObject.activeSelf)
                            {
                                MapIconPoolObj iconObject = ___listIconPrefabs[i].iconObject;
                                Rect           other      = WholeMapViewer.RectTransformToWorldSpace(iconObject.ColRect);
                                if (Singleton <InputDeviceDetector> .Instance.CurDevice != InputDevice.MouseKeyboard)
                                {
                                    Vector3 v    = input.GetActiveIcon().rectTransform.InverseTransformPoint(___listIconPrefabs[i].iconObject.transform.position);
                                    float   num2 = Vector2.Distance(Vector2.zero, v);
                                    if (num > num2)
                                    {
                                        num        = num2;
                                        nearestAim = v;
                                    }
                                }
                                if (rect.Overlaps(other))
                                {
                                    ___imapShowInfo.Add(___listIconPrefabs[i].imap);
                                    MapIconInteractTransfer component = ___listIconPrefabs[i].iconObject.GetComponent <MapIconInteractTransfer>();
                                    if (component != null && curTransfer == null && Input.GetMouseButton(0))
                                    {
                                        flag        = true;
                                        curTransfer = component;

                                        Dbgl(rect.ToString());

                                        IMap imap = AccessTools.FieldRefAccess <MapIconInteractTransfer, IMap>(component, "curImap");

                                        int tranId = Singleton <TransferTransIdDataBase> .Self.GetTranId((imap as SceneItemTransfer_IMap).SItem.ID);

                                        string name = (tranId <= 0) ? string.Empty : TextMgr.GetStr(tranId, -1);
                                        //Dbgl($"name: {name} pos: {imap.GetPos()}");

                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                if (!flag)
                {
                    return(true);
                }
                details.Fresh(___imapShowInfo);
                return(false);
            }