Example #1
0
        public App()
        {
            _flist = new FListClientV1();
            _fchat = new FChatConnection(_flist);

            UriParser.Register(new FListUriParser(), "flist", 1);
        }
Example #2
0
        internal Channel(FChatConnection Connection, string ID, string Title)
        {
            _Connection = Connection;
            _ID         = ID;
            _Title      = Title;

            _Banlist    = new List <Character>();
            _Characters = new List <Character>();
            _OPs        = new List <Character>();
            _Status     = ChannelStatus.Private;
        }
		public CharacterDialog(FChatConnection Client)
		{
			this.Client = Client;
            if (!Client.IsConnected)
                Client.Connect();

			InitializeComponent();

			_CharacterBox.ItemsSource = Client.FListClient.Ticket.Characters;
            _CharacterBox.SelectedIndex = 0;
		}
Example #4
0
        internal Character(FChatConnection Connection, libflist.Character Character) : base(Character.Client, Character.Name)
        {
            this.Connection = Connection;

            _Description.UnderlyingTimestamp = Character._Description.UnderlyingTimestamp;
            _Description.UnderlyingValue     = Character._Description.UnderlyingValue;
            _Images.UnderlyingTimestamp      = Character._Images.UnderlyingTimestamp;
            _Images.UnderlyingValue          = Character._Images.UnderlyingValue;
            _Kinks.UnderlyingTimestamp       = Character._Kinks.UnderlyingTimestamp;
            _Kinks.UnderlyingValue           = Character._Kinks.UnderlyingValue;
            _ProfileInfo.UnderlyingTimestamp = Character._ProfileInfo.UnderlyingTimestamp;
            _ProfileInfo.UnderlyingValue     = Character._ProfileInfo.UnderlyingValue;
        }
Example #5
0
        public void Dispose()
        {
            _ID        = null;
            _Title     = null;
            _OwnerName = null;
            _Banlist.Clear();
            _Banlist = null;
            _OPs.Clear();
            _OPs = null;
            _Characters.Clear();
            _Characters = null;
            _Connection = null;

            Joined     = false;
            IsDisposed = true;
        }
Example #6
0
		public MessageSerializer(FChatConnection chat)
		{
			Chat = chat;
		}
Example #7
0
		public void Dispose()
		{
			_ID = null;
			_Title = null;
			_OwnerName = null;
			_Banlist.Clear();
			_Banlist = null;
			_OPs.Clear();
			_OPs = null;
			_Characters.Clear();
			_Characters = null;
			_Connection = null;

			Joined = false;
			IsDisposed = true;
		}
Example #8
0
		internal Channel(FChatConnection Connection, string ID, string Title)
		{
			_Connection = Connection;
			_ID = ID;
			_Title = Title;

			_Banlist = new List<Character>();
			_Characters = new List<Character>();
			_OPs = new List<Character>();
			_Status = ChannelStatus.Private;
		}
Example #9
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.AutoPing = true;

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

			Redraw(true);
			InputLoop();

			if (_Chat != null)
				_Chat.Dispose();
			_Chat = null;
		}