private void Start()
 {
     animator = GetComponent <Animator>();
     FullScreenButton.SetActive(value: false);
     ZonePopup.ZonePopupClosed += onZonePopupClosed;
     ZonePopup.gameObject.SetActive(value: false);
     Service.Get <EventDispatcher>().DispatchEvent(new AwayFromKeyboardEvent(AwayFromKeyboardStateType.Map, faceCamera: true));
     zoneButtons = new Dictionary <ZoneDefinition, WorldMapZoneButton>();
     WorldMapZoneButton[] componentsInChildren = GetComponentsInChildren <WorldMapZoneButton>();
     for (int i = 0; i < componentsInChildren.Length; i++)
     {
         zoneButtons.Add(componentsInChildren[i].ZoneDefinition, componentsInChildren[i]);
     }
     currentZoneDefinition = Service.Get <ZoneTransitionService>().CurrentZone;
     if (zoneButtons.ContainsKey(currentZoneDefinition))
     {
         YouAreHereIcon.transform.position = zoneButtons[currentZoneDefinition].PopupPoint.position;
     }
     else
     {
         YouAreHereIcon.gameObject.SetActive(value: false);
     }
     getRoomPopulations();
     logMapOpen();
 }
        protected override IEnumerator setup()
        {
            yield return(base.setup());

            eventDispatcher = Service.Get <EventDispatcher>();
            Service.Set(SpashScreenCanvas);
            Service.Set(SpashScreenCanvas.gameObject.AddComponent <LoadingController>());
            base.gameObject.AddComponent <KeyChainManager>();
            Service.Set(new GameSettings());
            initDataModel();
            initContentAction();
            yield return(StartTestCoroutine(initSchedulerAction(), this, "initSchedulerAction"));

            initNetworkServices();
            SceneTransitionService sts = base.gameObject.AddComponent <SceneTransitionService>();

            sts.LoadingMode = LoadSceneMode.Additive;
            Service.Set(sts);
            TestZoneDefinition               = ScriptableObject.CreateInstance <ZoneDefinition>();
            TestZoneDefinition.ZoneName      = "EmptySceneForLoadingTests";
            TestZoneDefinition.SceneName     = "EmptySceneForLoadingTests";
            TestZoneDefinition.SceneFilePath = "Assets/Game/Core/Tests/IntegrationTests/ZoneAndSceneTransitionTests/EmptySceneForLoadingTests.unity";
            Manifest zoneManifest = ScriptableObject.CreateInstance <Manifest>();

            zoneManifest.Assets = new ScriptableObject[1] {
                TestZoneDefinition
            };
            zts = base.gameObject.AddComponent <ZoneTransitionService>();
            zts.SetZonesFromManifest(zoneManifest);
            Service.Set(zts);
            yield return(null);
        }
        public override void OnEnter()
        {
            dispatcher = Service.Get <EventDispatcher>();
            transition = GameObject.Find(Zone + "Transition");
            ZoneDefinition currentZone = Service.Get <ZoneTransitionService>().CurrentZone;

            if (currentZone != null && currentZone.SceneName == Zone)
            {
                Finish();
                return;
            }
            if (transition != null)
            {
                dispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(transition.transform));
                return;
            }
            ZoneDefinition currentZone2 = Service.Get <ZoneTransitionService>().CurrentZone;
            string         value        = ((currentZone2 != null) ? currentZone2.SceneName : "");
            int            num          = Array.IndexOf(zoneMap, Zone);
            int            num2         = Array.IndexOf(zoneMap, value);
            int            num3         = -1;
            string         text         = "";

            if (num != -1 && num != num2)
            {
                num3 = ((num > num2) ? (num2 + 1) : (num2 - 1));
                text = zoneMap[num3];
                GameObject gameObject = GameObject.Find(text + "Transition");
                if (gameObject != null)
                {
                    dispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(gameObject.transform));
                }
            }
        }
 public override void OnEnter()
 {
     dispatcher     = Service.Get <EventDispatcher>();
     waypointTarget = GameObject.Find(WaypointName);
     if (waypointTarget != null)
     {
         dispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(waypointTarget.transform, ShowOnscreenIndicator));
         if (WaypointType == WaypointType.COLLIDER)
         {
             dispatcher.AddListener <QuestEvents.QuestWaypointTriggerEntered>(onQuestWaypointTriggerEntered);
         }
         else if (WaypointType == WaypointType.INTERACT)
         {
             GameObject localPlayerGameObject = SceneRefs.ZoneLocalPlayerManager.LocalPlayerGameObject;
             if (localPlayerGameObject != null)
             {
                 localPlayerGameObject.GetComponent <LocomotionEventBroadcaster>().OnInteractionStartedEvent += onInteractionStarted;
             }
         }
     }
     else
     {
         ZoneDefinition currentZone    = Service.Get <ZoneTransitionService>().CurrentZone;
         string         nextZoneInPath = Service.Get <ZonePathing>().GetNextZoneInPath(currentZone.ZoneName, WaypointZone);
         GameObject     gameObject     = GameObject.Find(nextZoneInPath + "Transition");
         if (gameObject != null)
         {
             dispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(gameObject.transform, ShowOnscreenIndicator));
         }
     }
 }
        void CreateZoneByDefinition(ZoneDefinition definition)
        {
            GameObject zoneObject    = new GameObject(GameObjectPrefix + definition.Id);
            RectZone   zoneComponent = zoneObject.AddComponent <RectZone>();

            zoneComponent.SetZone(definition);
            currentZones.Add(zoneObject);
        }
        public override void OnExit()
        {
            ZoneDefinition currentZone = Service.Get <ZoneTransitionService>().CurrentZone;

            if ((currentZone == null || currentZone.SceneName != Zone) && transition != null)
            {
                dispatcher.DispatchEvent(default(HudEvents.SetNavigationTarget));
            }
        }
        void NewZone(ZoneDefinition zonedef)
        {
            if (zonedef == null)
            {
                return;
            }
            var newgameObject = new UnityEngine.GameObject();
            var newZone       = newgameObject.AddComponent <Zone>();

            newZone.SetInfo(zonedef);
        }
