public static void OnReceiveMapDataInitial(ZRpc client, ZPackage mapData) { if (!Store.IsSharingMap()) { return; } mapData.SetPos(0); var chunk = mapData.ReadInt(); //Utility.Log("Client received initial map data by server chunk " + (chunk+1) + "/" + CHUNKS); var explored = ExplorationDatabase.UnpackBoolArray(mapData, ExplorationDatabase.MapSizeSquared / CHUNKS); var startIndex = chunk * (ExplorationDatabase.MapSizeSquared / CHUNKS); for (var index = 0; index < explored.Length; index++) { if (explored[index]) { _Minimap.Explore(_Minimap._instance, (startIndex + index) % ExplorationDatabase.MapSize, (startIndex + index) / ExplorationDatabase.MapSize); } } var fogTexture = Traverse.Create((_Minimap._instance)).Field("m_fogTexture").GetValue() as Texture2D; fogTexture.Apply(); _ZNet._instance.StartCoroutine(SendChunkToServer(client, chunk)); // var explored = ExplorationDatabase.UnpackBoolArray(mapData); // // for (var index = 0; index < explored.Length; index++) // { // if (explored[index]) // { // _Minimap.Explore(_Minimap._instance, index % ExplorationDatabase.MapSize, index / ExplorationDatabase.MapSize); // } // } // // var fogTexture = Traverse.Create((_Minimap._instance)).Field("m_fogTexture").GetValue() as Texture2D; // fogTexture.Apply(); // // explored = Traverse.Create(_Minimap._instance).Field("m_explored").GetValue() as bool[]; // var z = ExplorationDatabase.PackBoolArray(explored); // if (_ZNet.IsServer(_ZNet._instance)) // { // OnClientInitialData(null, z); // } // else // { // var znet = Traverse.Create(typeof(ZNet)).Field("m_instance").GetValue() as ZNet; // ZRpc server = _ZNet.GetServerRPC(znet); // server.Invoke("OnClientInitialData", (object) z); // } }
public static void OnClientInitialData(ZRpc client, ZPackage mapData) { if (!Store.IsSharingMap()) { return; } mapData.SetPos(0); var chunk = mapData.ReadInt(); var startIndex = chunk * (ExplorationDatabase.MapSizeSquared / CHUNKS); var size = ExplorationDatabase.MapSizeSquared / CHUNKS; //Utility.Log("Server received initial map data by client chunk " + (chunk+1) + "/" + CHUNKS); ExplorationDatabase.MergeExplorationArray(ExplorationDatabase.UnpackBoolArray(mapData, size), startIndex, size); SendChunkToClient(client, chunk + 1); }