Beispiel #1
0
        // ---------------------------
        // Get Actor Method.
        // ---------------------------
        public Actor GetActorFromGuid(Guid guid)
        {
            if (!GuidMemberID.ContainsKey(guid))
            {
                ServerApp.Logger.Error("[ActorManager] Not found actor by guid.");
                return(null);
            }

            string memberID = GuidMemberID[guid];
            Actor  actor    = GetActorFromMemberID(memberID);

            return(actor);
        }
Beispiel #2
0
        public void ActorOffline(Guid guid)
        {
            lock (this)
            {
                RemovePeer(guid);
                string memberID = string.Empty;
                // Remove actorData from dictionay.
                if (GuidMemberID.ContainsKey(guid))
                {
                    memberID = GuidMemberID[guid];
                    GuidMemberID.Remove(guid);

                    if (MemberIDActor.ContainsKey(memberID))
                    {
                        MemberIDActor.Remove(memberID);
                    }
                }
            }
        }
Beispiel #3
0
        private Actor CreateGuestProfile(Guid guid)
        {
            // Random generator memberID.
            Random rand     = new Random();
            string memberID = string.Empty;

            while (true)
            {
                memberID = "Profile" + (int)rand.Next(100, 999);
                if (!MemberIDActor.ContainsKey(memberID))
                {
                    break;
                }
            }

            Actor guest = new Actor(guid, memberID);

            GuidMemberID.Add(guid, memberID);
            MemberIDActor.Add(memberID, guest);

            return(guest);
        }
Beispiel #4
0
        // ---------------------------
        // Online / Offline operation.
        // ---------------------------
        public ActorRetune GuestOnline(Guid guid)
        {
            ActorRetune actorRtn = new ActorRetune();

            actorRtn.ReturnCode = -1;

            lock (this)
            {
                // Check guid isn't repeat.
                if (GuidMemberID.ContainsKey(guid))
                {
                    actorRtn.ReturnCode   = 2;
                    actorRtn.DebugMessage = "Repeat login";
                    return(actorRtn);
                }

                // if normal login, register dictionary and retune.
                Actor guestActor = CreateGuestProfile(guid);

                if (!GuidMemberID.ContainsKey(guid))
                {
                    GuidMemberID.Add(guid, guestActor.memberID);
                    ServerApp.Logger.InfoFormat("[ActorManager] Guid list add key: {0}", guid);
                }


                if (!MemberIDActor.ContainsKey(guestActor.memberID))
                {
                    MemberIDActor.Add(guestActor.memberID, guestActor);
                }

                actorRtn.ReturnCode   = 0;
                actorRtn.DebugMessage = "Login success.";
                actorRtn.actorData    = guestActor;
            }

            return(actorRtn);
        }