private static void EnqueueEmptyBlock(Minimap.MinimapRequest minimapRequest) { string mapName = minimapRequest.mapName; MinimapData.MinimapBlockData blockData = new MinimapData.MinimapBlockData(); blockData.mapName = mapName; blockData.coords = minimapRequest.coords; blockData.minimapByteData = null; MinimapData.MinimapDataQueue.Enqueue(blockData); }
// Assemble the Minimap GameObjects // private void AssembleMinimap() { MinimapData.MinimapBlockData blockData = MinimapData.MinimapDataQueue.Dequeue(); GameObject instance = Instantiate(MinimapPrefab, Vector3.zero, Quaternion.identity); instance.transform.SetParent(ScrollParent.transform, false); instance.GetComponent <RectTransform>().anchoredPosition = new Vector2((blockData.coords.x - MinimapData.Min.x) * 100, -(blockData.coords.y - MinimapData.Min.y) * 100); instance.name = "map" + blockData.coords.x + "_" + blockData.coords.y + ".blp"; instance.tag = "MinimapBlock"; instance.GetComponent <MinimapBlock>().minimapCoords = blockData.coords; if (MinimapData.mapAvailability[(int)blockData.coords.x, (int)blockData.coords.y].Minimap) { Texture2D tex = new Texture2D(blockData.textureInfo.width, blockData.textureInfo.height, blockData.textureInfo.textureFormat, false); tex.LoadRawTextureData(blockData.minimapByteData); instance.GetComponent <RawImage>().texture = tex; instance.GetComponent <RawImage>().uvRect = new Rect(0, 0, 1, -1); tex.Apply(); } }
// Request a minimap image from the parser // private static void RequestBlock(Minimap.MinimapRequest minimapRequest) { string mapName = minimapRequest.mapName; string fileName = "map" + minimapRequest.coords.x + "_" + minimapRequest.coords.y + ".blp"; string path = @"world\minimaps\" + mapName + @"\" + fileName; string extractedPath = Casc.GetFile(path); using (Stream stream = File.Open(extractedPath, FileMode.Open)) { BLP blp = new BLP(); byte[] data = blp.GetUncompressed(stream, true); BLPinfo info = blp.Info(); MinimapData.MinimapBlockData blockData = new MinimapData.MinimapBlockData(); blockData.mapName = mapName; blockData.coords = minimapRequest.coords; blockData.textureInfo = info; blockData.minimapByteData = data; MinimapData.MinimapDataQueue.Enqueue(blockData); } }