static public BattleNetUser Parse(string content) { try { BattleNetUser rst = new BattleNetUser(); rst.Name = content.Split(new char[] { ',' })[0]; rst.Score = int.Parse(content.Split(new char[] { ',' })[1]); return(rst); } catch { return(null); } }
void ProcessMessage(string msg) { string[] paras = msg.Split(new string[] { MESSAGE_SPLIT_TAG }, StringSplitOptions.None); if (paras.Length == 0) { return; } string MessageHead = paras[0]; switch (MessageHead) { case "LOGIN": if (loginCallback != null) { _dispatcher.BeginInvoke(() => { loginCallback(bool.Parse(paras[1])); }); } break; case "GET_ONLINE_USERS": if (onlineUsersCallback != null) { List <BattleNetUser> rst = new List <BattleNetUser>(); for (int i = 1; i < paras.Length; ++i) { BattleNetUser user = BattleNetUser.Parse(paras[i]); if (user != null) { rst.Add(user); } } _dispatcher.BeginInvoke(() => { onlineUsersCallback(rst); }); } break; case "GET_USER": if (getUserCallback != null) { BattleNetUser u = BattleNetUser.Parse(paras[1]); _dispatcher.BeginInvoke(() => { getUserCallback(u); }); } break; case "GET_BATTLE_LOG": break; case "JOIN_CHANNEL": if (joinChannelCallback != null) { _dispatcher.BeginInvoke(() => { joinChannelCallback(bool.Parse(paras[1])); }); } break; case "CHAT": { ChatEventArgs ev = new ChatEventArgs(); ev.User = BattleNetUser.Parse(paras[1]); ev.Channel = paras[2]; ev.Message = paras[3]; _dispatcher.BeginInvoke(() => { this.OnNewChatNotify(this, ev); }); break; } case "GET_SAVES": { List <string> rst = new List <string>(); for (int i = 1; i < paras.Length; ++i) { rst.Add(paras[i]); } _dispatcher.BeginInvoke(() => { this.getSavesCallback(rst); }); break; } case "SAVE": { _dispatcher.BeginInvoke(() => { saveCallback(bool.Parse(paras[1])); }); break; } case "BATTLE_RESULT": { _dispatcher.BeginInvoke(() => { commitBattleResultCallback(bool.Parse(paras[1])); }); break; } default: break; } }