Skip to content

Commit 27dc8ff

Browse files
committed
Merge remote-tracking branch 'origin/serverClient' into serverClient
# Conflicts: # Client/src/main/java/Client/controllers/ClientSocketController.java # Client/src/main/java/Client/enums/QueryRequests.java # Client/src/main/java/Client/enums/QueryResponses.java # Server/src/main/java/Server/enums/QueryRequests.java # Server/src/main/java/Server/enums/QueryResponses.java # Server/src/main/java/Server/models/network/ServerSocketHandler.java # Server/src/main/resources/usersData.json
2 parents 13a3299 + 73e8544 commit 27dc8ff

File tree

16 files changed

+274
-21
lines changed

16 files changed

+274
-21
lines changed

Client/src/main/java/Client/controllers/ClientSocketController.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import Client.application.App;
44
import Client.enums.QueryRequests;
5+
import Client.models.City;
56
import Client.models.User;
67
import Client.models.network.Request;
78
import Client.models.network.Response;
89
import Client.models.tiles.Tile;
10+
import Client.models.units.CombatUnit;
911
import Client.views.ChatRoomPageController;
12+
import Client.views.GamePageController;
1013
import Client.views.MainMenuController;
1114
import Client.views.StartGameMenuController;
1215
import com.google.gson.Gson;
@@ -93,6 +96,8 @@ public static void handleServerUpdate(Response response) {
9396
MainMenuController.loggedInUser = new Gson().fromJson(response.getParams().get("user"), User.class);
9497
StartGameMenuController.updateInvites = true;
9598
}
99+
case CHOOSE_CITY_OPTIONS -> GamePageController.setCityOptions(new Gson().fromJson(response.getParams().get("city"), City.class), new Gson().fromJson(response.getParams().get("combatUnit"), CombatUnit.class));
100+
case CHOOSE_WAR_OPTIONS -> GamePageController.setDeclareWarOptions(new Gson().fromJson(response.getParams().get("enemyName"), String.class));
96101
}
97102
}
98103
}

Client/src/main/java/Client/enums/QueryRequests.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,17 @@ public enum QueryRequests {
117117
ADD_MESSAGE,
118118
GET_USER_AVATAR,
119119
ADD_CHAT,
120+
ADD_LISTENER,
121+
//game page
120122
DECLARE_WAR,
121123
SEND_INVITATION,
122124
ACCEPT_INVITATION,
123125
DECLINE_INVITATION,
124-
ADD_LISTENER,
125-
LEAVE_LOBBY
126+
LEAVE_LOBBY,
127+
//trade panel
128+
GET_ALL_CIVILIZATIONS_NAMES,
129+
ADD_TRADE,
130+
GET_CIVILIZATION_TRADES,
131+
ACCEPT_TRADE,
126132

127133
}

Client/src/main/java/Client/enums/QueryResponses.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ public enum QueryResponses {
2222
UPDATE_ALL_HEXES,
2323
CHANGE_SCENE,
2424
UPDATE_CHAT,
25-
UPDATE_INVITATIONS
25+
UPDATE_INVITATIONS,
26+
//
27+
YOU_NOT_ENOUGH_GOLD, YOU_LACK_STRATEGIC_RESOURCE, YOU_LACK_LUXURY_RESOURCE, OTHER_CIVILIZATION_NOT_ENOUGH_GOLD, OTHER_CIVILIZATION_LACK_STRATEGIC_RESOURCE, OTHER_CIVILIZATION_LACK_LUXURY_RESOURCE,
28+
CHOOSE_CITY_OPTIONS,
29+
CHOOSE_WAR_OPTIONS,
2630

2731
}

Client/src/main/java/Client/enums/resources/LuxuryResourceTypes.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import Client.enums.Improvements;
44

55

6+
import java.util.ArrayList;
67
import java.util.HashMap;
78

89
public enum LuxuryResourceTypes implements ResourceTypes {
@@ -64,4 +65,12 @@ public static HashMap<String, Integer> getAllResources() {
6465
return allResources;
6566
}
6667

68+
public static ArrayList<String> getAllResourcesNames() {
69+
ArrayList<String> names = new ArrayList<>();
70+
for (LuxuryResourceTypes luxuryResource : LuxuryResourceTypes.values()) {
71+
names.add(luxuryResource.name);
72+
}
73+
return names;
74+
}
75+
6776
}

Client/src/main/java/Client/enums/resources/StrategicResourceTypes.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import Client.enums.Improvements;
44
import Client.enums.Technologies;
55

6+
import java.util.ArrayList;
67
import java.util.HashMap;
78

89
public enum StrategicResourceTypes implements ResourceTypes {
@@ -63,4 +64,12 @@ public static HashMap<String, Integer> getAllResources() {
6364
return allResources;
6465
}
6566

67+
public static ArrayList<String> getAllResourcesNames() {
68+
ArrayList<String> names = new ArrayList<>();
69+
for (StrategicResourceTypes strategicResource : StrategicResourceTypes.values()) {
70+
names.add(strategicResource.name);
71+
}
72+
return names;
73+
}
74+
6675
}

