Exemplo n.º 1
0
    private void BroadcastUserEntrance(AAvatar avatar)
    {
        var jinfo     = avatar.GetSimpleInfo(this);
        var jentrance = new JObject();

        jentrance["enter"] = jinfo;
        var smsg    = jentrance.ToString();
        var jothers = new JArray();

        foreach (var l in lUsernames)
        {
            if (dAIs.ContainsKey(l))
            {
                continue;
            }
            BroadcastToAll("enter", smsg, avatar.username);
            jothers.Add(AAvatarManager.Instance.OnGetAvatar(l).GetSimpleInfo(this));
        }

        if (avatar.bAI)
        {
            return;
        }
        foreach (var l in dAIs.Values)
        {
            jothers.Add(l.GetSimpleInfo(this));
        }

        jentrance["infos"] = jothers;
        smsg = jentrance.ToString();
        avatar.OnSendToClient("enter", smsg);
    }
Exemplo n.º 2
0
    public void OnEnter(AAvatar avatar, string roomType)
    {
        if (!avatar.bAI)
        {
            if (dRooms.ContainsKey(avatar.username))
            {
                if (dRooms[avatar.username].roomType != roomType)
                {
                    AOutput.Log($"avatar.username enter different room {roomType}");
                    dRooms[avatar.username].OnExit(avatar.username);
                    dRooms.Remove(avatar.username);
                }
            }

            ARoomBase room = null;
            if (!dRooms.ContainsKey(avatar.username))
            {
                room = OnCreate(roomType);
                dRooms.Add(avatar.username, room);
            }
            else
            {
                room = dRooms[avatar.username];
            }
            room.OnEnter(avatar);
        }
    }
Exemplo n.º 3
0
    private AAvatar LoadFromDB(string username)
    {
        var result = Avatar.dbavatar.FindOneData(Avatar.TableName, ADBAccessor.filter_eq(InfoNameDefs.Username, username), null);

        if (result != null && result.Contains(InfoNameDefs.AvatarName))
        {
            var a = new AAvatar(username, result[InfoNameDefs.AvatarName].AsString, result);
            OnAddAvatar(a);
            return(a);
        }
        return(null);
    }
    private AAvatar LoadFromDB(string username)
    {
        var result = ADatabaseConfigsManager.avatarDB.FindOneData(ADatabaseConfigsManager.tAvatarData, ADBAccessor.filter_eq(InfoNameDefs.Username, username), null);

        if (result != null && result.Contains(InfoNameDefs.AvatarName))
        {
            var a = new AAvatar(username, result[InfoNameDefs.AvatarName].AsString, result);
            OnAddAvatar(a);
            return(a);
        }
        return(null);
    }
Exemplo n.º 5
0
    public void OnAddAvatar(AAvatar avatar)
    {
        string username = avatar.username;

        if (dAvatars.ContainsKey(username))
        {
            dAvatars[username] = avatar;
        }
        else
        {
            dAvatars.Add(username, avatar);
        }
    }
    internal AAvatar OnCreateAvatar(string username, string avatarname, int isex)
    {
        var updateRes = ADatabaseConfigsManager.avatarDB.UpdateOneData(ADatabaseConfigsManager.tAvatarData, ADBAccessor.filter_eq(InfoNameDefs.Username, username)
                                                                       , ADBAccessor.updates_build(
                                                                           ADBAccessor.update(InfoNameDefs.AvatarName, avatarname)
                                                                           )
                                                                       , true);

        if (updateRes)
        {
            var a = new AAvatar(username, avatarname, null);
            OnAddAvatar(a);

            a.OnSetParamValue(InfoNameDefs.AvatarName, avatarname);
            a.OnSetParamValue(InfoNameDefs.AvatarSex, isex);
            return(a);
        }
        return(null);
    }
Exemplo n.º 7
0
    public void OnEnter(AAvatar avatar)
    {
        if (avatar.bAI)
        {
            dAIs.Add(avatar.username, avatar);
        }

        if (!lUsernames.Contains(avatar.username))
        {
            lUsernames.Add(avatar.username);
        }

        BroadcastUserEntrance(avatar);
        DoEnter(avatar);

        if (IsFull)
        {
            OnStart();
        }
    }
