/// <summary> /// Actualise le sprite des cases de la grille /// </summary> public void OnRefresh(int i, int j) { Sprite sprite = new Sprite(Properties.Resources.water); Boat boat = controller.grid.grid[i, j].boat; if (boat != null) { if (boat.cells.Count == 1) { sprite.AddSprite(Properties.Resources.mine); } else { sprite.RotateSprite(boat.orientation); Bitmap bitmap = (Bitmap)Properties.Resources.ResourceManager.GetObject("boat_" + boat.cells.Count); sprite.AddSprite( bitmap != null ? bitmap : new Bitmap(boat.cells.Count, 1) { Tag = new object() }, boat.orientation == Direction.Right || boat.orientation == Direction.Down ? boat.cells.IndexOf(controller.grid.grid[i, j]) : boat.cells.Count - boat.cells.IndexOf(controller.grid.grid[i, j]) - 1 ); sprite.RotateSprite(Direction.Right); } } else { if (controller.possibleCells.Contains(controller.grid.grid[i, j])) { sprite.AddSprite(Properties.Resources.light_green); } else if (controller.clickedCell == controller.grid.grid[i, j]) { sprite.AddSprite(Properties.Resources.yellow); } } grid[i, j].Background = sprite.ToBrush(); }
/// <summary> /// Actualise le sprite d'une case de la grille /// </summary> public void RefreshCell(int i, int j, int gridToRefresh) { if (gridToRefresh == 0) { Sprite sprite = new Sprite(Properties.Resources.water); //Toutes les cases ont de l'eau dessous switch (controller.players[1].grid.grid[i, j].state) { case State.noBoat: sprite.AddSprite(Properties.Resources.miss); break; case State.boat: sprite.AddSprite(Properties.Resources.touch); break; case State.fullBoat: case State.revealed: case State.noFind: case State.partialFind: Boat boat = controller.players[1].grid.grid[i, j].boat; sprite.RotateSprite(boat.orientation); Bitmap bitmap = (Bitmap)Properties.Resources.ResourceManager.GetObject("boat_" + boat.cells.Count); //Load la ressource en fonction du nombre de cases sprite.AddSprite( bitmap != null ? bitmap : new Bitmap(boat.cells.Count, 1) { Tag = new object() }, //Si bitmap = null, alors Renvoie un bitmap sensé mesurer la même taille que celui qui aurait dû être chargé boat.orientation == Direction.Right || boat.orientation == Direction.Down //Determine le sens du bateau ? boat.cells.IndexOf(controller.players[1].grid.grid[i, j]) : boat.cells.Count - boat.cells.IndexOf(controller.players[1].grid.grid[i, j]) - 1 ); sprite.RotateSprite(Direction.Right); if (controller.players[1].grid.grid[i, j].state == State.noFind) { sprite.AddSprite(Properties.Resources.hide); } else if (controller.players[1].grid.grid[i, j].state == State.partialFind) { sprite.AddSprite(Properties.Resources.touch); } break; } grid[i, j].Background = sprite.ToBrush(); } else if (gridToRefresh == 1) { Sprite sprite = new Sprite(Properties.Resources.water); if (controller.players[0].grid.grid[i, j].boat != null) { Boat boat = controller.players[0].grid.grid[i, j].boat; if (boat.cells.Count == 1) { sprite.AddSprite(Properties.Resources.mine); } else { sprite.RotateSprite(boat.orientation); Bitmap bitmap = (Bitmap)Properties.Resources.ResourceManager.GetObject("boat_" + boat.cells.Count); sprite.AddSprite( bitmap != null ? bitmap : new Bitmap(boat.cells.Count, 1) { Tag = new object() }, boat.orientation == Direction.Right || boat.orientation == Direction.Down ? boat.cells.IndexOf(controller.players[0].grid.grid[i, j]) : boat.cells.Count - boat.cells.IndexOf(controller.players[0].grid.grid[i, j]) - 1 ); sprite.RotateSprite(Direction.Right); } } switch (controller.players[0].grid.grid[i, j].state) { case State.noActivity: sprite.AddSprite(Properties.Resources.hide); break; case State.noBoat: sprite.AddSprite(Properties.Resources.miss); break; case State.boat: sprite.AddSprite(Properties.Resources.touch); break; } gridSecond[i, j].Background = sprite.ToBrush(); } }