public void Handle(JsonData data)
        {
            var players  = Object.FindObjectsOfType <PlayerControls>().ToList();
            var switches = (int)Math.Ceiling(players.Count / 2d);

            Main.Logger.Log($"Host: {AccessUtils.IsHost()}");
            Action <PlayerControls> action = controls =>
            {
                if (players.Count > switches)
                {
                    var first = players.First(c => c != controls);
                    players.Remove(controls);
                    if (switches >= 2)
                    {
                        players.Remove(first);
                    }

                    var playerTransform = controls.transform;
                    var switchTransform = first.transform;

                    var tmp = playerTransform.position;
                    playerTransform.position = switchTransform.position;
                    switchTransform.position = tmp;
                }
            };

            Utils.ForEachPlayer(action, action);
        }
Пример #2
0
        public State CheckState()
        {
            var buttons = Object.FindObjectsOfType <Button>();

            _targetButton = buttons.Shuffle().FirstOrDefault(x => ApeUtil.CheckButtonClickable(x, _condition));
            return(_targetButton != null ? State.Execute : State.DontExecute);
        }
        public void HandleMessage(IServerMessageBase msg)
        {
            if (!(msg.Data is FacilityBaseMsgData msgData))
            {
                return;
            }

            var destructibleFacility = Object.FindObjectsOfType <DestructibleBuilding>().FirstOrDefault(o => o.id == msgData.ObjectId);

            if (destructibleFacility != null)
            {
                switch (msgData.FacilityMessageType)
                {
                case FacilityMessageType.Repair:
                    System.DestroyedFacilities.Remove(destructibleFacility.id);
                    System.RepairFacilityWithoutSendingMessage(destructibleFacility);
                    break;

                case FacilityMessageType.Collapse:
                    System.DestroyedFacilities.Add(destructibleFacility.id);
                    System.CollapseFacilityWithoutSendingMessage(destructibleFacility);
                    break;
                }
            }
        }
Пример #4
0
        public bool Execute(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            bool canrun = CommandManager.CanRun(sender, PlayerPermissions.FacilityManagement, out response);

            if (!canrun)
            {
                return(canrun);
            }

            isLightsout = !isLightsout;
            foreach (FlickerableLightController lightController in Object.FindObjectsOfType <FlickerableLightController>())
            {
                Scp079Interactable interactable = lightController.GetComponent <Scp079Interactable>();
                if (interactable == null || interactable.type != Scp079Interactable.InteractableType.LightController)
                {
                    continue;
                }

                lightController.ServerFlickerLights(isLightsout ? 100000f : 0f);
            }

            if (isLightsout)
            {
                foreach (var player in ReferenceHub.GetAllHubs())
                {
                    player.Value.inventory.AddNewItem(ItemType.Flashlight);
                }
            }

            response = $"Facility lights have been {(isLightsout ? "disabled" : "enabled")}!";
            return(canrun);
        }
Пример #5
0
        void ResetGame()
        {
            while (m_ResourcePacketQueue.Count != 0)
            {
                m_ResourcePacketQueue.Dequeue().Dispose();
            }

            EntityManager.DestroyEntity(EntityManager.UniversalQuery);

            //@TODO: Once we have build settings & loading of game object scenes we can remove this hack.
            var scenes = Object.FindObjectsOfType <SubScene>();

            foreach (var scene in scenes)
            {
                scene.enabled = false;
                scene.enabled = true;
            }

            LiveLinkPlayerAssetRefreshSystem.Reset();

            LiveLinkMsg.LogSend("ConnectLiveLink");
            PlayerConnection.instance.Send(LiveLinkMsg.ConnectLiveLink, World.GetExistingSystem <SceneSystem>().BuildSettingsGUID);

            m_LiveLinkSceneChange.Reset();
            SendSetLoadedScenes();
        }