Client/src/main/java/Client/views/GamePageController.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,34 @@
3535

3636
import java.util.*;
3737

38+
import Client.application.App;
39+
import Client.controllers.ClientSocketController;
40+
import Client.enums.QueryRequests;
41+
import Client.enums.Technologies;
42+
import Client.models.City;
43+
import Client.models.tiles.Hex;
44+
import Client.models.units.CombatUnit;
45+
import Client.models.units.NonCombatUnit;
46+
import Client.models.units.Unit;
47+
import javafx.animation.KeyFrame;
48+
import javafx.animation.Timeline;
49+
import javafx.fxml.FXML;
50+
import javafx.scene.control.ChoiceBox;
51+
import javafx.scene.control.ScrollPane;
52+
import javafx.scene.control.TextArea;
53+
import javafx.scene.image.Image;
54+
import javafx.scene.input.KeyEvent;
55+
import javafx.scene.input.MouseEvent;
56+
import javafx.scene.layout.AnchorPane;
57+
import javafx.scene.paint.Color;
58+
import javafx.scene.paint.ImagePattern;
59+
import javafx.scene.shape.Circle;
60+
import javafx.scene.text.Text;
61+
import javafx.util.Duration;
62+
63+
import java.util.HashMap;
64+
import java.util.Objects;
65+
3866
public class GamePageController {
3967
public static boolean stopTimeline;
4068
public static String infoPanelName;
@@ -121,7 +149,7 @@ private void initNavBar() {
121149
scienceText.setText(Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.CIV_SCIENCE, new HashMap<>())).getParams().get("science"));
122150
scienceText.setFill(Color.rgb(7, 146, 169));
123151
infoPanelsBox.setValue("InfoPanels");
124-
infoPanelsBox.getItems().addAll("UnitPanel", "CityPanel", "DemographicPanel", "NotificationsPanel", "MilitaryPanel", "EconomicStatusPanel");
152+
infoPanelsBox.getItems().addAll("UnitPanel", "CityPanel", "DemographicPanel", "NotificationsPanel", "MilitaryPanel", "EconomicStatusPanel", "DiplomacyPanel");
125153
settingsCircle.setFill(new ImagePattern(new Image(Objects.requireNonNull(App.class.getResource("/images/settings.png")).toString())));
126154
cheatCodeArea.setVisible(false);
127155
cheatCodeText.setVisible(false);
@@ -461,11 +489,19 @@ public static void setDeclareWarOptions(String civilizationName) {
461489
}
462490

463491
public void conquerButtonClicked(MouseEvent mouseEvent) {
492+
ClientSocketController.sendRequestAndGetResponse(QueryRequests.CONQUER_CITY, new HashMap<>(){{
493+
put("city", new Gson().toJson(city));
494+
put("combatUnit", new Gson().toJson(combatUnit));
495+
}});
464496
// CityController.conquerCity(city, combatUnit);
465497
showCityOptions = false;
466498
}
467499

468500
public void destroyButtonClicked(MouseEvent mouseEvent) {
501+
ClientSocketController.sendRequestAndGetResponse(QueryRequests.DESTROY_CITY, new HashMap<>(){{
502+
put("city", new Gson().toJson(city));
503+
put("combatUnit", new Gson().toJson(combatUnit));
504+
}});
469505
// CityController.destroyCity(city, combatUnit);
470506
showCityOptions = false;
471507
}

Client/src/main/java/Client/views/InfoPanelPageController.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import Client.application.App;
44
import Client.controllers.ClientSocketController;
55
import Client.enums.QueryRequests;
6+
import Client.enums.units.UnitTypes;
7+
import Client.models.City;
8+
import Client.models.units.CombatUnit;
9+
import Client.models.units.Unit;
10+
import javafx.event.EventHandler;
611
import Client.models.network.Response;
712
import com.google.gson.Gson;
813
import com.google.gson.reflect.TypeToken;
@@ -33,11 +38,40 @@ public void initialize() {
3338
case "NotificationsPanel" -> initNotificationsPanel();
3439
case "MilitaryPanel" -> initMilitaryPanel();
3540
case "EconomicStatusPanel" -> initEconomicStatusPanel();
41+
case "DiplomacyPanel" -> initDiplomacyPanel();
3642
default -> {
3743
}
3844
}
3945
}
4046

