Exemple #1
0
    private bool createRemotePlayer(DataEntityHandle remotePlayerHandle, bool attemptSpawn = true)
    {
        if (!dataEntityCollection.HasComponent <GameObjectReferenceData>(remotePlayerHandle))
        {
            dataEntityCollection.AddComponent <GameObjectReferenceData>(remotePlayerHandle);
        }
        if (!dataEntityCollection.HasComponent <AirBubbleData>(remotePlayerHandle))
        {
            dataEntityCollection.AddComponent <AirBubbleData>(remotePlayerHandle);
        }
        PositionData     component  = dataEntityCollection.GetComponent <PositionData>(remotePlayerHandle);
        RemotePlayerData component2 = dataEntityCollection.GetComponent <RemotePlayerData>(remotePlayerHandle);

        component2.PlayerRemoved += onPlayerRemoved;
        playerRemovedListeners.Add(component2);
        PresenceData component3 = dataEntityCollection.GetComponent <PresenceData>(remotePlayerHandle);

        if (component3 != null)
        {
            component3.PresenceDataUpdated += onPresenceDataUpdated;
        }
        if (!dataEntityCollection.HasComponent <LODRequestReference>(remotePlayerHandle))
        {
            LODRequestData requestData = new LODRequestData(LODSystem.REMOTE_PLAYER, remotePlayerHandle, component);
            requestData.OnGameObjectGeneratedEvent += onLODGameObjectGenerated;
            requestData.OnGameObjectRevokedEvent   += onLODGameObjectRevoked;
            LODRequest request = Service.Get <LODService>().Request(requestData, attemptSpawn);
            dataEntityCollection.AddComponent <LODRequestReference>(remotePlayerHandle).Request = request;
        }
        return(false);
    }
        private void getRoomPopulations()
        {
            PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle);

            Service.Get <EventDispatcher>().AddListener <WorldServiceEvents.RoomPopulationReceivedEvent>(onRoomPopulationReceived);
            Service.Get <INetworkServicesManager>().WorldService.GetRoomPopulation(component.World, Service.Get <Localizer>().LanguageString);
        }
Exemple #3
0
        private void logStoreVisit()
        {
            CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
            PresenceData           component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle);

            Service.Get <ICPSwrveService>().Action("game.disney_store_visit", component.Room);
        }
        /// <summary>
        /// Send Inventory message. Required at least once before sending data
        /// </summary>
        /// <returns></returns>
        public async Task SendInventoryMessage(IEnumerable <Sensor> sensors)
        {
            var payload = new Inventory(Node, sensors).ToJson();

            // Publish DeviceNodeInventory
            var inventoryMessage = new MqttApplicationMessageBuilder()
                                   .WithTopic($"{ClientId}/publish/DeviceProfile/Status/DeviceNodeInventory")
                                   .WithPayload(payload)
                                   .WithExactlyOnceQoS()
                                   .WithRetainFlag()
                                   .Build();

            await mqttClient.PublishAsync(inventoryMessage);


            // Publish DeviceNodePresence
            payload = new PresenceData(sensors.Select(s => new InventoryItem(Node, s.Id, null, 1))).ToJson();
            var presenceMessage = new MqttApplicationMessageBuilder()
                                  .WithTopic($"{ClientId}/publish/DeviceProfile/Status/DeviceNodePresence")
                                  .WithPayload(payload)
                                  .WithExactlyOnceQoS()
                                  .WithRetainFlag()
                                  .Build();
            await mqttClient.PublishAsync(presenceMessage);
        }
        public bool ReportAgent(UUID sessionID, UUID regionID)
        {
            try
            {
                PresenceData presence = m_Database.Get(sessionID);

                bool success;
                if (presence == null)
                {
                    success = false;
                }
                else
                {
                    success = m_Database.ReportAgent(sessionID, regionID);
                }

                m_log.DebugFormat("[PRESENCE SERVICE]: ReportAgent{0}: session {1}, user {2}, region {3}. Previously: {4}",
                                  success ? "" : " failed",
                                  sessionID, (presence == null) ? null : presence.UserID, regionID,
                                  (presence == null) ? "not logged-in" : "region " + presence.RegionID);

                return(success);
            }
            catch (Exception e)
            {
                m_log.Debug(string.Format("[PRESENCE SERVICE]: ReportAgent for session {0} threw exception ", sessionID), e);
                return(false);
            }
        }
        public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
        {
            PresenceData prevUser = GetUser(userID);

            if (!m_allowDuplicatePresences && (prevUser != null))
            {
                m_Database.Delete("UserID", userID.ToString());
            }

            PresenceData data = new PresenceData();

            data.UserID    = userID;
            data.RegionID  = UUID.Zero;
            data.SessionID = sessionID;
            data.Data      = new Dictionary <string, string>();
            data.Data["SecureSessionID"] = secureSessionID.ToString();

            m_Database.Store(data);

            string prevUserStr = "";

            if (prevUser != null)
            {
                prevUserStr = string.Format(". This user was already logged-in: session {0}, region {1}", prevUser.SessionID, prevUser.RegionID);
            }

            m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent: session {0}, user {1}, region {2}, secure session {3}{4}",
                              data.SessionID, data.UserID, data.RegionID, secureSessionID, prevUserStr);

            return(true);
        }
