示例#1
0
            public static bool Prefix(ref Il2CppSystem.Collections.Generic.List <TowerDetailsModel> allTowersInTheGame)
            {
                for (int i = 0; i < Constants.powers.Length; i++)
                {
                    ShopTowerDetailsModel powerDetails = new ShopTowerDetailsModel(Constants.powers[i],
                                                                                   allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.name.Contains("EngineerMonkey")).towerIndex, 0, 0, 0, -1, -1, null);
                    Utils.RegisterTowerInInventory(powerDetails, "EngineerMonkey", allTowersInTheGame);
                }

                for (int i = 0; i < Constants.otherTowers.Length; i++)
                {
                    ShopTowerDetailsModel otherTowerDetails = new ShopTowerDetailsModel(Constants.otherTowers[i], -1, 0, 0, 0, -1, -1, null);

                    string insertBefore = "EngineerMonkey"; // support had the most occurrences, so have it default to mortar to eliminate the conditional for military

                    if (Constants.otherTowerTowersets[i] == "Military")
                    {
                        insertBefore = "MortarMonkey";                                                 // military towers
                    }
                    if (Constants.otherTowerTowersets[i] == "Magic")
                    {
                        insertBefore = "Druid";                                              // magic towers
                    }
                    otherTowerDetails.towerIndex = allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.name.Contains(insertBefore)).towerIndex;
                    Utils.RegisterTowerInInventory(otherTowerDetails, insertBefore, allTowersInTheGame);
                }


                return(true);
            }
        public override GameObject[] GetRootGameObjects(Scene scene)
        {
            if (!scene.isLoaded)
            {
                return(new GameObject[0]);
            }

            int handle = scene.handle;

            if (handle == -1)
            {
                return(new GameObject[0]);
            }

            int count = GetRootCount(handle);

            if (count < 1)
            {
                return(new GameObject[0]);
            }

            var list = new Il2CppSystem.Collections.Generic.List <GameObject>(count);

            var iCall = ICallManager.GetICall <d_GetRootGameObjects>("UnityEngine.SceneManagement.Scene::GetRootGameObjectsInternal");

            iCall.Invoke(handle, list.Pointer);

            return(list.ToArray());
        }
示例#3
0
            public static void RegisterTowerInInventory(ShopTowerDetailsModel details, string insertBefore, Il2CppSystem.Collections.Generic.List <TowerDetailsModel> allTowersInTheGame)
            {
                // get the tower details for the tower insertBefore and insert the new tower into the index towerBefore is at, shifting everything after it by 1
                TowerDetailsModel towerAfter = allTowersInTheGame.ToArray().FirstOrDefault(tower => tower.towerId == insertBefore);

                allTowersInTheGame.Insert(allTowersInTheGame.IndexOf(towerAfter), details);
            }
        public override void Update()
        {
            try
            {
                if (Target == null)
                {
                    ExplorerCore.Log("Target is null!");
                    DestroyWindow();
                    return;
                }
                if (!TargetGO && !GetObjectAsGameObject())
                {
                    ExplorerCore.Log("Target was destroyed!");
                    DestroyWindow();
                    return;
                }

                if (m_freeze)
                {
                    if (m_localContext)
                    {
                        TargetGO.transform.localPosition = m_frozenPosition;
                        TargetGO.transform.localRotation = m_frozenRotation;
                    }
                    else
                    {
                        TargetGO.transform.position = m_frozenPosition;
                        TargetGO.transform.rotation = m_frozenRotation;
                    }
                    TargetGO.transform.localScale = m_frozenScale;
                }

                // update child objects
                var childList = new List <Transform>();
                for (int i = 0; i < TargetGO.transform.childCount; i++)
                {
                    childList.Add(TargetGO.transform.GetChild(i));
                }
                childList.Sort((a, b) => b.childCount.CompareTo(a.childCount));
                m_children = childList.ToArray();

                ChildPages.ItemCount = m_children.Length;

                // update components
#if CPP
                var compList = new Il2CppSystem.Collections.Generic.List <Component>();
                TargetGO.GetComponentsInternal(ReflectionHelpers.ComponentType, true, false, true, false, compList);
                m_components = compList.ToArray();
#else
                m_components = TargetGO.GetComponents <Component>();
#endif

                CompPages.ItemCount = m_components.Length;
            }
            catch (Exception e)
            {
                DestroyOnException(e);
            }
        }