Exemple #8
0
 private SpawnPlayerParams(Vector3 position, Quaternion rotation, ZoneDefinition zone, string sceneName, SpawnedAction spawnedAction, bool nudgePlayer, bool getOutOfSwimming, Reward pendingReward)
 {
     Position         = position;
     Rotation         = rotation;
     Zone             = zone;
     SceneName        = sceneName;
     SpawnedAction    = spawnedAction;
     NudgePlayer      = nudgePlayer;
     GetOutOfSwimming = getOutOfSwimming;
     PendingReward    = pendingReward;
 }
 public void SetInfo(ZoneDefinition info)
 {
     this.info = info;
     GetComponent <UnityEngine.Transform>().position    = info.Location.GetPosition();
     GetComponent <UnityEngine.SphereCollider>().radius = info.Location.GetRadius();
     radiationamount = 0f;
     if (float.TryParse(info.radiation, out radiationamount))
     {
         radiationzone = gameObject.AddComponent <RadiationZone>();
     }
 }
    public void SetWaypoint(DWaypoint waypointData)
    {
        currentWaypointData = waypointData;
        GameObject gameObject = string.IsNullOrEmpty(waypointData.WaypointName) ? waypointData.WaypointObject : GameObject.Find(waypointData.WaypointName.Trim());

        CustomZonePathingTrigger[] array = Object.FindObjectsOfType <CustomZonePathingTrigger>();
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i].IsInTrigger && array[i].IsOverrideActive())
            {
                if (gameObject == null)
                {
                    gameObject = array[i].OverrideWaypointTarget.gameObject;
                    break;
                }
                CustomZonePathingTarget component = gameObject.GetComponent <CustomZonePathingTarget>();
                if (component == null || component.IsCustomWaypointActive())
                {
                    gameObject = array[i].OverrideWaypointTarget.gameObject;
                    break;
                }
            }
        }
        EventDispatcher eventDispatcher         = Service.Get <EventDispatcher>();
        bool            flag                    = true;
        Vector3         onScreenIndicatorOffset = waypointData.OnScreenIndicatorOffset;

        if (gameObject != null)
        {
            flag = false;
            CustomZonePathingTarget component = gameObject.GetComponent <CustomZonePathingTarget>();
            if (component != null && component.IsCustomWaypointActive())
            {
                gameObject = component.WaypointPosition;
            }
            eventDispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(gameObject.transform, waypointData.ShowOnScreenIndicator, onScreenIndicatorOffset));
        }
        else if (waypointData.WaypointZone != null)
        {
            ZoneDefinition currentZone    = Service.Get <ZoneTransitionService>().CurrentZone;
            string         nextZoneInPath = GetNextZoneInPath(currentZone.ZoneName, waypointData.WaypointZone);
            GameObject     gameObject2    = GameObject.Find(nextZoneInPath + "Transition");
            if (gameObject2 != null)
            {
                flag = false;
                eventDispatcher.DispatchEvent(new HudEvents.SetNavigationTarget(gameObject2.transform));
            }
        }
        if (flag)
        {
            eventDispatcher.DispatchEvent(default(HudEvents.SetNavigationTarget));
        }
    }
Exemple #11
0
            public void SetInfo(ZoneDefinition info)
            {
                this.info = info;
                GetComponent <UnityEngine.Transform>().position    = info.Location.GetPosition();
                GetComponent <UnityEngine.SphereCollider>().radius = info.Location.GetRadius();
                radiationamount = 0f;

                this.rigidbody.position    = GetComponent <UnityEngine.Transform>().position;
                this.rigidbody.constraints = UnityEngine.RigidbodyConstraints.FreezeAll;
                if (float.TryParse(info.radiation, out radiationamount))
                {
                    radiationzone = gameObject.AddComponent <RadiateZone>();
                }
            }
 public RoomPopulation GetZonePopulation(ZoneDefinition zoneDefinition)
 {
     if (roomPopulations != null)
     {
         for (int i = 0; i < roomPopulations.Count; i++)
         {
             if (roomPopulations[i].identifier.zoneId.name == zoneDefinition.SceneName)
             {
                 return(roomPopulations[i]);
             }
         }
     }
     return(new RoomPopulation(new RoomIdentifier(), RoomPopulationScale.ZERO));
 }
Exemple #13
0
 public void LoadZone(ZoneDefinition zone, string transitionScene = null, string worldName = null)
 {
     if (zone.Type == ZoneDefinition.ZoneType.Igloo)
     {
         ZoneId zoneId = new ZoneId();
         zoneId.name       = zone.ZoneName;
         zoneId.instanceId = CurrentInstanceId;
         LoadIgloo(zoneId, Service.Get <Localizer>().Language, SceneStateData.SceneState.Play, transitionScene);
     }
     else
     {
         LoadZone(zone.SceneName, transitionScene, worldName);
     }
 }
