// --------------------------- // 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); }
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); } } } }
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); }
// --------------------------- // 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); }