Beispiel #1
0
            static bool Prefix(TreasureRevealer __instance)
            {
                if (!enabled)
                {
                    return(true);
                }

                if (tril.Count == 0)
                {
                    GetAllTreasures(__instance);
                }

                float maxDistance = Module <TreasureRevealerManager> .Self.property.detectRange * settings.RangeMult;

                TreasureRevealerItem.ModeEnum mEnum = (!Module <TreasureRevealerManager> .Self.property.showBorder) ? TreasureRevealerItem.ModeEnum.Selection : TreasureRevealerItem.ModeEnum.Border;

                for (int i = 0; i < tril.Count; i++)
                {
                    TreasureRevealerItem tri = tril[i];
                    if (tri != null && tri.gameObject != null && Vector3.Distance(Module <Player> .Self.GamePos, tri.pos) <= maxDistance)
                    {
                        tri.ResetState(mEnum, Module <TreasureRevealerManager> .Self.property.showName);
                    }
                    else
                    {
                        tri.ResetState(TreasureRevealerItem.ModeEnum.Preview, false);
                    }
                }

                return(false);
            }
Beispiel #2
0
        static void GetAllTreasures(TreasureRevealer __instance)
        {
            List <ItemDrop> itemDrop = Module <VoxelDungeonManager> .Self.GetItemDrop(Module <ScenarioModule> .Self.CurScenarioNameForGeneration);

            List <RevealLightPoint> list = new List <RevealLightPoint>();
            List <Transform>        dynamicPortalEnterPoint = Module <VoxelDungeonManager> .Self.GetDynamicPortalEnterPoint(Module <ScenarioModule> .Self.CurScenarioNameForGeneration);

            if (itemDrop == null && dynamicPortalEnterPoint == null)
            {
                Dbgl("no items!");
                return;
            }
            Dbgl($"got {itemDrop.Count} items!");

            tril.Clear();

            using (List <ItemDrop> .Enumerator enumerator3 = itemDrop.GetEnumerator())
            {
                while (enumerator3.MoveNext())
                {
                    ItemDrop t = enumerator3.Current;
                    list.Add(new RevealLightPoint(t.transform, LightPointType.Treasure));
                }
            }
            foreach (Transform t2 in dynamicPortalEnterPoint)
            {
                list.Add(new RevealLightPoint(t2, LightPointType.PortalEnter));
            }

            string output = "";

            for (int l = 0; l < list.Count; l++)
            {
                RevealLightPoint     rlp = list[l];
                TreasureRevealerItem component;
                if (rlp.type == LightPointType.Treasure)
                {
                    component = UnityEngine.Object.Instantiate <GameObject>(__instance.template).GetComponent <TreasureRevealerItem>();
                }
                else
                {
                    component = UnityEngine.Object.Instantiate <GameObject>(__instance.templatePortal).GetComponent <TreasureRevealerItem>();
                }
                string   name      = string.Empty;
                ItemDrop itemDrop2 = itemDrop.Find((ItemDrop itr) => itr.transform == rlp.transf);
                if (null != itemDrop2)
                {
                    name    = itemDrop2.Item.ItemBase.Name;
                    output += name + "\r\n";
                }

                float maxDistance = Module <TreasureRevealerManager> .Self.property.detectRange * settings.RangeMult;
                component.Init(rlp.transf, TreasureRevealerItem.ModeEnum.Preview, maxDistance, name, null);

                tril.Add(component);
            }
            Dbgl(output);
        }
Beispiel #3
0
            static void Postfix(TreasureRevealer __instance)
            {
                if (!enabled)
                {
                    return;
                }

                Dbgl("destroying");
                for (int i = 0; i < tril.Count; i++)
                {
                    TreasureRevealerItem tri = tril[i];
                    if (tri != null && tri.gameObject != null)
                    {
                        UnityEngine.Object.Destroy(tri.gameObject);
                        UnityEngine.Object.Destroy(tri);
                    }
                }
                tril.Clear();
            }