public override void Update(Game0 game) { base.Update(game); if (LoadingThread == null) { Progress = 0; LoadingThread = new Thread(() => { LoadLevel(LevelName, game); }); LoadingThread.Start(); } else if (LoadingThread.IsAlive) { Progress = (Progress + 1) % 100; } else { LoadingThread.Join(); LoadingThread = null; // textures needs to be created on main thread SpriteCache.CreateTextures(); // loading completed game.ChangeState(new Gameplay()); Client.Instance.Send(new JoinGame { Login = game.Player.Name }); } }