public App() { _flist = new FListClientV1(); _fchat = new FChatConnection(_flist); UriParser.Register(new FListUriParser(), "flist", 1); }
public CharacterDialog(FChatConnection Client) { this.Client = Client; if (!Client.IsConnected) { Client.Connect(); } InitializeComponent(); _CharacterBox.ItemsSource = Client.FListClient.Ticket.Characters; _CharacterBox.SelectedIndex = 0; }
public static void Run() { Console.Clear(); Console.Title = string.Format("FChat Messenger v{0}", Assembly.GetExecutingAssembly().GetName().Version); Debug.Listeners.Clear(); Debug.Listeners.Add((_ConsoleBuffer.ChatBuf as ConsoleChatBuffer).TraceListener); _ChannelBuffers.Add(_ConsoleBuffer); _InputBox.OnTextEntered += (s, e) => { TextEntry(e); }; _Chat.AutoLogin = false; _Chat.AutoPing = true; _Chat.AutoReconnect = false; //_Chat.OnRawMessage += (_, e) => // _ConsoleBuffer.ChatBuf.PushMessage(null, $"<< {e.Command.Serialize()}"); //_Chat.OnSendMessage += (_, e) => // _ConsoleBuffer.ChatBuf.PushMessage(null, $">> {e.Command.Serialize()}"); _Chat.OnSYSMessage += (_, e) => _ConsoleBuffer.ChatBuf.PushMessage(null, (e.Command as Server_SYS_ChatSYSMessage).Message); _Chat.OnErrorMessage += (_, e) => { if (CurrentChannelBuffer != _ConsoleBuffer) { _ConsoleBuffer.ChatBuf.PushMessage(null, (e.Command as Server_ERR_ChatError).Error); } CurrentChannelBuffer.ChatBuf.PushMessage(null, (e.Command as Server_ERR_ChatError).Error, MessageType.Preview, MessageSource.Remote); }; _Chat.OnError += (_, e) => _ConsoleBuffer.ChatBuf.PushMessage(null, $"{e.Message}:\n${e.InnerException}"); _Chat.OnChannelJoin += (_, e) => { ChannelBuffer chatBuf = _ChannelBuffers.FirstOrDefault(c => c.Channel == e.Channel); if (chatBuf == null) { chatBuf = new ChannelBuffer { ChatBuf = new ChannelChatBuffer(e.Channel), Title = e.Channel.Title }; _ChannelBuffers.Add(chatBuf); } else { chatBuf.Title = e.Channel.Title; } CurrentBuffer = _ChannelBuffers.IndexOf(chatBuf); }; _Chat.OnChannelChatMessage += (_, e) => WriteMessage(e.Message, null, e.Channel, e.Character, source: MessageSource.Remote); _Chat.OnChannelLFRPMessage += (_, e) => WriteMessage(e.Message, null, e.Channel, e.Character, MessageType.LFRP, MessageSource.Remote); _Chat.OnChannelRollMessage += (_, e) => WriteMessage(e.Message, null, e.Channel, e.Character, MessageType.Roll, MessageSource.Remote); _Chat.OnCharacterChatMessage += (_, e) => WriteMessage(e.Message, null, null, e.Character, source: MessageSource.Remote); _Chat.OnCharacterStatusChange += (_, e) => { if (e.Character == Connection.LocalCharacter) { WriteLog($"You are now {e.Character.Status}"); return; } var buf = _ChannelBuffers.FirstOrDefault(c => c.Character == e.Character); string msg = $"{e.Character.Name} is now {e.Character.Status}"; if (!string.IsNullOrEmpty(e.Character.StatusMessage)) { msg += ", " + e.Character.StatusMessage; } if (buf != null) { WriteMessage(msg, buf, type: MessageType.Preview, source: MessageSource.Remote); } if (e.Character.IsFriend || e.Character.IsBookmark) { WriteMessage(msg, _ConsoleBuffer, type: MessageType.Preview, source: MessageSource.Remote); } }; _Chat.OnCharacterTypingChange += (_, e) => { var buf = _ChannelBuffers.FirstOrDefault(c => c.Character == e.Character); if (buf == null) { return; } buf.SystemActivity |= true; // TODO: Typing notification }; _Chat.OnChannelLeave += (_, e) => { int i = 0; foreach (var c in _ChannelBuffers) { if (c.Channel == e.Channel) { if (_CurBuffer == i) { _CurBuffer--; } _ChannelBuffers.Remove(c); break; } ++i; } }; _Chat.OnConnected += (_, __) => { WriteLog("Connected to server"); if (AutoLogin && !string.IsNullOrEmpty(AutoLoginInfo.User)) { _Chat.AquireTicket(AutoLoginInfo.User, AutoLoginInfo.Pass); _Chat.Login(AutoLoginInfo.Char); } }; _Chat.OnDisconnected += (_, __) => { WriteLog("Lost connection to server"); if (AutoReconnect) { if (_loginCount > 10) { WriteLog("Failed to auto-login 10 times in a row, aborting."); } else { _loginCount++; Task.Delay(_loginCount * 5000).ContinueWith((___) => _Chat.Connect()); } } }; _Chat.OnIdentified += (_, __) => { _loginCount = 0; WriteLog($"Logged in to server as {_Chat.LocalCharacter.Name}"); foreach (var buf in _ChannelBuffers) { if (buf == _ConsoleBuffer || buf.Character != null) { continue; } JoinChannel(buf.Channel.ID); } }; _Chat.OnOfficialListUpdate += (_, __) => { WriteLog($"Retrieved list of {_Chat.OfficialChannels.Count} official channels."); }; _Chat.OnPrivateListUpdate += (_, __) => { WriteLog($"Retrieved list of {_Chat.PrivateChannels.Count} private channels."); }; ConsoleHelper.OnDraw += (s, e) => Redraw(); Redraw(true); InputLoop(); if (_Chat != null) { _Chat.Dispose(); } _Chat = null; }
public MessageSerializer(FChatConnection chat) { Chat = chat; }