Пример #6
0
        public State CheckState()
        {
            var scrollRects = Object.FindObjectsOfType <ScrollRect>();

            _targetScroll = scrollRects.Shuffle().FirstOrDefault(x => ApeUtil.CheckScrollRectClickable(x, _condition));
            return(_targetScroll != null ? State.Execute : State.DontExecute);
        }
        public override void Execute()
        {
            const BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;

            Object[] objects = Object.FindObjectsOfType <Object>();
            Object   obj     = objects.FirstOrDefault(o => o.GetInstanceID() == InstanceId);

            if (obj == null)
            {
                return;
            }

            Type type = obj.GetType();

            MemberInfo[] members = type.GetMember(MemberName, bindingFlags);
            MemberInfo   member  = members.Single();

            PropertyInfo property = member as PropertyInfo;

            if (property != null)
            {
                property.SetValue(obj, Value.Object, null);
                return;
            }

            FieldInfo field = member as FieldInfo;

            if (field != null)
            {
                field.SetValue(obj, Value.Object);
                return;
            }

            throw new NotSupportedException(member.GetType().FullName);
        }
Пример #8
0
 public static void SetGameCanvasInputsEnabled(bool mouseInputEnabled)
 {
     foreach (var c in Object.FindObjectsOfType <GraphicRaycaster>())
     {
         c.enabled = mouseInputEnabled;
     }
 }
Пример #9
0
        public ListInteractiveObject()
        {
            var interactiveObjects = Object.FindObjectsOfType <InteractiveObject>();

            for (var i = 0; i < interactiveObjects.Length; i++)
            {
                AddInteractiveObject(interactiveObjects[i]);
            }
        }
Пример #10
0
 public static void SaveAll(Type serializedObjectType)
 {
     UnityObject[] objects = UnityObject.FindObjectsOfType(serializedObjectType);
     for (int i = 0; i < objects.Length; ++i)
     {
         var obj = (ISerializedObject)objects[i];
         obj.SaveState();
     }
 }
Пример #11
0
        /// <summary>
        /// Attempt to locate the NetTool and create a NetToolProxy object if successful.
        /// </summary>
        /// <returns>A <c>NetToolProxy</c> object if successful, otherwise null.</returns>
        public static NetToolProxy Locate()
        {
            var toolType = typeof(NetTool);

            // Hack to include FineRoadHeights. If more mods start replacing the NetTool
            // it might be wise to implement an interface system like in Road Protractor
            if (AppDomain.CurrentDomain.GetAssemblies().Any(q => q.FullName.Contains("FineRoadHeights")))
            {
                toolType = Type.GetType("NetToolFine, FineRoadHeights") ?? toolType;
            }

            Debug.Log($"Looking for NetTool of type `{toolType}`");

            var tools = Object.FindObjectsOfType(toolType).Cast <ToolBase>().ToList();

            if (tools.Count == 0 && toolType != typeof(NetTool))
            {
                Debug.Log($"Falling back to default NetTool");
                toolType = typeof(NetTool);
                tools    = Object.FindObjectsOfType(toolType).Cast <ToolBase>().ToList();
            }

            Debug.Log($"Found Tools ({tools.Count}): " + string.Join(", ", tools.Select(q => q.name + $" ({q.GetInstanceID()})").ToArray()));

            if (tools.Count == 0)
            {
                Debug.LogError("Could not find NetTool");
                return(null);
            }

            if (tools.Count > 1)
            {
                // The "First" NetTool created is the one we want, since it's the one Unity seems to use.
                Debug.Log($"Multiple NetTool instances found, using cache to filter to an already known one.");
                tools = tools.Where(p => Cache.Contains(p.GetInstanceID())).ToList();
            }

            if (tools.Count > 1)
            {
                Debug.LogWarning("Still more than 1 NetTool instance found. Using the last one in the hopes it's the right one...");
            }

            var tool = tools.LastOrDefault();

            if (tool == null)
            {
                Debug.LogError("Failed to find NetTool");
                return(null);
            }

            if (!Cache.Contains(tool.GetInstanceID()))
            {
                Cache.Add(tool.GetInstanceID());
            }

            return(NetToolProxy.Create(tool));
        }