Exemple #14
0
 private void goToActivityNotification(Reward reward)
 {
     if (notificationData.Definition is CellPhoneQuestActivityDefinition)
     {
         CellPhoneQuestActivityDefinition cellPhoneQuestActivityDefinition = (CellPhoneQuestActivityDefinition)notificationData.Definition;
         Mascot         mascot = Service.Get <MascotService>().GetMascot(cellPhoneQuestActivityDefinition.Quest.Mascot.name);
         Vector3        spawnPlayerNearMascotPosition = mascot.Definition.SpawnPlayerNearMascotPosition;
         ZoneDefinition zone = mascot.Definition.Zone;
         goToLocationInZone(spawnPlayerNearMascotPosition, zone.ZoneName, notificationData.Definition, reward);
     }
     else if (notificationData.Definition.GetType() == typeof(CellPhoneLocationActivityDefinition) || notificationData.Definition.GetType().IsSubclassOf(typeof(CellPhoneLocationActivityDefinition)))
     {
         goToLocationInZone((CellPhoneLocationActivityDefinition)notificationData.Definition, reward);
     }
 }
Exemple #15
0
    private bool connectToIgloo(ZoneId zoneId, ZoneDefinition zoneToJoin, Language language, string onJoinNotificationTag)
    {
        if (!startZoneTransition(zoneToJoin.SceneName, onJoinNotificationTag))
        {
            return(false);
        }
        ContentIdentifier contentIdentifier = generateContentIdentifier();

        targetWorldToJoin = null;
        Service.Get <INetworkServicesManager>().WorldService.JoinIgloo(zoneId, LocalizationLanguage.GetLanguageString(language), this);
        PreviousZone      = CurrentZone;
        CurrentZone       = zoneToJoin;
        CurrentInstanceId = zoneId.instanceId;
        return(IsConnecting);
    }
Exemple #16
0
 private void InitDisplays()
 {
     rectTrans = GetComponentInChildren <RectTransform>();
     textUI    = GetComponentInChildren <Text>();
     imageUI   = GetComponentInChildren <Image>();
     if (displayString != "" || attachedDefinition != null)
     {
         hasString = true;
     }
     if (displaySprite != null)
     {
         hasSprite = true;
     }
     if (textUI != null && hasString)
     {
         if (!string.IsNullOrEmpty(displayString))
         {
             textUI.text = Service.Get <Localizer>().GetTokenTranslation(displayString);
         }
         else
         {
             bool           flag           = false;
             ZoneDefinition zoneDefinition = attachedDefinition as ZoneDefinition;
             if (zoneDefinition != null)
             {
                 textUI.text = Service.Get <Localizer>().GetTokenTranslation(zoneDefinition.ZoneToken);
                 flag        = true;
             }
             if (!flag)
             {
                 PropDefinition propDefinition = attachedDefinition as PropDefinition;
                 if (propDefinition != null)
                 {
                     textUI.text = Service.Get <Localizer>().GetTokenTranslation(propDefinition.Name);
                     flag        = true;
                 }
             }
             if (flag)
             {
             }
         }
     }
     if (imageUI != null && hasSprite)
     {
         imageUI.sprite = displaySprite;
     }
     EnableDisplays(status: false);
 }
Exemple #17
0
 public void SetZone(ZoneDefinition zoneDefinition, bool zoneIsIgloo = false, bool showPopulationBar = true)
 {
     ZoneText.text       = Service.Get <Localizer>().GetTokenTranslation(zoneDefinition.ZoneToken);
     this.zoneDefinition = zoneDefinition;
     updateZonePanel(!zoneIsIgloo);
     IglooPanel.SetActive(zoneIsIgloo);
     if (showPopulationBar)
     {
         PopulationPanel.SetActive(value: true);
         UpdatePopulationBar();
     }
     else
     {
         PopulationPanel.SetActive(value: false);
     }
 }
Exemple #18
0
 private bool isPresenceDataValidForJump(PresenceData remotePresenceData)
 {
     if (!string.IsNullOrEmpty(remotePresenceData.World) && !string.IsNullOrEmpty(remotePresenceData.Room))
     {
         ZoneDefinition zone = Service.Get <ZoneTransitionService>().GetZone(remotePresenceData.Room);
         if (zone != null)
         {
             CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
             if (cPDataEntityCollection.TryGetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle, out var component) && component.ContentIdentifier == remotePresenceData.ContentIdentifier)
             {
                 return(!zone.IsQuestOnly && (zone.Type != ZoneDefinition.ZoneType.Igloo || remotePresenceData.IsInInstancedRoom));
             }
         }
     }
     return(false);
 }
Exemple #19
0
        private void setUpPresenceData(PresenceData presenceData)
        {
            DetailsController.PresenceDataUpdated(FriendStatus, presenceData);
            Localizer      localizer      = Service.Get <Localizer>();
            bool           flag           = false;
            ZoneDefinition zoneDefinition = null;

            if (presenceData.IsInInstancedRoom && !string.IsNullOrEmpty(presenceData.InstanceRoom.name))
            {
                zoneDefinition = Service.Get <ZoneTransitionService>().GetZone(presenceData.InstanceRoom.name);
            }
            else if (!presenceData.IsInInstancedRoom && !string.IsNullOrEmpty(presenceData.Room))
            {
                zoneDefinition = Service.Get <ZoneTransitionService>().GetZone(presenceData.Room);
            }
            if (zoneDefinition != null)
            {
                OnlineSpriteSelector.IsOn = true;
                flag = true;
                bool flag2 = false;
                if (dataEntityCollection.TryGetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle, out var component))
                {
                    flag2 = component.ContentIdentifier == presenceData.ContentIdentifier;
                }
                if (flag2)
                {
                    if (zoneDefinition.Type == ZoneDefinition.ZoneType.Igloo)
                    {
                        StatusText.text = localizer.GetTokenTranslation("PlayerCard.FriendStatus.OwnIgloo");
                    }
                    else
                    {
                        StatusText.text = localizer.GetTokenTranslationFormatted("PlayerCard.InZoneText", zoneDefinition.ZoneToken);
                    }
                }
                else
                {
                    StatusText.text = localizer.GetTokenTranslation("GlobalUI.JumpToFriend.Disabled");
                }
            }
            if (!flag)
            {
                StatusText.text           = localizer.GetTokenTranslation("PlayerCard.OfflineText");
                OnlineSpriteSelector.IsOn = false;
            }
            StatusText.gameObject.SetActive(value: true);
        }