Exemple #7
0
        public static PresenceData GetPresenceData()
        {
            PresenceData presenceData = PresenceData.GetDefaultData();

            string jsonPath = GetPresenceFilePath();

            try
            {
                using (StreamReader reader = new StreamReader(jsonPath))
                {
                    string json = reader.ReadToEnd();

                    presenceData = json.FromJson <PresenceData>();

                    if (presenceData == null || presenceData.status == null)
                    {
                        throw new JsonReaderException();
                    }
                }
            }
            catch (Exception exception)
            {
                if (exception is FileNotFoundException || exception is JsonReaderException)
                {
                    presenceData = PresenceData.GetDefaultData();

                    using (TextWriter writer = new StreamWriter(jsonPath, false))
                    {
                        writer.Write(presenceData.ToJson());
                    }
                }
            }

            return(presenceData);
        }
Exemple #8
0
        public bool LoginAgent(string userID, UUID sessionID,
                               UUID secureSessionID)
        {
            //PresenceData[] d = m_Database.Get("UserID", userID);
            //m_Database.Get("UserID", userID);

            if (!m_allowDuplicatePresences)
            {
                m_Database.Delete("UserID", userID.ToString());
            }

            PresenceData data = new PresenceData();

            data.UserID    = userID;
            data.RegionID  = UUID.Zero;
            data.SessionID = sessionID;
            data.Data      = new Dictionary <string, string>();
            data.Data["SecureSessionID"] = secureSessionID.ToString();

            m_Database.Store(data);

            m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent {0} with session {1} and ssession {2}",
                              userID, sessionID, secureSessionID);
            return(true);
        }
Exemple #9
0
 private bool isLocalAndRemoteInTheSameRoom(PresenceData remotePresenceData, PresenceData localPresenceData)
 {
     if (localPresenceData.IsNotInCurrentRoomsScene)
     {
         return(false);
     }
     return((!localPresenceData.IsInInstancedRoom && remotePresenceData.Room == localPresenceData.Room && remotePresenceData.World == localPresenceData.World) || (localPresenceData.IsInInstancedRoom && dataEntityCollection.HasComponent <GameObjectReferenceData>(Handle)));
 }
Exemple #10
0
    private void onTemporaryHeadStatusUpdated(PresenceData presenceData)
    {
        HeadStatusView component = base.gameObject.GetComponent <HeadStatusView>();

        if (component != null)
        {
            component.LoadParticlePrefab(presenceData.TemporaryHeadStatusType);
        }
    }
Exemple #11
0
 private bool onPresenceDataAdded(DataEntityEvents.ComponentAddedEvent <PresenceData> evt)
 {
     if (evt.Handle == Handle)
     {
         presenceData = evt.Component;
         presenceData.PresenceDataUpdated += onPresenceDataUpdated;
     }
     return(false);
 }
Exemple #12
0
        public bool Store(PresenceData data)
        {
            if (Instance != this)
            {
                return(Instance.Store(data));
            }

            m_presenceData[data.SessionID] = data;
            return(true);
        }
Exemple #13
0
    private void Start()
    {
        CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
        PresenceData           component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle);

        if (component == null || string.IsNullOrEmpty(component.World))
        {
            base.gameObject.SetActive(value: false);
        }
    }
Exemple #14
0
 public void PresenceDataUpdated(FriendStatus friendStatus, PresenceData presenceData)
 {
     playerWorld = presenceData.World;
     if (friendStatus == FriendStatus.Friend)
     {
         bool flag = isPresenceDataValidForJump(presenceData);
         JumpToFriendButton.SetActive(flag);
         InactiveJumpToFriendButton.SetActive(!flag);
     }
 }