Пример #12
0
        private void FindActiveGameObjectsOnStart()
        {
            _playerObjects = new List <IGOUIModule>();
            var _allObjects = new List <IGOUIModule>(Object.FindObjectsOfType <GOUIModule>().ToList());

            foreach (var playerObject in _allObjects.Where(playerObject => playerObject.GOUIModuleCanBeUsed))
            {
                _playerObjects.Add(playerObject);
            }
        }
Пример #13
0
        private void AffectCompanyByColor(Colors color)
        {
            var gameObjects = Object.FindObjectsOfType <CompanyCard>();

            foreach (var gameObject in gameObjects)
            {
                if (gameObject.GetComponent <CompanyCard>().color == color)
                {
                    gameObject.GetComponent <CompanyCardData>().deltaModifiers.Add(new DeltaModifier(amount));
                }
            }
        }
Пример #14
0
        public ListExecuteObject()
        {
            var interactiveObjects = Object.FindObjectsOfType <InteractiveObject>();

            for (var i = 0; i < interactiveObjects.Length; i++)
            {
                if (interactiveObjects[i] is IExecute interactiveObject)
                {
                    AddExecuteObject(interactiveObject);
                }
            }
        }
Пример #15
0
        private void AffectCompanyByName(string name)
        {
            var gameObjects = Object.FindObjectsOfType <CompanyCard>();

            foreach (var gameObject in gameObjects)
            {
                if (gameObject.GetComponent <CompanyCard>().companyName.FullName() == name)
                {
                    gameObject.GetComponent <CompanyCardData>().deltaModifiers.Add(new DeltaModifier(amount));
                }
            }
        }
Пример #16
0
 public static List <Player> GetAllPlayers()
 {
     Player[] players = Object.FindObjectsOfType <Player>();
     if (players == null || players.Length == 0)
     {
         return(null);
     }
     else
     {
         return(players.ToList());
     }
 }
        public ListExecuteObject()
        {
            var interactiveObjects = Object.FindObjectsOfType <InteractiveObject>();

            for (var i = 0; i < interactiveObjects.Length; i++)
            {
                interactiveObjects[i].gameObject.AddComponent <RadarObj>();
                if (interactiveObjects[i] is IExecute interactiveObject)
                {
                    AddExecuteObject(interactiveObject);
                }
            }
        }
Пример #18
0
        public ListOfExecutables()
        {
            //Ищем все интерактивные объекты и, если они реализуют интерфейс IExecute, добавляем их в массив
            var interactiveObjects = Object.FindObjectsOfType <InteractiveObject>();

            for (var i = 0; i < interactiveObjects.Length; i++)
            {
                if (interactiveObjects[i] is IExecutable executableObject)
                {
                    AddExecutableObject(executableObject);
                }
            }
        }
Пример #19
0
        public void Reload()
        {
            Array.Clear(_interactiveObjects, 0, _interactiveObjects.Length);
            Array.Resize(ref _interactiveObjects, 0);
            var interactiveObjects = Object.FindObjectsOfType <InteractiveObject>();

            for (int i = 0; i < interactiveObjects.Length; i++)
            {
                if (interactiveObjects[i] is IExecute interactiveObject)
                {
                    AddExecuteObject(interactiveObject);
                }
            }
        }
        public override void Execute(ICommandContext context)
        {
            var respawnedCount = 0;

            var animals = Object.FindObjectsOfType <Animal>();

            animals.Where(z => z.isDead).ForEach(animal =>
            {
                AnimalManager.sendAnimalAlive(animal, animal.transform.position, 0);
                respawnedCount++;
            });

            context.User.SendLocalizedMessage(Translations, "RESPAWNED_ANIMALS", respawnedCount);
        }
Пример #21
0
        public static void RestoreAll()
        {
            foreach (Type serializedObjectType in
                     fiRuntimeReflectionUtility.AllSimpleTypesDerivingFrom(typeof(ISerializedObject)))
            {
                if (typeof(UnityObject).IsAssignableFrom(serializedObjectType) == false)
                {
                    continue;
                }

                UnityObject[] objects = UnityObject.FindObjectsOfType(serializedObjectType);
                for (int i = 0; i < objects.Length; ++i)
                {
                    var obj = (ISerializedObject)objects[i];
                    obj.RestoreState();
                }
            }
        }