示例#5
0
        //Scene.GetRootGameObjects();
        public static GameObject[] GetRootGameObjects(Scene scene)
        {
            var list = new Il2CppSystem.Collections.Generic.List <GameObject>(GetRootCount_Internal(scene));

            GetRootGameObjectsInternal_iCall(scene.handle, list.Pointer);

            return(list.ToArray());
        }
示例#6
0
        public static GameObject[] GetRootGameObjects(Scene scene)
        {
            var list = new Il2CppSystem.Collections.Generic.List <GameObject>(GetRootCount(scene));

            var iCall = ICallHelper.GetICall <d_GetRootGameObjects>("UnityEngine.SceneManagement.Scene::GetRootGameObjectsInternal");

            iCall.Invoke(scene.handle, list.Pointer);

            return(list.ToArray());
        }
        public override void GraphicRaycast(GraphicRaycaster raycaster, PointerEventData data, List <RaycastResult> list)
        {
            var il2cppList = new Il2CppSystem.Collections.Generic.List <RaycastResult>();

            raycaster.Raycast(data, il2cppList);

            if (il2cppList.Count > 0)
            {
                list.AddRange(il2cppList.ToArray());
            }
        }
示例#8
0
        public static GameObject[] GetRootGameObjects(int handle)
        {
            if (handle == -1)
            {
                return(new GameObject[0]);
            }

            Il2CppSystem.Collections.Generic.List <GameObject> list = new Il2CppSystem.Collections.Generic.List <GameObject>(GetRootCount(handle));

            d_GetRootGameObjects iCall = ICallHelper.GetICall <d_GetRootGameObjects>("UnityEngine.SceneManagement.Scene::GetRootGameObjectsInternal");

            iCall.Invoke(handle, list.Pointer);

            return(list.ToArray());
        }