Exemple #15
0
    public void Start()
    {
        CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
        PresenceData           component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle);

        if (component != null)
        {
            GetComponent <Text>().text = $"{component.World} ";
        }
    }
        public bool Store(PresenceData data)
        {
            if (Instance != this)
                return Instance.Store(data);

//            m_log.DebugFormat("[NULL PRESENCE DATA]: Storing presence {0}", data.UserID);
//            Console.WriteLine("HOME for " + data.UserID + " is " + (data.Data.ContainsKey("HomeRegionID") ? data.Data["HomeRegionID"] : "Not found"));

            m_presenceData[data.SessionID] = data;
            return true;
        }
Exemple #17
0
        public void OnPresenceCallback(string in_message)
        {
            PresenceData presenceData = new PresenceData();

            GFriendsManager.Instance.ParsePresenceCallback(in_message, ref presenceData);
            if (presenceData.ProfileId.Length > 0)
            {
                // Refresh our friend's online status
                UpdateFriendOnlineStatus(m_friendsListItem, presenceData);
            }
        }
Exemple #18
0
        private void logClaimBI()
        {
            PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle);
            string       tier      = "";

            if (component != null)
            {
                tier = component.World;
            }
            Service.Get <ICPSwrveService>().Action("daily_task." + task.Definition.Group.ToString().ToLower() + ".claim_daily_reward", task.Definition.name, tier);
        }
 private bool UpdateFriendOnlineStatus(List <FriendsListItem> in_listItem, PresenceData in_presenceData)
 {
     for (int i = 0; i < in_listItem.Count; ++i)
     {
         if (in_listItem[i].ProfileId.Equals(in_presenceData.ProfileId))
         {
             in_listItem[i].UpdateOnlineStatus(in_presenceData);
             return(true);
         }
     }
     return(false);
 }
Exemple #20
0
    public static void ClaimDailyTaskReward(Task dailyTask)
    {
        Service.Get <DailyChallengeService>().ClaimTaskReward(dailyTask);
        PresenceData component = Service.Get <CPDataEntityCollection>().GetComponent <PresenceData>(Service.Get <CPDataEntityCollection>().LocalPlayerHandle);
        string       tier      = "";

        if (component != null)
        {
            tier = component.World;
        }
        Service.Get <ICPSwrveService>().Action("daily_task." + dailyTask.Definition.Group.ToString().ToLower() + ".claim_daily_reward", dailyTask.Definition.name, tier);
        Service.Get <EventDispatcher>().DispatchEvent(new TaskEvents.TaskRewardClaimed(dailyTask));
    }
Exemple #21
0
        public bool Store(PresenceData data)
        {
            if (Instance != this)
            {
                return(Instance.Store(data));
            }

            //            m_log.DebugFormat("[NULL PRESENCE DATA]: Storing presence {0}", data.UserID);
            //            Console.WriteLine("HOME for " + data.UserID + " is " + (data.Data.ContainsKey("HomeRegionID") ? data.Data["HomeRegionID"] : "Not found"));

            m_presenceData[data.SessionID] = data;
            return(true);
        }
Exemple #22
0
    private async void CyclePresence()
    {
        m_currentPresenceId = (m_currentPresenceId + 1) % m_presenceIds.Length;

        try
        {
            PresenceData data = new PresenceData(m_context.AppConfig.ServiceConfigurationId, m_presenceIds[m_currentPresenceId]);
            await m_context.PresenceService.SetPresenceAsync(true, data);
        }
        catch (Exception ex)
        {
            LogLine("CyclePresence failed: " + ex.ToString());
        }
    }
Exemple #23
0
    private void setPresenceData()
    {
        CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();

        localPresenceData = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle);
        if (localPresenceData != null)
        {
            localPresenceData.IsNotInCurrentRoomsScene = true;
        }
        else
        {
            Log.LogError(this, "Unable to set IsNotInCurrentRoomsScene. Jump to friends may be broken.");
        }
    }
Exemple #24
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 #25
0
        public PresenceInfo GetAgent(UUID sessionID)
        {
            PresenceInfo ret = new PresenceInfo();

            PresenceData data = m_Database.Get(sessionID);

            if (data == null)
            {
                return(null);
            }

            ret.UserID   = data.UserID;
            ret.RegionID = data.RegionID;

            return(ret);
        }