Пример #22
0
        public void OnProcessScene(Scene scene, BuildReport report)
        {
            if (report == null || !AlembicBuildPostProcess.TargetIsSupported(report.summary.platform))
            {
                return;
            }

            var activeScene = SceneManager.GetActiveScene();

            SceneManager.SetActiveScene(scene);
            var players = Object.FindObjectsOfType <AlembicStreamPlayer>();
            var pathToStreamingAssets = GetStreamingAssetsPath(report.summary);

            foreach (var p in players)
            {
                ProcessAlembicStreamPlayerAssets(p, pathToStreamingAssets);
            }
            SceneManager.SetActiveScene(activeScene);
        }
Пример #23
0
        public static void Postfix(VersionShower __instance)
        {
            foreach (Transform name in Object.FindObjectsOfType <Transform>())
            {
                if (name.parent != null)
                {
                    continue;
                }
                if (name.gameObject.name.Contains("ReactorVersion"))
                {
                    name.gameObject.SetActive(false);
                }
            }

            var text = __instance.text;

            //text.text += "\nloaded <color=#FFBFCCFF>T[FF80D5FF]o[FFCC00FF]w[704FA8FF]n[FF0000FF] of[CC4D00FF] Us [FFFFFFFF]by [00FF00FF]slushiegoose[FFFFFFFF] </color>;
            text.text += " - <color=#00FF00FF>ProxyOfUs v1.0.4</color>";
        }
Пример #24
0
        public static void ForEachPlayer(Action <PlayerControls> host, Action <PlayerControls> remote)
        {
            var controls = Object.FindObjectsOfType <PlayerControls>();

            if (controls != null && controls.Length > 0)
            {
                foreach (var control in controls)
                {
                    if (AccessUtils.IsHost())
                    {
                        host?.Invoke(control);
                    }
                    else
                    {
                        remote?.Invoke(control);
                    }
                }
            }
        }
        public override void Execute(ICommandContext context)
        {
            if (context.Parameters.Length == 0)
            {
                if (!(context.User is UnturnedUser))
                {
                    throw new CommandWrongUsageException();
                }

                var currentVeh = ((UnturnedUser)context.User).Player.CurrentVehicle;

                if (currentVeh != null)
                {
                    RepairVehicle(currentVeh);
                    context.User.SendLocalizedMessage(Translations, "VEHICLE_REPAIRED");
                }
                else
                {
                    throw new CommandWrongUsageException(Translations.Get("NOT_IN_VEHICLE"));
                }

                return;
            }

            if (context.Parameters[0].Equals("all"))
            {
                if (context.User.CheckPermission($"RepairVehicle.all") != PermissionResult.Grant)
                {
                    throw new NotEnoughPermissionsException(context.User, "RepairVehicle.all");
                }

                var vehicles = Object.FindObjectsOfType <InteractableVehicle>();
                lock (vehicles)
                {
                    vehicles
                    .Where(veh => !veh.isExploded && !veh.isUnderwater)
                    .ForEach(RepairVehicle);

                    context.User.SendLocalizedMessage(Translations, "VEHICLE_REPAIRED_ALL");
                }
            }
        }
Пример #26
0
 void ReallyCheck()
 {
     WalkKB(KnowledgeBase.Global);
     foreach (var component in Object.FindObjectsOfType <KB>())
     {
         WalkKB(component.KnowledgeBase);
     }
     foreach (var pair in checkerInfoTable)
     {
         var checkerInfo = pair.Value;
         if (!checkerInfo.Referenced)
         {
             KnowledgeBaseRule rule   = checkerInfo.DefiningRule;
             PredicateInfo     global = KnowledgeBase.Global.CheckForPredicateInfo(new PredicateIndicator(rule.HeadFunctor, rule.HeadArity));
             if (global == null || !global.External)
             {
                 rule.PrintWarning("{0}/{1} is never used.", rule.HeadFunctor, rule.HeadArity);
             }
         }
     }
 }