47+
public void initDiplomacyPanel() {
48+
Button discussButton = new Button("discuss");
49+
discussButton.setLayoutX(330);
50+
discussButton.setLayoutY(200);
51+
discussButton.setPrefWidth(120);
52+
discussButton.setOnMouseClicked(new EventHandler<MouseEvent>() {
53+
@Override
54+
public void handle(MouseEvent mouseEvent) {
55+
App.changeScene("discussPanel");
56+
}
57+
});
58+
59+
Button tradeButton = new Button("trade");
60+
tradeButton.setLayoutX(330);
61+
tradeButton.setLayoutY(240);
62+
tradeButton.setPrefWidth(120);
63+
tradeButton.setOnMouseClicked(new EventHandler<MouseEvent>() {
64+
@Override
65+
public void handle(MouseEvent mouseEvent) {
66+
App.changeScene("tradePanel");
67+
}
68+
});
69+
70+
pane.getChildren().add(discussButton);
71+
pane.getChildren().add(tradeButton);
72+
73+
}
74+
4175
private void initEconomicStatusPanel() {
4276
nameText.setText("EconomicStatus Panel");
4377
VBox vBox = new VBox();

Client/src/main/resources/fxml/gamePage.fxml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
<Text fx:id="happinessText" layoutX="194.0" layoutY="33.0" text="1000" wrappingWidth="70"/>
3434
<Button layoutX="388.0" layoutY="23.0" onMouseClicked="#showResearchPanel" prefHeight="36.0" prefWidth="127.0"
3535
style="-fx-pref-width: 125;" text="Research"/>
36-
<ChoiceBox fx:id="infoPanelsBox" layoutX="578.0" layoutY="23.0" prefHeight="36.0" prefWidth="125.0"/>
37-
<Button layoutX="715.0" layoutY="23.0" style="-fx-pref-width: 130;" text="GotoPanel" onMouseClicked="#gotoPanelButtonClicked"/>
36+
<ChoiceBox fx:id="infoPanelsBox" layoutX="525.0" layoutY="23.0" prefHeight="36.0" prefWidth="125.0"/>
37+
<Button layoutX="660.0" layoutY="23.0" style="-fx-pref-width: 130;" text="GotoPanel" onMouseClicked="#gotoPanelButtonClicked"/>
3838
<Text fx:id="yearText" fill="white" layoutX="994.0" layoutY="48.0" text="4000 BC" wrappingWidth="112"/>
3939
<Circle fill="WHITE" layoutX="1124.0" layoutY="41.0" radius="18.0"/>
4040
<Circle fx:id="settingsCircle" layoutX="1124.0" layoutY="41.0" radius="18.0" stroke="black"/>
@@ -69,7 +69,7 @@
6969
<Button layoutX="660" layoutY="342.5" text="Destroy" onMouseClicked="#destroyButtonClicked"/>
7070
</AnchorPane>
7171
<AnchorPane fx:id="declareWarOptionsPane" prefWidth="1280" prefHeight="720" style="-fx-background-color: transparent">
72-
<Button layoutX="470" layoutY="342.5" text="Conquer" onMouseClicked="#declareWarButtonClicked"/>
73-
<Button layoutX="660" layoutY="342.5" text="Destroy" onMouseClicked="#cancelButtonClicked"/>
72+
<Button layoutX="470" layoutY="342.5" text="Declare war" onMouseClicked="#declareWarButtonClicked"/>
73+
<Button layoutX="660" layoutY="342.5" text="Cancel" onMouseClicked="#cancelButtonClicked"/>
7474
</AnchorPane>
7575
</AnchorPane>

Server/src/main/java/Server/controllers/CityController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,15 +274,17 @@ public static String buyTileAndAddItToCityTerritory(Civilization civilization, C
274274
}
275275

276276
public static void conquerCity(City city, CombatUnit unit) {
277-
for (Tile tile : city.getTerritory())
277+
City actualCity = WorldController.getWorld().getCivilizationByName(city.getCivilizationName()).getCityByName(city.getName());
278+
for (Tile tile : actualCity.getTerritory())
278279
tile.setCivilization(unit.getCivilizationName());
279280
WorldController.getWorld().getCivilizationByName(unit.getCivilizationName()).addCity(city);
280281
CivilizationController.addNotification("In turn " + WorldController.getWorld().getActualTurn()
281282
+ " you conquered the " + city.getName() + "city", unit.getCivilizationName());
282283
}
283284

284285
public static void destroyCity(City city, CombatUnit unit) {
285-
for (Tile tile : city.getTerritory())
286+
City actualCity = WorldController.getWorld().getCivilizationByName(city.getCivilizationName()).getCityByName(city.getName());
287+
for (Tile tile : actualCity.getTerritory())
286288
tile.setCivilization(null);
287289
MapController.getMap()[city.getCenterOfCity().getX()][city.getCenterOfCity().getY()].setCity(null);
288290
CivilizationController.addNotification("In turn " + WorldController.getWorld().getActualTurn()

Server/src/main/java/Server/controllers/CivilizationController.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import Server.enums.QueryResponses;
44
import Server.enums.Technologies;
5+
import Server.models.*;
6+
import Server.models.network.Response;
7+
import javafx.scene.paint.Color;
58
import Server.models.Building;
69
import Server.models.Citizen;
710
import Server.models.City;
811
import Server.models.Civilization;
912

10-
import Server.models.network.Response;
1113
import Server.models.tiles.Ruin;
1214
import Server.models.tiles.Tile;
1315
import Server.models.units.Settler;
@@ -203,4 +205,9 @@ public static int getPoints(Civilization civilization) {
203205
points += civilization.getHappiness() * 5;
204206
return points;
205207
}
208+
209+
public static void addTrade(Trade trade) {
210+
Civilization civilization = WorldController.getWorld().getCivilizationByName(trade.getSecondCivilization());
211+
civilization.addTrade(trade);
212+
}
206213
}

0 commit comments

Comments
 (0)