diff --git a/Wanderer.csproj b/Wanderer.csproj index add06fec78bc4dec3d24e70b8410cdaaeb517a4e..1b05d80335239ddaf5ee2e4513036b4efa3828ac 100644 --- a/Wanderer.csproj +++ b/Wanderer.csproj @@ -47,6 +47,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="model\Improvement.cs" /> <Compile Include="model\Player.cs" /> <Compile Include="view\Controls\MapView.Designer.cs" /> <Compile Include="view\FormFin.cs"> diff --git a/model/Improvement.cs b/model/Improvement.cs new file mode 100644 index 0000000000000000000000000000000000000000..e98d7fa49044f408301335f5595a059f3b2ad0bb --- /dev/null +++ b/model/Improvement.cs @@ -0,0 +1,11 @@ +namespace Wanderer.model +{ + public enum Improvement + { + TrainStation, + Path, + Refuge, + Club, + Factory + } +} \ No newline at end of file diff --git a/model/Map.cs b/model/Map.cs index fd73419fc8b23b5b3de83488e72041d01b8c9332..b5ad3de9167f144fffd9c88754d3d688876d28f1 100644 --- a/model/Map.cs +++ b/model/Map.cs @@ -1,6 +1,4 @@ -using Wanderer.model; - -namespace Wanderer +namespace Wanderer.model { public class Map { @@ -9,6 +7,9 @@ namespace Wanderer public Map(int x, int y) { _tiles = new Tile[x, y]; + for (int i = 0; i < x; ++i) + for (int j = 0; j < y; ++j) + _tiles[i, j] = new Tile(); } public Tile[,] Tiles diff --git a/model/Tile.cs b/model/Tile.cs index e211908171dc69400045f4ec41854121536c8ed2..42273a90774cdf89a6e1f2cecd499a314ed8b1a7 100644 --- a/model/Tile.cs +++ b/model/Tile.cs @@ -2,7 +2,19 @@ { public class Tile { + private Improvement _improvement; public Terrain Terrain { get; set; } - public Player Owner { get; set; } + public Player Owner { get; set; } + public bool HasChanged { get; set; } + + public Improvement Improvement + { + get => _improvement; + set + { + _improvement = _improvement == 0 ? value : _improvement; + HasChanged = true; + } + } } } \ No newline at end of file diff --git a/view/Controls/MapView.cs b/view/Controls/MapView.cs index 38abee5bf3ea3b8575d872b36ac3a7db70468a17..f01af9b2335d3caa67958103c6ae3122b5c143d3 100644 --- a/view/Controls/MapView.cs +++ b/view/Controls/MapView.cs @@ -2,6 +2,7 @@ using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design; +using Wanderer.model; namespace Wanderer.view.Controls { diff --git a/view/Controls/TileView.cs b/view/Controls/TileView.cs index 7902f69269d4900d8a894f338556dada32b832f8..15ea695761b788d017be8718fbeb35e995cbeec6 100644 --- a/view/Controls/TileView.cs +++ b/view/Controls/TileView.cs @@ -7,7 +7,7 @@ namespace Wanderer.view.Controls { public class TileView : Button { - private Tile model; + public Tile model { get; } public TileView(Tile tile) { @@ -36,18 +36,5 @@ namespace Wanderer.view.Controls { MapView.SelectedTile = this; } - - private Image imageFromTerrain() - { - switch (model.Terrain) - { - case Terrain.Plains: - break; - case Terrain.Hills: - break; - } - - return null; - } } } \ No newline at end of file diff --git a/view/FormJeu.cs b/view/FormJeu.cs index 78fb30c118c7bd7e325cec418e075b51d73045b8..b36903985e4115151652c88692d6d0818f763f2a 100644 --- a/view/FormJeu.cs +++ b/view/FormJeu.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Wanderer.model; using Wanderer.view.Controls; namespace Wanderer.view @@ -61,6 +62,11 @@ namespace Wanderer.view lblArgent.Text = "Argent :" + nombreMarks; lblMarcheur.Text = "Marcheurs : " + nombreRandonneurs; lblTour.Text = "Nombre d'action : " + nombreTour++; + if (MapView.SelectedTile != null && MapView.SelectedTile.model.HasChanged) + { + MapView.SelectedTile.Image = image(); + MapView.SelectedTile.model.HasChanged = false; + } } @@ -77,20 +83,18 @@ namespace Wanderer.view private void btnUsine_Click(object sender, EventArgs e) { - if(nombreMarks >= 60) - { - MapView.SelectedTile.Image = btnUsine.Image; - nombreUsine++; - nombreMarks -= 40; - updateLabels(); - } + if (nombreMarks < 60) return; + MapView.SelectedTile.model.Improvement = Improvement.Factory; + nombreUsine++; + nombreMarks -= 40; + updateLabels(); } private void btnTrain_Click(object sender, EventArgs e) { if(nombreMarks >= 10 && gareCreated) { - MapView.SelectedTile.Image = btnTrain.Image; + MapView.SelectedTile.model.Improvement = Improvement.TrainStation; gareCreated = false; nombreMarks -= 10; updateLabels(); @@ -105,7 +109,7 @@ namespace Wanderer.view } if (nombreMarks >= 30) { - MapView.SelectedTile.Image = btnRefuge.Image; + MapView.SelectedTile.model.Improvement = Improvement.Refuge; nombreRefuge++; nombreMarks -= 30; updateLabels(); @@ -121,7 +125,7 @@ namespace Wanderer.view } if (nombreMarks >= 10) { - MapView.SelectedTile.Image = btnChemin.Image; + MapView.SelectedTile.model.Improvement = Improvement.Path; nombreChemin++; nombreMarks -= 10; updateLabels(); @@ -132,7 +136,7 @@ namespace Wanderer.view { if(nombreMarks >= 15) { - MapView.SelectedTile.Image = btnClub.Image; + MapView.SelectedTile.model.Improvement = Improvement.Club; nombreClub++; nombreMarks -= 10; updateLabels(); @@ -165,6 +169,24 @@ namespace Wanderer.view Application.Exit(); } + public Image image() + { + switch (MapView.SelectedTile.model.Improvement) + { + case Improvement.Club: + return btnClub.Image; + case Improvement.Factory: + return btnUsine.Image; + case Improvement.Path: + return btnChemin.Image; + case Improvement.Refuge: + return btnRefuge.Image; + case Improvement.TrainStation: + return btnTrain.Image; + } + + return null; + } } }