Exemple #20
0
            public void SetInfo(ZoneDefinition info)
            {
                this.info = info;
                GetComponent <UnityEngine.Transform>().position    = info.Location.GetPosition();
                GetComponent <UnityEngine.SphereCollider>().radius = info.Location.GetRadius();
                radiationamount = 0f;
                zoneMask        = 0;
                if (info.undestr != null || info.nodecay != null)
                {
                    zoneMask |= ((int)1) << UnityEngine.LayerMask.NameToLayer("Construction");
                    zoneMask |= ((int)1) << UnityEngine.LayerMask.NameToLayer("Deployed");
                }
                if (info.nogather != null)
                {
                    zoneMask |= ((int)1) << UnityEngine.LayerMask.NameToLayer("Resource");
                    zoneMask |= ((int)1) << UnityEngine.LayerMask.NameToLayer("Tree");
                }
                if (info.nopve != null)
                {
                    zoneMask |= ((int)1) << UnityEngine.LayerMask.NameToLayer("AI");
                }
                if (zoneMask != 0)
                {
                    InvokeRepeating("CheckCollisions", 0f, 10f);
                }

                if (info.autolights != null)
                {
                    float currentTime = GetSkyHour();

                    if (currentTime > AutolightOffTime && currentTime < AutolightOnTime)
                    {
                        lightsOn = true;
                    }
                    else
                    {
                        lightsOn = false;
                    }
                    InvokeRepeating("CheckLights", 0f, 10f);
                }

                if (float.TryParse(info.radiation, out radiationamount))
                {
                    radiationzone = gameObject.AddComponent <RadiationZone>();
                }
            }
Exemple #21
0
    private bool spawnNearTransition(ZoneDefinition previousZone)
    {
        bool       result     = false;
        GameObject gameObject = null;

        ZoneTransition[] array = Object.FindObjectsOfType <ZoneTransition>();
        foreach (ZoneTransition zoneTransition in array)
        {
            if (zoneTransition.Zone == null)
            {
                Log.LogErrorFormatted(this, "Invalid zone transition found while attempting to spawn player. No zone definition assigned to transition '{0}'", zoneTransition.GetPath());
            }
            else if (zoneTransition.Zone.ZoneName == previousZone.ZoneName)
            {
                gameObject = zoneTransition.gameObject;
                break;
            }
        }
        if (gameObject != null)
        {
            SpawnPointSelector component = gameObject.GetComponent <SpawnPointSelector>();
            if (component != null)
            {
                result = true;
                setPositionToSpawnPoint(component);
            }
            else
            {
                result = false;
            }
        }
        else
        {
            MapTransition mapTransition = Object.FindObjectOfType <MapTransition>();
            if (mapTransition != null)
            {
                SpawnPointSelector component = mapTransition.GetComponent <SpawnPointSelector>();
                if (component != null)
                {
                    result = true;
                    setPositionToSpawnPoint(component);
                }
            }
        }
        return(result);
    }
    private void onLotButton(IglooCustomizationButton customizationButton)
    {
        LotDefinition  key            = inventoryCountPairs[customizationButton.DefinitionId].Key;
        ZoneDefinition zoneDefinition = zoneDefinitions[key.ZoneDefintion.Id];

        if (!Service.Get <SceneTransitionService>().IsTransitioning&& Service.Get <SceneTransitionService>().CurrentScene != zoneDefinition.SceneName)
        {
            if (sceneLayoutData != null)
            {
                sceneLayoutData.LotZoneName = zoneDefinition.ZoneName;
                Service.Get <ICPSwrveService>().Action("igloo", "lot_selection", sceneLayoutData.LotZoneName);
            }
            lastSelected.SetSelected(isSelected: false);
            customizationButton.SetSelected(isSelected: true);
            lastSelected = customizationButton;
            eventDispatcher.DispatchEvent(new IglooUIEvents.SwapScene(zoneDefinition.SceneName));
        }
    }
Exemple #23
0
    public bool spawnAtSceneLocation()
    {
        bool           flag         = false;
        ZoneDefinition previousZone = Service.Get <ZoneTransitionService>().PreviousZone;

        if (previousZone != null)
        {
            flag = spawnNearTransition(previousZone);
        }
        if (!flag)
        {
            flag = spawnNearDefaultLocation();
        }
        if (ClubPenguin.Core.SceneRefs.IsSet <BaseCamera>())
        {
            ClubPenguin.Core.SceneRefs.Get <BaseCamera>().Snap();
        }
        return(flag);
    }
 public void OnZoneButtonPressed(WorldMapZoneButton zoneButton)
 {
     if (currentZonePopupZone == null || currentZonePopupZone != zoneButton.ZoneDefinition)
     {
         if (zoneButton == iglooZoneButton)
         {
             zoneButton.GetComponent <ShowIglooListButton>().OnButton();
             Service.Get <ICPSwrveService>().Action("igloo", "igloo_list", "map");
             Object.Destroy(base.gameObject);
             return;
         }
         ZonePopup.gameObject.SetActive(value: true);
         currentZonePopupZone = zoneButton.ZoneDefinition;
         ZonePopup.SetPosition(new Vector2(zoneButton.PopupPoint.position.x, zoneButton.PopupPoint.position.y));
         ZonePopup.SetZone(zoneButton.ZoneDefinition, zoneButton == iglooZoneButton, zoneButton != iglooZoneButton);
         ZonePopup.Open();
         logZonePressed(zoneButton.ZoneDefinition);
     }
 }
