private void OnChatMessage(int groupId, string message, EnumChatType chattype, string data) { if (_clientApi?.World?.Player == null) { return; } var pos = _clientApi.World.Player.WorldData.CurrentGameMode == EnumGameMode.Creative ? blocksSinceLastSuccessList.LastOrDefault()?.Position : blocksSinceLastSuccessList.ElementAtOrDefault(blocksSinceLastSuccessList.Count - 2 - 1)?.Position; if (pos == null || groupId != GlobalConstants.InfoLogChatGroup || !_triggerwords.Any(triggerWord => message.StartsWith(triggerWord))) { return; } message = _cleanupRegex.Replace(message, string.Empty); var posX = pos.X / _chunksize; var posZ = pos.Z / _chunksize; _messages.RemoveAll(m => m.X == posX && m.Z == posZ); _messages.Add(new ProspectInfo(posX, posZ, message)); _clientApi.SaveDataFile(Filename, _messages); _components.RemoveAll(component => { var castComponent = component as ProspectorOverlayMapComponent; return(castComponent?.ChunkX == posX && castComponent.ChunkZ == posZ); }); var newComponent = new ProspectorOverlayMapComponent(_clientApi, posX, posZ, message, _colorTexture); _components.Add(newComponent); blocksSinceLastSuccessList.Clear(); }
private void RebuildMap() { foreach (var component in _components) { component.Dispose(); } _components.Clear(); foreach (var message in _messages) { var component = new ProspectorOverlayMapComponent(_clientApi, message.X, message.Z, message.Message); _components.Add(component); } }
public void RebuildMap(bool rebuildTexture = false) { foreach (var component in _components) { component.Dispose(); } _components.Clear(); if (rebuildTexture) { _colorTexture?.Dispose(); _colorTexture = GenerateOverlayTexture(); } foreach (var message in _messages) { var component = new ProspectorOverlayMapComponent(_clientApi, message.X, message.Z, message.Message, _colorTexture); _components.Add(component); } }