-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFarmDemolishController.java
77 lines (63 loc) · 3.19 KB
/
FarmDemolishController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package controller.farm;
import controller.GameController;
import controller.farm.element.building.*;
import controller.farm.element.building.edifice.HouseController;
import controller.farm.element.building.edifice.MarketController;
import controller.farm.element.building.edifice.WarehouseController;
import controller.farm.element.entity.keyboard_reactor.DemolishMarkerController;
import gui.GUI;
import model.Position;
import model.farm.Farm;
import model.farm.entity.Entity;
import model.farm.building.BuildingSet;
import model.farm.building.crop_field.CropField;
import model.farm.building.stockyard.Stockyard;
import viewer.GameViewer;
import viewer.farm.FarmDemolishViewer;
import java.util.ArrayList;
import java.util.List;
public class FarmDemolishController extends FarmController {
private final Entity demolishMarker;
public FarmDemolishController(FarmController farmController) {
super(farmController);
this.demolishMarker = new Entity(new Position(1, 1));
}
public FarmDemolishController(Farm farm, GameController controller, long realSecToGameMinutesRate, Entity marker) {
super(farm, controller, realSecToGameMinutesRate);
this.demolishMarker = marker;
}
@Override
public void reactKeyboard(GUI.KEYBOARD_ACTION action) {
if (action == GUI.KEYBOARD_ACTION.BACK) this.returnToFarmerController();
if (action == GUI.KEYBOARD_ACTION.INTERACT) this.reactDemolish();
DemolishMarkerController demolishMarkerController = new DemolishMarkerController(this.farm, this.demolishMarker);
demolishMarkerController.reactKeyboard(action);
}
private void returnToFarmerController() {
this.controller.setGameControllerState(new FarmWithFarmerController(this));
}
private void reactDemolish() {
Position demolishPosition = this.demolishMarker.getPosition();
BuildingSet farmBuildings = this.farm.getBuildings();
CropFieldController cropFieldController = new CropFieldController(this.controller, this.farm);
List<CropField> cropFields = new ArrayList<>(farmBuildings.getCropFields());
for (CropField cropField: cropFields) {
cropFieldController.reactDemolish(cropField, demolishPosition);
}
StockyardController stockyardController = new StockyardController(this.controller, this.farm);
List<Stockyard> stockyards = new ArrayList<>(farmBuildings.getStockyards());
for (Stockyard stockyard: stockyards) {
stockyardController.reactDemolish(stockyard, demolishPosition);
}
HouseController houseController = new HouseController(this.controller, this);
houseController.reactDemolish(farmBuildings.getHouse(), demolishPosition);
MarketController marketController = new MarketController(this.controller, this);
marketController.reactDemolish(farmBuildings.getMarket(), demolishPosition);
WarehouseController warehouseController = new WarehouseController(this.controller, this.farm);
warehouseController.reactDemolish(farmBuildings.getWarehouse(), demolishPosition);
}
@Override
public GameViewer getViewer() {
return new FarmDemolishViewer(this.farm, this.demolishMarker);
}
}