public void OnAssetReady(AssetsReadyPacket assetReady) { if (State != AssetLoadingState.BEGINING) { State = AssetLoadingState.BEGINING; } else { State = AssetLoadingState.RECIEVING; NumberOfAssetsToRecieve = _assetsRequested.Count; if (NumberOfAssetsToRecieve > 0) { foreach (var packet in _assetsRequested) { packet.HaveIt = false; // asking for the asset UnityClient.TcpClient.Send(packet); Debug.Log("Asking for asset " + packet.ResquestedImageName); } LoadingBehaviour.Loading.StartLoading("Downloading Assets"); } else { DoneDownloading(); } } }
public void DoneDownloading() { LoadingBehaviour.Loading.StopLoading(); _assetsRequested.Clear(); NumberOfAssetsToRecieve = 0; AssetsRecieved = 0; State = AssetLoadingState.UPDATED; Debug.Log("Assets of user " + UnityClient.Player.UID + " ready"); UnityClient.TcpClient.Send(new AssetsReadyPacket() { UserId = UnityClient.Player.UID }); }
public void OnAsset(AssetPacket packet) { Debug.Log("ASSET PACKET"); // If im recieving from the server that i need an asset if (packet.Asset == null) { // if i dont have it // if (!File.Exists(Path.Combine(Application.persistentDataPath, packet.ResquestedImageName))) // { _assetRequests.Add(packet); // } // else // { // var spriteMap = AssetHandler.LoadNewSprite(Path.Combine(Application.persistentDataPath, packet.ResquestedImageName)); // AssetHandler.LoadedAssets.Add(packet.ResquestedImageName, spriteMap); // UnityClient.TcpClient.Send(new AssetsReadyPacket() // { // UserId = UnityClient.UserId // }); // } } else { Debug.Log("Saving asset " + packet.ResquestedImageName); File.WriteAllBytes(Path.Combine(Application.persistentDataPath, packet.ResquestedImageName), packet.Asset); var spriteMap = AssetHandler.LoadNewSprite(Path.Combine(Application.persistentDataPath, packet.ResquestedImageName)); AssetHandler.LoadedAssets.Add(packet.ResquestedImageName, spriteMap); AssetsRecieved++; if (AssetsRecieved == NumberOfAssetsToRecieve && AssetsRecieved > 0) { LoadingBehaviour.Loading.StopLoading(); _assetRequests.Clear(); NumberOfAssetsToRecieve = 0; AssetsRecieved = 0; State = AssetLoadingState.UPDATED; Debug.Log("Assets of user " + UnityClient.Player.UserId + " ready"); UnityClient.TcpClient.Send(new AssetsReadyPacket() { UserId = UnityClient.Player.UserId }); } } }