Exemple #25
0
    public void SetZonesFromManifest(Manifest manifest)
    {
        Zones.Clear();
        ScriptableObject[] assets = manifest.Assets;
        for (int i = 0; i < assets.Length; i++)
        {
            ZoneDefinition item = (ZoneDefinition)assets[i];
            Zones.Add(item);
        }
        string name = SceneManager.GetActiveScene().name;

        foreach (ZoneDefinition zone in Zones)
        {
            if (zone.SceneName == name)
            {
                CurrentZone = zone;
                break;
            }
        }
    }
        void cmdChatZoneAdd(BasePlayer player, string command, string[] args)
        {
            if (!hasPermission(player, "zone"))
            {
                SendMessage(player, "You don't have access to this command"); return;
            }
            var newzoneinfo = new ZoneDefinition(player.transform.position);

            newzoneinfo.ID = GetRandom(1, 99999999).ToString();
            NewZone(newzoneinfo);
            if (zonedefinitions[newzoneinfo.ID] != null)
            {
                storedData.ZoneDefinitions.Remove(zonedefinitions[newzoneinfo.ID]);
            }
            zonedefinitions[newzoneinfo.ID] = newzoneinfo;
            LastZone[player] = newzoneinfo.ID;
            storedData.ZoneDefinitions.Add(zonedefinitions[newzoneinfo.ID]);
            SaveData();
            SendMessage(player, "New Zone created, you may now edit it: " + newzoneinfo.Location.String());
        }
Exemple #27
0
    public bool ConnectToZone(string sceneName, string worldName = null, string onJoinNotificationTag = null)
    {
        ZoneDefinition zoneBySceneName = GetZoneBySceneName(sceneName);

        if (zoneBySceneName == null)
        {
            Log.LogError(this, "Attempting to join a zone that doesn't exist");
            return(false);
        }
        if (!startZoneTransition(sceneName, onJoinNotificationTag))
        {
            return(false);
        }
        PresenceData      component         = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle);
        ContentIdentifier contentIdentifier = generateContentIdentifier();

        if (!string.IsNullOrEmpty(worldName))
        {
            targetWorldToJoin = worldName;
            ZoneId zoneId = new ZoneId();
            zoneId.name = zoneBySceneName.ZoneName;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoomInWorld(new RoomIdentifier(worldName, Service.Get <Localizer>().Language, zoneId, contentIdentifier.ToString()), this);
        }
        else if (component != null && !string.IsNullOrEmpty(component.World))
        {
            targetWorldToJoin = component.World;
            ZoneId zoneId = new ZoneId();
            zoneId.name = zoneBySceneName.ZoneName;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoomInWorld(new RoomIdentifier(component.World, Service.Get <Localizer>().Language, zoneId, contentIdentifier.ToString()), this);
        }
        else
        {
            targetWorldToJoin = null;
            Service.Get <INetworkServicesManager>().WorldService.JoinRoom(zoneBySceneName.ZoneName, contentIdentifier.ToString(), Service.Get <Localizer>().LanguageString, this);
        }
        PreviousZone      = CurrentZone;
        CurrentZone       = zoneBySceneName;
        CurrentInstanceId = "";
        return(IsConnecting);
    }
Exemple #28
0
    private bool onSelfJoinedRoom(WorldServiceEvents.SelfRoomJoinedEvent evt)
    {
        IsConnecting = false;
        dispatcher.RemoveListener <WorldServiceEvents.SelfRoomJoinedEvent>(onSelfJoinedRoom);
        ZoneDefinition zone = GetZone(evt.Room.zoneId.name);

        if (zone != null && !zone.IsQuestOnly && zone.Type != ZoneDefinition.ZoneType.Igloo)
        {
            Service.Get <GameSettings>().LastZone.SetValue(evt.Room.zoneId.name);
            IsInIgloo = false;
        }
        else if (zone != null)
        {
            IsInIgloo = (zone.Type == ZoneDefinition.ZoneType.Igloo);
        }
        checkIfZoneTransitionComplete();
        checkForLocalizationChange(GetWorld(evt.Room.world));
        if (targetWorldToJoin != null && targetWorldToJoin != evt.Room.world)
        {
            onJoinNotificationTag = "GlobalUI.Notification.WorldBump";
        }
        if (!string.IsNullOrEmpty(onJoinNotificationTag))
        {
            DNotification dNotification = new DNotification();
            dNotification.Message              = string.Format(Service.Get <Localizer>().GetTokenTranslation(onJoinNotificationTag), evt.Room.world);
            dNotification.PopUpDelayTime       = 6f;
            dNotification.WaitForLoading       = true;
            dNotification.PersistBetweenScenes = false;
            Service.Get <TrayNotificationManager>().ShowNotification(dNotification);
            onJoinNotificationTag = string.Empty;
        }
        Service.Get <ICPSwrveService>().EndTimer("igloo");
        if (zone.Type == ZoneDefinition.ZoneType.Igloo)
        {
            startBIVisitIglooTimer(evt);
        }
        return(false);
    }
