private async Task <bool> UpdateMazeState(MazeState state = null) { var waitBmp = MazePainter.MazePainter.GetWaitBmp(); pictureBox1.Image = waitBmp; if (state == null) { try { state = await _client.GetMazeCurrentState(_mazeId); } catch (PonyClientException ex) { DoLog(ex.Message); return(false); } catch (Exception ex) { DoLog("CRITICAL: " + ex.Message); return(false); } } if (!string.IsNullOrEmpty(state.HiddenImageUrl)) { try { var imgData = await _client.LoadImage(state.HiddenImageUrl); var ms = new MemoryStream(imgData); pictureBox1.Image = Image.FromStream(ms); } catch (Exception ex) { DoLog(ex.Message); } } else { _solver = MazeSolver.Load(state); // paint a maze var bmp = MazePainter.MazePainter.RepresentMaze(_solver.Field, state.MazeWidth, state.MazeHeight, _solver.PonyLocation.x, _solver.PonyLocation.y, _solver.ExitLocation.x, _solver.ExitLocation.y, _solver.DomokunLocation.x, _solver.DomokunLocation.y); pictureBox1.Image = bmp; } if (state.State == "over" || state.State == "won") { return(false); } return(true); }
private async void btnLoadMaze_Click(object sender, EventArgs e) { txtSequence.Text = ""; if (!Guid.TryParse(edtMazeId.Text, out _mazeId)) { edtMazeId.Text = ""; DoLog("Error: Maze ID guid is not valid."); } // load try { var state = await _client.GetMazeCurrentState(_mazeId); _solver = MazeSolver.Load(state); DoLog($"Maze with ID = {_mazeId} loaded."); DoLog("Maze State: " + state.State); DoLog("Maze Result State: " + state.MazeStateResult); if (!string.IsNullOrEmpty(state.HiddenImageUrl)) { DoLog("Hidden Image Url: " + state.HiddenImageUrl); } await UpdateMazeState(state); } catch (PonyClientException ex) { DoLog(ex.Message); return; } catch (Exception ex) { DoLog("CRITICAL: " + ex.Message); return; } }