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); }
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); } }
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); }
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); }
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(); } }
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(); } }
public AComponentParam(AAvatar owner) : base(owner) { }
protected abstract void DoEnter(AAvatar avatar);
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()); } }
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(); } } }