示例#9
0
        public static List <byte> generateTasks(int numCommon, int numShort, int numLong)
        {
            if (numCommon + numShort + numLong <= 0)
            {
                numShort = 1;
            }

            var tasks   = new Il2CppSystem.Collections.Generic.List <byte>();
            var hashSet = new Il2CppSystem.Collections.Generic.HashSet <TaskTypes>();

            var commonTasks = new Il2CppSystem.Collections.Generic.List <NormalPlayerTask>();

            foreach (var task in ShipStatus.Instance.CommonTasks.OrderBy(x => rnd.Next()))
            {
                commonTasks.Add(task);
            }

            var shortTasks = new Il2CppSystem.Collections.Generic.List <NormalPlayerTask>();

            foreach (var task in ShipStatus.Instance.NormalTasks.OrderBy(x => rnd.Next()))
            {
                shortTasks.Add(task);
            }

            var longTasks = new Il2CppSystem.Collections.Generic.List <NormalPlayerTask>();

            foreach (var task in ShipStatus.Instance.LongTasks.OrderBy(x => rnd.Next()))
            {
                longTasks.Add(task);
            }

            int start = 0;

            ShipStatus.Instance.AddTasksFromList(ref start, numCommon, tasks, hashSet, commonTasks);

            start = 0;
            ShipStatus.Instance.AddTasksFromList(ref start, numShort, tasks, hashSet, shortTasks);

            start = 0;
            ShipStatus.Instance.AddTasksFromList(ref start, numLong, tasks, hashSet, longTasks);

            return(tasks.ToArray().ToList());
        }
        internal static void AddBreakDownComponent(GameObject gameObject, BreakDownDefinition objDef)
        {
            BreakDown breakDown = gameObject.AddComponent <BreakDown>();

            BreakDown.m_BreakDownObjects.Add(breakDown);

            RCUtils.SetLayer(gameObject, vp_Layer.InteractiveProp);

            //Object yields
            if (objDef.yield != null && objDef.yield.Length > 0 && Settings.options.objectYields)
            {
                List <GameObject> itemYields = new List <GameObject>();
                List <int>        numYield   = new List <int>();

                foreach (BreakDownYield yield in objDef.yield)
                {
                    if (yield.item.Trim() != "")
                    {
                        //GameObject yieldItem = Resources.Load("GEAR_" + yield.item).Cast<GameObject>();

                        GameObject         yieldItem    = null;
                        UnityEngine.Object yieldItemObj = Resources.Load("GEAR_" + yield.item);

                        if (yieldItemObj != null)
                        {
                            yieldItem = yieldItemObj.Cast <GameObject>();
                            itemYields.Add(yieldItem);
                            numYield.Add(yield.num);
                        }
                        else
                        {
                            Debug.Log("[remove-clutter] Yield  GEAR_" + yield.item + " couldn't be loaded.");
                        }
                    }
                }

                breakDown.m_YieldObject      = itemYields.ToArray();
                breakDown.m_YieldObjectUnits = numYield.ToArray();
            }
            else
            {
                breakDown.m_YieldObject      = new GameObject[0];
                breakDown.m_YieldObjectUnits = new int[0];
            }


            //Time to harvest
            if (objDef.minutesToHarvest > 0 && !Settings.options.fastBreakDown)
            {
                breakDown.m_TimeCostHours = objDef.minutesToHarvest / 60;
            }
            else
            {
                breakDown.m_TimeCostHours = 1f / 60;
            }

            //Harvest sound

            /*MetalSaw
             * WoodSaw
             * Outerwear
             * MeatlSmall
             * Generic
             * Metal
             * MeatlMed
             * Cardboard
             * WoodCedar
             * NylonCloth
             * Plants
             * Paper
             * Wood
             * Wool
             * Leather
             * WoodReclaimedNoAxe
             * WoodReclaimed
             * Cloth
             * MeatLarge
             * WoodSmall
             * WoodFir
             * WoodAxe		*/
            if (objDef.sound.Trim() != "" && objDef.sound != null)
            {
                breakDown.m_BreakDownAudio = "Play_Harvesting" + objDef.sound;
            }
            else
            {
                breakDown.m_BreakDownAudio = "Play_HarvestingGeneric";
            }

            //Display name

            if (Settings.options.showObjectNames)
            {
                String   rawName  = objDef.filter.Replace("_", string.Empty);
                String[] objWords = Regex.Split(rawName, @"(?<!^)(?=[A-Z])");
                String   objName  = String.Join(" ", objWords);

                breakDown.m_LocalizedDisplayName = new LocalizedString()
                {
                    m_LocalizationID = objName
                };
            }
            else
            {
                breakDown.m_LocalizedDisplayName = new LocalizedString()
                {
                    m_LocalizationID = "GAMEPLAY_BreakDown"
                };
            }


            //Required Tools
            if (objDef.requireTool == true && Settings.options.toolsNeeded)
            {
                breakDown.m_RequiresTool = true;
            }

            if (objDef.tools != null && objDef.tools.Length > 0 && Settings.options.toolsNeeded)
            {
                Il2CppSystem.Collections.Generic.List <GameObject> itemTools = new Il2CppSystem.Collections.Generic.List <GameObject>();

                foreach (String tool in objDef.tools)
                {
                    GameObject selectedTool = null;

                    if (tool.ToLower() == "knife")
                    {
                        selectedTool = Resources.Load("GEAR_Knife").Cast <GameObject>();
                    }
                    else if (tool.ToLower() == "hacksaw")
                    {
                        selectedTool = Resources.Load("GEAR_Hacksaw").Cast <GameObject>();
                    }
                    else if (tool.ToLower() == "hatchet")
                    {
                        selectedTool = Resources.Load("GEAR_Hatchet").Cast <GameObject>();
                    }
                    else if (tool.ToLower() == "hammer")
                    {
                        selectedTool = Resources.Load("GEAR_Hammer").Cast <GameObject>();
                    }

                    if (selectedTool != null)
                    {
                        itemTools.Add(selectedTool);
                    }
                    else
                    {
                        Debug.Log("[remove-clutter] Tool " + tool + " couldn't be loaded or doesn't exist.");
                    }
                }

                UnhollowerBaseLib.Il2CppReferenceArray <GameObject> toolsArray = new UnhollowerBaseLib.Il2CppReferenceArray <GameObject>(itemTools.ToArray());

                if (toolsArray.Length > 0)
                {
                    breakDown.m_UsableTools = toolsArray;
                }
                else
                {
                    Debug.Log("[remove-clutter] Tools array is empty.");
                    breakDown.m_RequiresTool = false;
                    breakDown.m_UsableTools  = new GameObject[0];
                }
            }
            else
            {
                breakDown.m_UsableTools = new GameObject[0];
            }
        }
示例#11
0
 public static GearItem[] GetAllGearItems(string gearName)
 {
     Il2CppSystem.Collections.Generic.List <GearItem> result = new Il2CppSystem.Collections.Generic.List <GearItem>();
     GameManager.GetInventoryComponent().GetItems(gearName, result);
     return(result.ToArray());
 }