Пример #27
0
        public void HandleMessage(IServerMessageBase msg)
        {
            if (!(msg.Data is FacilityBaseMsgData msgData))
            {
                return;
            }

            switch (msgData.FacilityMessageType)
            {
            case FacilityMessageType.Upgrade:
                var upgradeMsg   = (FacilityUpgradeMsgData)msgData;
                var upgrFacility = Object.FindObjectsOfType <UpgradeableFacility>().FirstOrDefault(o => o.id == upgradeMsg.ObjectId);
                if (upgrFacility != null)
                {
                    System.UpgradeFacilityWithoutSendingMessage(upgrFacility, upgradeMsg.Level);
                }
                break;

            case FacilityMessageType.Repair:
            case FacilityMessageType.Collapse:
                var destructibleFacility = Object.FindObjectsOfType <DestructibleBuilding>().FirstOrDefault(o => o.id == msgData.ObjectId);
                if (destructibleFacility != null)
                {
                    switch (msgData.FacilityMessageType)
                    {
                    case FacilityMessageType.Repair:
                        System.RepairFacilityWithoutSendingMessage(destructibleFacility);
                        break;

                    case FacilityMessageType.Collapse:
                        System.CollapseFacilityWithoutSendingMessage(destructibleFacility);
                        break;
                    }
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #28
0
        public override TrackedReference[] Track(Type type)
        {
            var enumValues  = Enum.GetValues(type).Cast <Enum>().ToArray();
            var referencers = Object.FindObjectsOfType <EnumReferencer>().ToDictionary(referencer => referencer.Address);

            var trackedReferences = new TrackedReference[enumValues.Length];

            for (var i = 0; i < enumValues.Length; i++)
            {
                var address = enumValues[i].GetNiceName();
                if (referencers.TryGetValue(enumValues[i].GetNiceName(), out var referencer))
                {
                    trackedReferences[i] = new TrackedReference(address, true, referencer);
                }
                else
                {
                    trackedReferences[i] = new TrackedReference(address, false, null);
                }
            }

            return(trackedReferences);
        }
Пример #29
0
        public static void RemoveAllSerializedData()
        {
            foreach (Type serializedObjectType in
                     fiRuntimeReflectionUtility.AllSimpleTypesDerivingFrom(typeof(ISerializedObject)))
            {
                if (typeof(UnityObject).IsAssignableFrom(serializedObjectType) == false)
                {
                    continue;
                }

                UnityObject[] objects = UnityObject.FindObjectsOfType(serializedObjectType);
                for (int i = 0; i < objects.Length; ++i)
                {
                    var obj = (ISerializedObject)objects[i];
                    obj.SerializedStateKeys        = new List <string>();
                    obj.SerializedStateValues      = new List <string>();
                    obj.SerializedObjectReferences = new List <UnityObject>();
                    obj.SaveState();
                }
            }

            RemoveMetadata();
        }
Пример #30
0
        /// <summary>
        /// 创建服务管理器对象。构建服务查询表并自启动所有未被禁用的服务。
        /// </summary>
        ///
        /// <author>Nianchen Deng</author>
        public _ServiceManager()
        {
            // 获取所有服务实例并根据executeOrder从小到大排序
            _allServices = Object.FindObjectsOfType <_Service> ().ToList();
            if (_allServices.Any(service => service.executeOrder < 0))
            {
                ULogger.Error("Some services have missing dependencies!");
                _allServices.Clear();
                Framework.Quit();
                return;
            }
            _allServices.Sort((s1, s2) => s1.executeOrder - s2.executeOrder);

            // 构建映射表
            foreach (var service in _allServices)
            {
                if (!_serviceList.TryGetValue(service.GetType(), out var subList))
                {
                    _serviceList.Add(service.GetType(),
                                     subList = new Dictionary <string, _Service> ());
                }
                subList.Add(service.name, service);
            }
        }