Exemple #26
0
    private void onPresenceDataUpdated(PresenceData presenceData)
    {
        DataEntityHandle entityByComponent = dataEntityCollection.GetEntityByComponent(presenceData);

        if (!entityByComponent.IsNull && dataEntityCollection.TryGetComponent(entityByComponent, out LODRequestReference component))
        {
            if (presenceData.AFKState.Type == AwayFromKeyboardStateType.AwayFromWorld)
            {
                Service.Get <LODService>().PauseRequest(component.Request);
            }
            else if (component.Request.IsPaused)
            {
                Service.Get <LODService>().UnpauseRequest(component.Request);
            }
        }
    }
Exemple #27
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);
        }
        public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
        {
            bool inCache = ByUserCache.TryGetValue(userID, out PresenceData prevUser);

            if (!inCache)
            {
                PresenceData[] dataprv = m_Database.Get("UserID", userID);
                if (dataprv.Length > 0)
                {
                    prevUser = dataprv[0];
                }
            }

            if (!m_allowDuplicatePresences && (prevUser != null))
            {
                m_Database.Delete("UserID", userID.ToString());
                if (inCache)
                {
                    BySessionCache.Remove(prevUser.SessionID);
                    ByUserCache.Remove(userID);
                }
            }

            PresenceData data = new PresenceData();

            data.UserID    = userID;
            data.RegionID  = UUID.Zero;
            data.SessionID = sessionID;
            data.Data      = new Dictionary <string, string>();
            data.Data["SecureSessionID"] = secureSessionID.ToString();

            m_Database.Store(data);
            BySessionCache.Add(sessionID, data, EXPIREMS);
            ByUserCache.Add(userID, data, EXPIREMS);

            string prevUserStr = "";

            if (prevUser != null)
            {
                prevUserStr = string.Format(". This user was already logged-in: session {0}, region {1}", prevUser.SessionID, prevUser.RegionID);
            }

            m_log.DebugFormat("[PRESENCE SERVICE]: LoginAgent: session {0}, user {1}, region {2}, secure session {3}{4}",
                              data.SessionID, data.UserID, data.RegionID, secureSessionID, prevUserStr);

            return(true);
        }
Exemple #29
0
 public void OnJumpToFriendButtonClicked()
 {
     if (!playerCardController.IsShowingJumpPrompt)
     {
         playerCardController.IsShowingJumpPrompt = true;
         CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
         PresenceData           component = cPDataEntityCollection.GetComponent <PresenceData>(cPDataEntityCollection.LocalPlayerHandle);
         if (component.World == playerWorld)
         {
             Service.Get <PromptManager>().ShowPrompt("JumpToFriendPrompt", onJumpToFriendPromptButtonClicked);
             return;
         }
         PromptDefinition promptDefinition = Service.Get <PromptManager>().GetPromptDefinition("JumpToFriendServerPrompt");
         PromptLoaderCMD  promptLoaderCMD  = new PromptLoaderCMD(this, promptDefinition, showJumpToFriendServerPrompt);
         promptLoaderCMD.Execute();
     }
 }
Exemple #30
0
    private void returnToPreviousScene()
    {
        isCancelledSceneTransitionRequested = false;
        PresenceData component = dataEntityCollection.GetComponent <PresenceData>(dataEntityCollection.LocalPlayerHandle);

        dataEntityCollection.ClearZoneScope();
        Service.Get <GameStateController>().GoOffline();
        Service.Get <LoadingController>().ClearAllLoadingSystems();
        if (component.IsInInstancedRoom)
        {
            LoadIgloo(component.InstanceRoom, Service.Get <Localizer>().Language, SceneStateData.SceneState.Play, Service.Get <GameStateController>().SceneConfig.TransitionSceneName);
        }
        else
        {
            LoadZone(component.Room, Service.Get <GameStateController>().SceneConfig.TransitionSceneName, component.World);
        }
        Service.Get <GameStateController>().TriggerZoneConnectingEvent();
    }
Exemple #31
0
        private void UpdateFriendOnlineStatus(List <FriendsListItem> in_listItem, PresenceData in_presenceData)
        {
            int nbrOnline = 0;

            for (int i = 0; i < in_listItem.Count; ++i)
            {
                if (in_listItem[i].ProfileId.Equals(in_presenceData.ProfileId))
                {
                    in_listItem[i].UpdateOnlineStatus(in_presenceData);
                    in_listItem[i].RefreshOnlineVisibility();
                }
                if (in_listItem[i].ItemData.Presence.IsOnline)
                {
                    nbrOnline++;
                }
            }
            NoFriendsOnline.gameObject.SetActive(nbrOnline == 0);
        }