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 }; }
/// <summary> /// </summary> /// <param name="chatEntry"> </param> private void PostLineEvent(ChatEntry chatEntry) { _sync.Post(RaiseLineEvent, chatEntry); }
/// <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; }
/// <summary> /// </summary> /// <param name="chatEntry"> </param> private void PostLineEvent(ChatEntry chatEntry) { _sync.Post(RaiseLineEvent, chatEntry); }
/// <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; }
/// <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}; }