Exemple #29
0
    public void LoadIgloo(ZoneId zoneId, Language language, SceneStateData.SceneState sceneState, string transitionScene = null, string onJoinNotificationTag = null)
    {
        ZoneDefinition zone = GetZone(zoneId.name);

        if (isSceneTransitionValid(zone.SceneName))
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();
            dictionary.Add(SceneTransitionService.SceneArgs.LoadingScreenOverride.ToString(), IglooSplashScreen.Key);
            sceneTransition(zone.SceneName, transitionScene, dictionary);
            connectToIgloo(zoneId, zone, language, onJoinNotificationTag);
        }
        DataEntityHandle dataEntityHandle = dataEntityCollection.FindEntityByName("ActiveSceneData");

        if (dataEntityHandle.IsNull)
        {
            dataEntityHandle = dataEntityCollection.AddEntity("ActiveSceneData");
        }
        if (!dataEntityCollection.TryGetComponent(dataEntityHandle, out SceneStateData component))
        {
            component = dataEntityCollection.AddComponent <SceneStateData>(dataEntityHandle);
        }
        component.State = sceneState;
    }
Exemple #30
0
        private static List <ZoneDefinition> readZoneDefCSV(string fp, Library Lib)
        {
            var records = new List <ZoneDefinition>();

            using (var sr = new StreamReader(fp))
            {
                var csv = new CsvReader(sr);
                csv.Read();
                csv.ReadHeader();

                while (csv.Read())
                {
                    try
                    {
                        ZoneDefinition record = new ZoneDefinition();
                        record.Name = csv.GetField <string>("Name");

                        string loads         = csv.GetField <string>("Loads");
                        string cond          = csv.GetField <string>("Conditioning");
                        string vent          = csv.GetField <string>("Ventilation");
                        string hotwater      = csv.GetField <string>("HotWater");
                        string constructions = csv.GetField <string>("Constructions");

                        record.Loads        = Lib.ZoneLoads.First(x => x.Name == loads);
                        record.Conditioning = Lib.ZoneConditionings.First(x => x.Name == cond);
                        record.Ventilation  = Lib.ZoneVentilations.First(x => x.Name == vent);
                        record.DomHotWater  = Lib.DomHotWaters.First(x => x.Name == hotwater);
                        record.Materials    = Lib.ZoneConstructions.First(x => x.Name == constructions);

                        records.Add(record);
                    }
                    catch (Exception ex) { Debug.WriteLine(ex.Message); }
                }
            }
            return(records);
        }
Exemple #31
0
            public void SetInfo(ZoneDefinition info)
            {
                this.info = info;
                GetComponent<UnityEngine.Transform>().position = info.Location.GetPosition();
                GetComponent<UnityEngine.SphereCollider>().radius = info.Location.GetRadius();
                radiationamount = 0f;
                zoneMask = 0;
                if(info.undestr != null || info.nodecay != null)
                {
                    zoneMask |= ((int)1) << LayerMask.NameToLayer("Construction");
                    zoneMask |= ((int)1) << LayerMask.NameToLayer("Deployed");
                }
                if(info.nogather != null)
                {
                    zoneMask |= ((int)1) << LayerMask.NameToLayer("Resource");
                    zoneMask |= ((int)1) << LayerMask.NameToLayer("Tree");
                }
                if (info.nopve != null)
                {
                    zoneMask |= ((int)1) << LayerMask.NameToLayer("AI");
                }
                if (zoneMask != 0) InvokeRepeating("CheckCollisions", 0f, 10f);

                if (info.autolights != null)
                {
                    float currentTime = GetSkyHour();

                    if (currentTime > AutolightOffTime && currentTime < AutolightOnTime)
                    {
                        lightsOn = true;
                    }
                    else
                    {
                        lightsOn = false;
                    }
                    InvokeRepeating("CheckLights", 0f, 10f);
                }

                if (float.TryParse(info.radiation, out radiationamount))
                    radiationzone = gameObject.AddComponent<RadiationZone>();
            }
Exemple #32
0
        void NewZone(ZoneDefinition zonedef)
        {
            if (zonedef == null) return;
            var newgameObject = new UnityEngine.GameObject();
            var newZone = newgameObject.AddComponent<Zone>();

            newZone.SetInfo(zonedef);
        }
Exemple #33
0
        /////////////////////////////////////////
        // External calls to this plugin
        /////////////////////////////////////////
        /////////////////////////////////////////
        // CreateOrUpdateZone(string ZoneID, object[] args)
        // Create or Update a zone from an external plugin
        // ZoneID should be a name, like Arena (for an arena plugin) (even if it's called an ID :p)
        // args are the same a the /zone command
        // args[0] = "radius" args[1] = "50" args[2] = "eject" args[3] = "true", etc
        // Third parameter is obviously need if you create a NEW zone (or want to update the position)
        /////////////////////////////////////////
        bool CreateOrUpdateZone(string ZoneID, string[] args, Vector3 position = default(Vector3))
        {
            var zonedef = zonedefinitions[ZoneID];
            if (zonedefinitions[ZoneID] != null) storedData.ZoneDefinitions.Remove(zonedefinitions[ZoneID]);
            if (zonedef == null)
            {
                zonedef = new ZoneDefinition();
                zonedef.ID = ZoneID;
            }

            string editvalue;
            for (int i = 0; i < args.Length; i = i + 2)
            {

                cachedField = GetZoneField(args[i]);
                if (cachedField == null) continue;

                switch (args[i + 1])
                {
                    case "true":
                    case "1":
                        editvalue = "true";
                        break;
                    case "null":
                    case "0":
                    case "false":
                    case "reset":
                        editvalue = null;
                        break;
                    default:
                        editvalue = (string)args[i + 1];
                        break;
                }
                cachedField.SetValue(zonedef, editvalue);
                if (args[i].ToLower() == "radius") { if (zonedef.Location != null) zonedef.Location = new ZoneLocation(zonedef.Location.GetPosition(), editvalue); }
            }

            if (position != default(Vector3)) { zonedef.Location = new ZoneLocation((Vector3)position, (zonedef.radius != null) ? zonedef.radius : "20"); }

            zonedefinitions[ZoneID] = zonedef;
            storedData.ZoneDefinitions.Add(zonedefinitions[ZoneID]);
            SaveData();
            if (zonedef.Location == null) return false;
            RefreshZone(ZoneID);
            return true;
        }