Exemplo n.º 8
0
 protected override void DoEnter(AAvatar avatar)
 {
     if (eSession == ESession.Waiting)
     {
         if (IsFull)
         {
             eSession = ESession.Started;
             DelayDo(1, StartToFaPai);
         }
         else if (!IsFull && ai == null)
         {
             ai = new ARoomCard1Avatar("AI1", "AI陪练", null);
             DelayDo(1, () =>
             {
                 OnEnter(ai);
             });
         }
     }
     else if (eSession == ESession.Started)
     {
         SyncCards();
     }
 }
Exemplo n.º 9
0
 public AComponentParam(AAvatar owner) : base(owner)
 {
 }
Exemplo n.º 10
0
 protected abstract void DoEnter(AAvatar avatar);
Exemplo n.º 11
0
        static string[] chatArgs = new string[] { "u", "t", "c" };        //target username, type, content
        private async Task DoChat(UserWithToken user, string username, string msg)
        {
            var aargs = msg.Split('&');
            Dictionary <string, string> dArgs = new Dictionary <string, string>();

            foreach (var args in aargs)
            {
                var aarg = args.Split(new char[] { '=' }, 2);
                if (aarg.Length != 2)
                {
                    return;
                }
                if (dArgs.ContainsKey(aarg[0]))
                {
                    return;
                }
                dArgs.Add(aarg[0], aarg[1]);
            }
            foreach (var a in chatArgs)
            {
                if (!dArgs.ContainsKey(a))
                {
                    await DoSend(user, "cannot find argument " + a);

                    return;
                }
            }

            var c = dArgs["c"];

            c = c.Replace("[", "").Replace("]", "").Replace("\"", "").Replace("\'", "");
            if (string.IsNullOrEmpty(c))
            {
                await DoSend(user, "empty chat content");

                return;
            }

            if (username == dArgs["u"])
            {
                await DoSend(user, "cannot send to yourself");

                return;
            }
            var avatar = AAvatarManager.Instance.OnGetAvatar(username);
            var head   = 0;

            if (avatar != null)
            {
                head = avatar.AvatarHead;
            }
            var cm = AAvatar.OnAddChatHistory(username, dArgs["u"], dArgs["t"], c, head.ToString());

            await DoSend(user, cm.ToJson());

            var online = CONNECT_POOL.ContainsKey(dArgs["u"]);

            if (online)
            {
                await DoSend(CONNECT_POOL[dArgs["u"]], cm.ToJson());
            }
        }
Exemplo n.º 12
0
        public void avatarcreate(string username, string token, string avatarname, string sex)
        {
            avatarname = filtername(avatarname);
            var len = CommonUtil.GetStringLength(avatarname);

            if (len <= 2 || len > 12)
            {
                SendError(ErrorDefs.AvatarNameInvalidLength);
                return;
            }
            var isex = typeParser.intParse(sex);

            if (isex != 0 && isex != 1)
            {
                SendError(ErrorDefs.InvalidSex);
                return;
            }
            var check = CheckToken(username, token);

            if (!check)
            {
                SendError(ErrorDefs.InvalidToken);
                return;
            }
            {
                var a = AAvatarManager.Instance.OnGetAvatar(username);
                if (a != null)
                {
                    SendError(ErrorDefs.AlreadyHasAvatar);
                    return;
                }
            }
            var findRes = dbavatar.FindOneData(TableName, ADBAccessor.filter_eq(InfoNameDefs.AvatarName, avatarname));

            if (findRes != null && findRes.Contains(InfoNameDefs.AvatarName))
            {
                SendError(ErrorDefs.DuplicateAvatarName);
            }
            else
            {
                var updateRes = dbavatar.UpdateOneData(TableName, ADBAccessor.filter_eq(InfoNameDefs.Username, username)
                                                       , ADBAccessor.updates_build(
                                                           ADBAccessor.update(InfoNameDefs.AvatarName, avatarname)
                                                           )
                                                       , true);
                if (updateRes)
                {
                    var a = new AAvatar(username, avatarname, null);
                    AAvatarManager.Instance.OnAddAvatar(a);

                    a.OnSetParamValue(InfoNameDefs.AvatarName, avatarname);
                    a.OnSetParamValue(InfoNameDefs.AvatarSex, isex);
                    a.OnSetParamValue(InfoNameDefs.AvatarMoney, 1000);
                    a.OnSetParamValue(InfoNameDefs.AvatarGold, 1000);
                    SendError(InfoNameDefs.AvatarName, avatarname);
                }
                else
                {
                    SendDBError();
                }
            }
        }