private void _chatworker_Delegate(ChatEntry chatentry)
        {
            if (_chatlog.Count > 50)
                _chatlog.RemoveAt(0);

            _chatlog.Add(chatentry);
        }
 /// <summary>
 /// </summary>
 public static void OnNewLine(ChatEntry chatEntry)
 {
     var entry = new object[] { chatEntry.Bytes, chatEntry.Code, chatEntry.Combined, chatEntry.JP, chatEntry.Line, chatEntry.Raw, chatEntry.TimeStamp };
 }
Example #3
0
 /// <summary>
 /// </summary>
 /// <param name="chatEntry"> </param>
 private void PostLineEvent(ChatEntry chatEntry)
 {
     _sync.Post(RaiseLineEvent, chatEntry);
 }
Example #4
0
        /// <summary>
        /// </summary>
        /// <param name="sender"> </param>
        /// <param name="e"> </param>
        private void ScannerDoWork(object sender, DoWorkEventArgs e)
        {

 
            _isScanning = true;

            uint address = MemoryLocations.Database["chatlog"];

            var chatPointers = MemoryHandler.Instance.GetStructure<ChatPointers>(address);
            if (_lastCount == 0)
            {
                _lastCount = (int)chatPointers.LineCount1;
            }
            if (_lastCount == chatPointers.LineCount1)
            {
                return;
            }
            _spots.Clear();
            var index = (int)(chatPointers.OffsetArrayPos - chatPointers.OffsetArrayStart) / 4;
            var lengths = new List<int>();
            try
            {
                for (var i = chatPointers.LineCount1 - _lastCount; i > 0; i--)
                {
                    var getline = ((index - i) < 0) ? (index - i) + 256 : index - i;
                    int lineLen;
                    if (getline == 0)
                    {
                        lineLen = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart);
                    }
                    else
                    {
                        var previous = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)((getline - 1) * 4));
                        var current = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)(getline * 4));
                        lineLen = current - previous;
                    }
                    lengths.Add(lineLen);

                    _spots.Add(chatPointers.LogStart + (uint)MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)((getline - 1) * 4)));
                }
                var limit = _spots.Count;
                for (var i = 0; i < limit; i++)
                {
                    _spots[i] = (_spots[i] > _lastChatNum) ? _spots[i] : chatPointers.LogStart;

                    var text = MemoryHandler.Instance.GetByteArray(_spots[i], lengths[i]);
                    var chatEntry = new ChatEntry(text.ToArray());
                    if (Regex.IsMatch(chatEntry.Combined, @"[\w\d]{4}::?.+"))
                    {
                        PostLineEvent(chatEntry);
                    }
                    else
                    {
                        Debug.Print("DebugLineEvent: {0}", text.ToArray());
                    }
                    _lastChatNum = _spots[i];
                }
            }
            catch (Exception ex)
            {
                //System.Diagnostics.Debug.Print(LogManager.GetCurrentClassLogger(), "", ex);
            }
            _lastCount = (int)chatPointers.LineCount1;
        }
Example #5
0
 /// <summary>
 /// </summary>
 /// <param name="chatEntry"> </param>
 private void PostLineEvent(ChatEntry chatEntry)
 {
     _sync.Post(RaiseLineEvent, chatEntry);
 }
Example #6
0
        /// <summary>
        /// </summary>
        /// <param name="sender"> </param>
        /// <param name="e"> </param>
        private void ScannerDoWork(object sender, DoWorkEventArgs e)
        {
            _isScanning = true;

            long address = MemoryLocations.Database["chatlog"];

            var chatPointers = MemoryHandler.Instance.GetStructure <ChatPointers>(address);

            if (_lastCount == 0)
            {
                _lastCount = (int)chatPointers.LineCount1;
            }
            if (_lastCount == chatPointers.LineCount1)
            {
                return;
            }
            _spots.Clear();
            var index   = (int)(chatPointers.OffsetArrayPos - chatPointers.OffsetArrayStart) / 4;
            var lengths = new List <int>();

            try
            {
                for (var i = chatPointers.LineCount1 - _lastCount; i > 0; i--)
                {
                    var getline = ((index - i) < 0) ? (index - i) + 256 : index - i;
                    int lineLen;
                    if (getline == 0)
                    {
                        lineLen = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart);
                    }
                    else
                    {
                        var previous = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)((getline - 1) * 4));
                        var current  = MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)(getline * 4));
                        lineLen = current - previous;
                    }
                    lengths.Add(lineLen);

                    _spots.Add(chatPointers.LogStart + (uint)MemoryHandler.Instance.GetInt32(chatPointers.OffsetArrayStart + (uint)((getline - 1) * 4)));
                }
                var limit = _spots.Count;
                for (var i = 0; i < limit; i++)
                {
                    _spots[i] = (_spots[i] > _lastChatNum) ? _spots[i] : chatPointers.LogStart;

                    var text      = MemoryHandler.Instance.GetByteArray(_spots[i], lengths[i]);
                    var chatEntry = new ChatEntry(text.ToArray());
                    if (Regex.IsMatch(chatEntry.Combined, @"[\w\d]{4}::?.+"))
                    {
                        PostLineEvent(chatEntry);
                    }
                    else
                    {
                        Debug.Print("DebugLineEvent: {0}", text.ToArray());
                    }
                    _lastChatNum = _spots[i];
                }
            }
            catch (Exception ex)
            {
                //System.Diagnostics.Debug.Print(LogManager.GetCurrentClassLogger(), "", ex);
            }
            _lastCount = (int)chatPointers.LineCount1;
        }
Example #7
0
 /// <summary>
 /// </summary>
 public static void OnNewLine(ChatEntry chatEntry)
 {
     var entry = new object[] {chatEntry.Bytes, chatEntry.Code, chatEntry.Combined, chatEntry.JP, chatEntry.Line, chatEntry.Raw, chatEntry.TimeStamp};
 }