Exemple #34
0
 void cmdChatZoneAdd(BasePlayer player, string command, string[] args)
 {
     if (!hasPermission(player, "zone")) { SendMessage(player, "You don't have access to this command"); return; }
     var newzoneinfo = new ZoneDefinition(player.transform.position);
     newzoneinfo.ID = GetRandom(1, 99999999).ToString();
     NewZone(newzoneinfo);
     if (zonedefinitions[newzoneinfo.ID] != null) storedData.ZoneDefinitions.Remove(zonedefinitions[newzoneinfo.ID]);
     zonedefinitions[newzoneinfo.ID] = newzoneinfo;
     LastZone[player] = newzoneinfo.ID;
     storedData.ZoneDefinitions.Add(zonedefinitions[newzoneinfo.ID]);
     SaveData();
     ShowZone(player, LastZone[player]);
     SendMessage(player, "New Zone created, you may now edit it: " + newzoneinfo.Location.String());
 }
 private void NewZone(ZoneDefinition zonedef)
 {
     if (zonedef == null) return;
     var newZone = new GameObject().AddComponent<Zone>();
     newZone.ZoneManagerPlugin = this;
     newZone.SetInfo(zonedef);
     zoneObjects = Resources.FindObjectsOfTypeAll<Zone>();
 }
Exemple #36
0
 private void cmdChatZoneAdd(BasePlayer player, string command, string[] args)
 {
     if (!hasPermission(player, PermZone)) { SendMessage(player, "You don't have access to this command"); return; }
     var newzoneinfo = new ZoneDefinition(player.transform.position) { ID = UnityEngine.Random.Range(1, 99999999).ToString() };
     NewZone(newzoneinfo);
     if (ZoneDefinitions.ContainsKey(newzoneinfo.ID)) storedData.ZoneDefinitions.Remove(ZoneDefinitions[newzoneinfo.ID]);
     ZoneDefinitions[newzoneinfo.ID] = newzoneinfo;
     LastZone[player.userID] = newzoneinfo.ID;
     storedData.ZoneDefinitions.Add(newzoneinfo);
     SaveData();
     ShowZone(player, newzoneinfo.ID);
     SendMessage(player, "New Zone created, you may now edit it: " + newzoneinfo.Location);
 }
Exemple #37
0
        /////////////////////////////////////////
        // External calls to this plugin
        /////////////////////////////////////////

        /////////////////////////////////////////
        // CreateOrUpdateZone(string ZoneID, object[] args)
        // Create or Update a zone from an external plugin
        // ZoneID should be a name, like Arena (for an arena plugin) (even if it's called an ID :p)
        // args are the same a the /zone command
        // args[0] = "radius" args[1] = "50" args[2] = "Eject" args[3] = "true", etc
        // Third parameter is obviously need if you create a NEW zone (or want to update the position)
        /////////////////////////////////////////
        private bool CreateOrUpdateZone(string zoneId, string[] args, Vector3 position = default(Vector3))
        {
            ZoneDefinition zonedef;
            if (!ZoneDefinitions.TryGetValue(zoneId, out zonedef))
                zonedef = new ZoneDefinition { ID = zoneId, radius = 20 };
            else
                storedData.ZoneDefinitions.Remove(zonedef);
            UpdateZoneDefinition(zonedef, args);

            if (position != default(Vector3))
                zonedef.Location = position;

            ZoneDefinitions[zoneId] = zonedef;
            storedData.ZoneDefinitions.Add(zonedef);
            SaveData();

            if (zonedef.Location == null) return false;
            RefreshZone(zoneId);
            return true;
        }
            public void SetInfo(ZoneDefinition info)
            {
                this.info = info;
                GetComponent<UnityEngine.Transform>().position = info.Location.GetPosition();
                GetComponent<UnityEngine.SphereCollider>().radius = info.Location.GetRadius();
                radiationamount = 0f;

                this.rigidbody.position = GetComponent<UnityEngine.Transform>().position;
                this.rigidbody.constraints = UnityEngine.RigidbodyConstraints.FreezeAll;
                if (float.TryParse(info.radiation, out radiationamount))
                  radiationzone = gameObject.AddComponent<RadiateZone>();
            }
Exemple #39
0
 private void NewZone(ZoneDefinition zonedef)
 {
     if (zonedef == null) return;
     var newgameObject = new GameObject();
     var newZone = newgameObject.AddComponent<Zone>();
     newZone.ZoneManagerPlugin = this;
     newZone.SetInfo(zonedef);
     zoneObjects = UnityEngine.Object.FindObjectsOfType<Zone>();
 }
Exemple #40
0
 private static void AddZoneFlag(ZoneDefinition zone, ZoneFlags flag)
 {
     zone.flags |= flag;
 }
Exemple #41
0
 private static void RemoveZoneFlag(ZoneDefinition zone, ZoneFlags flag)
 {
     zone.flags &= ~flag;
 }
            public void SetInfo(ZoneDefinition info)
            {
                Info = info;
                if (Info == null) return;
                gameObject.name = $"Zone Manager({Info.ID})";
                transform.position = Info.Location;
                transform.rotation = Quaternion.Euler(Info.Rotation);
                UpdateCollider();
                gameObject.SetActive(Info.enabled);
                enabled = Info.enabled;

                if (ZoneManagerPlugin.HasZoneFlag(this, ZoneFlags.AutoLights))
                {
                    var currentTime = GetSkyHour();

                    if (currentTime > ZoneManagerPlugin.AutolightOffTime && currentTime < ZoneManagerPlugin.AutolightOnTime)
                        lightsOn = true;
                    else
                        lightsOn = false;
                    if (IsInvoking("CheckLights")) CancelInvoke("CheckLights");
                    InvokeRepeating("CheckLights", 5f, 30f);
                }

                var radiation = gameObject.GetComponent<TriggerRadiation>();
                if (Info.radiation > 0)
                {
                    radiation = radiation ?? gameObject.AddComponent<TriggerRadiation>();
                    radiation.RadiationAmount = Info.radiation;
                    radiation.radiationSize = Info.radius;
                    radiation.interestLayers = playersMask;
                    radiation.enabled = Info.enabled;
                }
                else if (radiation != null)
                {
                    radiation.RadiationAmount = 0;
                    radiation.radiationSize = 0;
                    radiation.interestLayers = playersMask;
                    radiation.enabled = false;
                    //Destroy(radiation);
                }
                if (IsInvoking("CheckEntites")) CancelInvoke("CheckEntites");
                InvokeRepeating("CheckEntites", 10f, 10f);
                /*if (HasAnyFlag(info.flags, ZoneFlags.Eject | ZoneFlags.EjectSleepers
                    | ZoneFlags.KillSleepers | ZoneFlags.NoBleed | ZoneFlags.NoBoxLoot | ZoneFlags.NoBuild
                    | ZoneFlags.NoChat | ZoneFlags.NoDeploy | ZoneFlags.NoDrown | ZoneFlags.NoKits
                    | ZoneFlags.NoPlayerLoot | ZoneFlags.NoRemove | ZoneFlags.NoSuicide | ZoneFlags.NoTp
                    | ZoneFlags.NoUpgrade | ZoneFlags.NoWounded | ZoneFlags.PveGod | ZoneFlags.PvpGod
                    | ZoneFlags.SleepGod | ZoneFlags.AutoLights))
                {
                    Interface.Oxide.LogInfo("Mask: Player (Server)");
                }*/
            }
Exemple #43
0
 private void UpdateZoneDefinition(ZoneDefinition zone, string[] args, BasePlayer player = null)
 {
     for (var i = 0; i < args.Length; i = i + 2)
     {
         object editvalue;
         switch (args[i].ToLower())
         {
             case "name":
                 editvalue = zone.name = args[i + 1];
                 break;
             case "id":
                 editvalue = zone.ID = args[i + 1];
                 break;
             case "radiation":
                 editvalue = zone.radiation = float.Parse(args[i + 1]);
                 break;
             case "radius":
                 editvalue = zone.radius = float.Parse(args[i + 1]);
                 break;
             case "rotation":
                 zone.Rotation = player?.GetNetworkRotation() ?? Vector3.zero;/* + Quaternion.AngleAxis(90, Vector3.up).eulerAngles*/
                 zone.Rotation.x = 0;
                 editvalue = zone.Rotation;
                 break;
             case "size":
                 var size = args[i + 1].Trim().Split(' ');
                 if (size.Length == 3)
                     editvalue = zone.Size = new Vector3(float.Parse(size[0]), float.Parse(size[1]), float.Parse(size[2]));
                 else
                 {
                     if (player != null) SendMessage(player, "Invalid size format, use: \"x y z\"");
                     continue;
                 }
                 break;
             case "enter_message":
                 editvalue = zone.enter_message = args[i + 1];
                 break;
             case "leave_message":
                 editvalue = zone.leave_message = args[i + 1];
                 break;
             case "enabled":
             case "enable":
                 editvalue = zone.enabled = GetBoolValue(args[i + 1]);
                 break;
             default:
                 try
                 {
                     var flag = (ZoneFlags)Enum.Parse(typeof(ZoneFlags), args[i], true);
                     var boolValue = GetBoolValue(args[i + 1]);
                     editvalue = boolValue;
                     if (boolValue) AddZoneFlag(zone, flag);
                     else RemoveZoneFlag(zone, flag);
                 }
                 catch
                 {
                     if (player != null) SendMessage(player, $"Unknown zone flag: {args[i]}");
                     continue;
                 }
                 break;
         }
         if (player != null) SendMessage(player, $"{args[i]} set to {editvalue}");
     }
 }
Exemple #44
0
            public void SetInfo(ZoneDefinition info)
            {
                Info = info;
                if (Info == null) return;
                gameObject.name = $"Zone Manager({Info.ID})";
                transform.position = Info.Location;
                transform.rotation = Quaternion.Euler(Info.Rotation);
                UpdateCollider();
                gameObject.SetActive(Info.enabled);
                enabled = Info.enabled;

                if (ZoneManagerPlugin.HasZoneFlag(this, ZoneFlags.AutoLights))
                {
                    var currentTime = GetSkyHour();

                    if (currentTime > ZoneManagerPlugin.AutolightOffTime && currentTime < ZoneManagerPlugin.AutolightOnTime)
                        lightsOn = true;
                    else
                        lightsOn = false;
                    InvokeRepeating("CheckLights", 5f, 10f);
                }

                var radiation = gameObject.GetComponent<TriggerRadiation>();
                if (Info.radiation > 0)
                {
                    radiation = radiation ?? gameObject.AddComponent<TriggerRadiation>();
                    radiation.RadiationAmount = Info.radiation;
                    radiation.radiationSize = Info.radius;
                    radiation.interestLayers = playersMask;
                    radiation.enabled = Info.enabled;
                } else if (radiation != null)
                {
                    radiation.RadiationAmount = 0;
                    radiation.radiationSize = 0;
                    radiation.interestLayers = playersMask;
                    radiation.enabled = false;
                    //Destroy(radiation);
                }
            }