Skip to content

Commit 2c2a136

Browse files
committed
adding files
1 parent 73e8544 commit 2c2a136

File tree

8 files changed

+372
-1
lines changed

8 files changed

+372
-1
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package Client.models;
2+
3+
import Client.enums.resources.LuxuryResourceTypes;
4+
5+
public class Trade {
6+
private String offeringCivilization;
7+
private String secondCivilization;
8+
private int offeredGold;
9+
private int requestedGold;
10+
private String offeredLuxuryResource;
11+
private String requestedLuxuryResource;
12+
private String offeredStrategicResource;
13+
private String requestedStrategicResource;
14+
15+
public Trade(String offeringCivilization, String secondCivilization, int offeredGold, int requestedGold, String offeredLuxuryResource, String requestedLuxuryResource, String offeredStrategicResource, String requestedStrategicResource) {
16+
this.offeringCivilization = offeringCivilization;
17+
this.secondCivilization = secondCivilization;
18+
this.offeredGold = offeredGold;
19+
this.requestedGold = requestedGold;
20+
this.offeredLuxuryResource = offeredLuxuryResource;
21+
requestedLuxuryResource = requestedLuxuryResource;
22+
this.offeredStrategicResource = offeredStrategicResource;
23+
requestedStrategicResource = requestedStrategicResource;
24+
}
25+
26+
public String tradeInfo() {
27+
String output = "";
28+
output += "trade offer from " + offeringCivilization +
29+
"\noffered gold : " + offeredGold + " wanted gold : " + requestedGold +
30+
"\noffered strategic resource : " + offeredStrategicResource + " wanted strategic resource : " + requestedStrategicResource +
31+
"\noffered luxury resource : " + offeredLuxuryResource + " wanted luxury resource : " + requestedLuxuryResource;
32+
33+
return output;
34+
}
35+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package Client.views;
2+
3+
import Client.application.App;
4+
import Client.controllers.ClientSocketController;
5+
import Client.enums.QueryRequests;
6+
import Client.enums.QueryResponses;
7+
import Client.models.City;
8+
import Client.models.Trade;
9+
import com.google.gson.Gson;
10+
import com.google.gson.reflect.TypeToken;
11+
import javafx.fxml.FXML;
12+
import javafx.geometry.Pos;
13+
import javafx.scene.control.Button;
14+
import javafx.scene.input.MouseEvent;
15+
import javafx.scene.layout.AnchorPane;
16+
import javafx.scene.layout.HBox;
17+
import javafx.scene.layout.VBox;
18+
import javafx.scene.paint.Color;
19+
import javafx.scene.text.Text;
20+
21+
import java.util.ArrayList;
22+
import java.util.HashMap;
23+
import java.util.List;
24+
import java.util.Objects;
25+
26+
public class OfferedTradesPageController {
27+
@FXML
28+
private AnchorPane pane;
29+
30+
public void initialize() {
31+
VBox vBox = new VBox();
32+
vBox.setAlignment(Pos.CENTER);
33+
vBox.setSpacing(10);
34+
vBox.setLayoutX(50);
35+
vBox.setLayoutY(50);
36+
ArrayList<Trade> trades = new Gson().fromJson(Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.GET_CIVILIZATION_TRADES, new HashMap<>())).getParams().get("trades"),
37+
new TypeToken<List<Trade>>() {
38+
}.getType());
39+
for (int i = 0; i < trades.size(); i++) {
40+
Text tradeInfo = new Text(trades.get(i).tradeInfo());
41+
tradeInfo.setFill(Color.rgb(238, 128, 0));
42+
Text message = new Text("");
43+
message.setFill(Color.rgb(238, 128, 0));
44+
message.setVisible(false);
45+
Button acceptButton = new Button("accept");
46+
int finalI = i;
47+
acceptButton.setOnMouseClicked(mouseEvent -> {
48+
if (!message.getText().equals("trade is done")){
49+
50+
QueryResponses queryResponse = Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.ACCEPT_TRADE, new HashMap<>() {{
51+
put("indexOfTrade", new Gson().toJson(finalI));
52+
}})).getQueryResponse();
53+
message.setVisible(true);
54+
switch (queryResponse) {
55+
case YOU_NOT_ENOUGH_GOLD -> {
56+
message.setText("you don't have enough gold");
57+
}
58+
case YOU_LACK_LUXURY_RESOURCE -> {
59+
message.setText("you lack luxury resource");
60+
}
61+
case YOU_LACK_STRATEGIC_RESOURCE -> {
62+
message.setText("you lack strategic resource");
63+
}
64+
case OTHER_CIVILIZATION_NOT_ENOUGH_GOLD -> {
65+
message.setText("other civilization don't have enough gold");
66+
}
67+
case OTHER_CIVILIZATION_LACK_LUXURY_RESOURCE -> {
68+
message.setText("other civilization lack luxury resource");
69+
}
70+
case OTHER_CIVILIZATION_LACK_STRATEGIC_RESOURCE -> {
71+
message.setText("other civilization lack strategic resource");
72+
}
73+
case OK -> {
74+
message.setText("trade is done");
75+
}
76+
}
77+
}
78+
});
79+
HBox hBox = new HBox(tradeInfo, acceptButton, message);
80+
hBox.setSpacing(10);
81+
hBox.setAlignment(Pos.CENTER);
82+
vBox.getChildren().add(hBox);
83+
}
84+
pane.getChildren().add(vBox);
85+
}
86+
87+
public void backButtonClicked(MouseEvent mouseEvent) {
88+
App.changeScene("tradePanel");
89+
}
90+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package Client.views;
2+
3+
import Client.application.App;
4+
import Client.controllers.ClientSocketController;
5+
import Client.enums.QueryRequests;
6+
import Client.enums.resources.LuxuryResourceTypes;
7+
import Client.enums.resources.StrategicResourceTypes;
8+
import Client.models.Trade;
9+
import Client.models.User;
10+
import com.google.gson.Gson;
11+
import com.google.gson.reflect.TypeToken;
12+
import javafx.fxml.FXML;
13+
import javafx.scene.control.ChoiceBox;
14+
import javafx.scene.control.TextField;
15+
import javafx.scene.input.MouseEvent;
16+
import javafx.scene.text.Text;
17+
18+
import java.util.ArrayList;
19+
import java.util.HashMap;
20+
import java.util.List;
21+
import java.util.Objects;
22+
23+
public class TradePanelController {
24+
25+
@FXML
26+
private Text message;
27+
@FXML
28+
private ChoiceBox<String> civilizationName;
29+
@FXML
30+
private TextField yourOfferedGold;
31+
@FXML
32+
private ChoiceBox<String> yourOfferedStrategicResource;
33+
@FXML
34+
private ChoiceBox<String> yourOfferedLuxuryResource;
35+
@FXML
36+
private TextField yourRequestedGold;
37+
@FXML
38+
private ChoiceBox<String> yourRequestedStrategicResource;
39+
@FXML
40+
private ChoiceBox<String> yourRequestedLuxuryResource;
41+
42+
public void initialize(){
43+
message.setVisible(false);
44+
initCivilizationNames();
45+
46+
yourOfferedLuxuryResource.setValue(null);
47+
yourOfferedLuxuryResource.getItems().addAll(LuxuryResourceTypes.getAllResourcesNames());
48+
49+
yourOfferedStrategicResource.setValue(null);
50+
yourOfferedStrategicResource.getItems().addAll(StrategicResourceTypes.getAllResourcesNames());
51+
52+
yourRequestedLuxuryResource.setValue(null);
53+
yourRequestedLuxuryResource.getItems().addAll(LuxuryResourceTypes.getAllResourcesNames());
54+
55+
yourRequestedStrategicResource.setValue(null);
56+
yourRequestedStrategicResource.getItems().addAll(StrategicResourceTypes.getAllResourcesNames());
57+
}
58+
59+
public void initCivilizationNames() {
60+
String currentCivilizationName = new Gson().fromJson(Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.GET_CURRENT_CIVILIZATION_NAME, new HashMap<>())).getParams().get("name"), String.class);
61+
ArrayList<String> civilizationNames = new Gson().fromJson(Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.GET_ALL_CIVILIZATIONS_NAMES, new HashMap<>())).getParams().get("names"),
62+
new TypeToken<List<String>>() {
63+
}.getType());
64+
civilizationNames.remove(currentCivilizationName);
65+
civilizationName.setValue(null);
66+
civilizationName.getItems().addAll(civilizationNames);
67+
}
68+
69+
public void tradeButtonClicked(MouseEvent mouseEvent) {
70+
String currentCivilizationName = new Gson().fromJson(Objects.requireNonNull(ClientSocketController.sendRequestAndGetResponse(QueryRequests.GET_CURRENT_CIVILIZATION_NAME, new HashMap<>())).getParams().get("name"), String.class);
71+
if (offeredGoldIsInteger() && requestedGoldIsInteger()) {
72+
message.setVisible(true);
73+
if (civilizationName.getValue() != null){
74+
Trade trade = new Trade(currentCivilizationName, civilizationName.getValue(), Integer.parseInt(yourOfferedGold.getText()), Integer.parseInt(yourRequestedGold.getText()), yourOfferedLuxuryResource.getValue(), yourRequestedLuxuryResource.getValue(), yourOfferedStrategicResource.getValue(), yourRequestedStrategicResource.getValue());
75+
ClientSocketController.sendRequestAndGetResponse(QueryRequests.ADD_TRADE, new HashMap<>(){{put("trade", new Gson().toJson(trade));}});
76+
77+
message.setText("your offer was sent to civilization " + civilizationName.getValue());
78+
} else {
79+
message.setText("you should select aa civilization");
80+
}
81+
}
82+
}
83+
84+
public boolean offeredGoldIsInteger() {
85+
try {
86+
Integer.parseInt(yourOfferedGold.getText());
87+
return true;
88+
} catch (NumberFormatException e){
89+
message.setVisible(true);
90+
message.setText("your offered gold isn't an integer");
91+
return false;
92+
}
93+
}
94+
95+
public boolean requestedGoldIsInteger() {
96+
try {
97+
Integer.parseInt(yourRequestedGold.getText());
98+
return true;
99+
} catch (NumberFormatException e){
100+
message.setVisible(true);
101+
message.setText("your requested gold isn't an integer");
102+
return false;
103+
}
104+
}
105+
106+
public void goToOfferedTradesPage(MouseEvent mouseEvent) {
107+
App.changeScene("offeredTradesPage");
108+
}
109+
110+
public void backButtonClicked(MouseEvent mouseEvent) {
111+
App.changeScene("infoPanelPage");
112+
}
113+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import java.lang.*?>
4+
<?import java.util.*?>
5+
<?import javafx.scene.*?>
6+
<?import javafx.scene.control.*?>
7+
<?import javafx.scene.layout.*?>
8+
9+
<AnchorPane xmlns="http://javafx.com/javafx"
10+
xmlns:fx="http://javafx.com/fxml"
11+
fx:controller="fxml.DiscussPanel"
12+
prefHeight="400.0" prefWidth="600.0">
13+
14+
</AnchorPane>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import java.lang.*?>
4+
<?import java.util.*?>
5+
<?import javafx.scene.*?>
6+
<?import javafx.scene.control.*?>
7+
<?import javafx.scene.layout.*?>
8+
9+
<AnchorPane xmlns="http://javafx.com/javafx"
10+
xmlns:fx="http://javafx.com/fxml"
11+
fx:controller="Client.views.OfferedTradesPageController"
12+
id="profileMenuScene" prefHeight="720" prefWidth="1280" stylesheets="@../css/style.css">
13+
14+
<ScrollPane hbarPolicy="NEVER" layoutX="206.0" layoutY="70.0" prefHeight="593.0" prefWidth="760"
15+
vbarPolicy="ALWAYS">
16+
<AnchorPane fx:id="pane"/>
17+
</ScrollPane>
18+
<Button layoutX="50" layoutY="600" onMouseClicked="#backButtonClicked" text="Back"/>
19+
</AnchorPane>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.scene.control.Button?>
4+
<?import javafx.scene.control.ChoiceBox?>
5+
<?import javafx.scene.control.TextField?>
6+
<?import javafx.scene.layout.AnchorPane?>
7+
<?import javafx.scene.text.Text?>
8+
9+
<AnchorPane id="profileMenuScene" prefHeight="720" prefWidth="1280" stylesheets="@../css/style.css" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Client.views.TradePanelController">
10+
<children>
11+
<Text fill="#d7720e" layoutX="358.0" layoutY="150.0" strokeType="OUTSIDE" strokeWidth="0.0" text="trade with civilization" wrappingWidth="201.77557373046875" />
12+
<ChoiceBox fx:id="civilizationName" layoutX="590.0" layoutY="130.0" prefHeight="36.0" prefWidth="100.0" />
13+
<Button layoutX="729.0" layoutY="130.0" mnemonicParsing="false" onMouseClicked="#tradeButtonClicked" text="trade" />
14+
15+
<Text fill="#c6750a" layoutX="107.0" layoutY="208.0" strokeType="OUTSIDE" strokeWidth="0.0" text="your offers:" wrappingWidth="110.20135498046875" />
16+
<Text fill="#c86e11" layoutX="150.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="gold" />
17+
<TextField fx:id="yourOfferedGold" layoutX="150.0" layoutY="290.0" prefHeight="20.0" prefWidth="89.0" style="-fx-pref-width: 40" text="0" />
18+
<Text fill="#c86e11" layoutX="247.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="strategic resource" />
19+
<ChoiceBox fx:id="yourOfferedStrategicResource" layoutX="247.0" layoutY="290.0" prefHeight="36.0" prefWidth="100.0" />
20+
<Text fill="#c86e11" layoutX="446.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="luxury resource" />
21+
<ChoiceBox fx:id="yourOfferedLuxuryResource" layoutX="466.0" layoutY="290.0" prefHeight="36.0" prefWidth="100.0" />
22+
23+
<Text fill="#e4740c" layoutX="738.0" layoutY="204.0" strokeType="OUTSIDE" strokeWidth="0.0" text="what you want:" />
24+
<Text fill="#c86e11" layoutX="784.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="gold" />
25+
<TextField fx:id="yourRequestedGold" layoutX="784.0" layoutY="290.0" prefHeight="20.0" prefWidth="89.0" style="-fx-pref-width: 40" text="0" />
26+
<Text fill="#c86e11" layoutX="902.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="strategic resource" />
27+
<ChoiceBox fx:id="yourRequestedStrategicResource" layoutX="902" layoutY="290.0" prefHeight="36.0" prefWidth="100.0" />
28+
<Text fill="#c86e11" layoutX="1085.0" layoutY="266.0" strokeType="OUTSIDE" strokeWidth="0.0" text="luxury resource" />
29+
<ChoiceBox fx:id="yourRequestedLuxuryResource" layoutX="1085.0" layoutY="290.0" prefHeight="36.0" prefWidth="100.0" />
30+
31+
<Button layoutX="562.0" layoutY="516.0" mnemonicParsing="false" onMouseClicked="#goToOfferedTradesPage" text="trade offers" />
32+
<Text fx:id="message" fill="#c86e11" layoutX="400.0" layoutY="430.0" strokeType="OUTSIDE" strokeWidth="0.0" text="your offer was sent to civilization" />
33+
<Button layoutX="50" layoutY="600" onMouseClicked="#backButtonClicked" text="Back"/>
34+
</children>
35+
</AnchorPane>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package Server.models;
2+
3+
public class Trade {
4+
private String offeringCivilization;
5+
private String secondCivilization;
6+
private int offeredGold;
7+
private int requestedGold;
8+
private String offeredLuxuryResource;
9+
private String requestedLuxuryResource;
10+
private String offeredStrategicResource;
11+
private String requestedStrategicResource;
12+
13+
public Trade(String offeringCivilization, String secondCivilization, int offeredGold, int requestedGold, String offeredLuxuryResource, String requestedLuxuryResource, String offeredStrategicResource, String requestedStrategicResource) {
14+
this.offeringCivilization = offeringCivilization;
15+
this.secondCivilization = secondCivilization;
16+
this.offeredGold = offeredGold;
17+
this.requestedGold = requestedGold;
18+
this.offeredLuxuryResource = offeredLuxuryResource;
19+
requestedLuxuryResource = requestedLuxuryResource;
20+
this.offeredStrategicResource = offeredStrategicResource;
21+
requestedStrategicResource = requestedStrategicResource;
22+
}
23+
24+
public String tradeInfo() {
25+
String output = "";
26+
output += "trade offer from " + offeringCivilization +
27+
"\noffered gold : " + offeredGold + " wanted gold : " + requestedGold +
28+
"\noffered strategic resource : " + offeredStrategicResource + " wanted strategic resource : " + requestedStrategicResource +
29+
"\noffered luxury resource : " + offeredLuxuryResource + " wanted luxury resource : " + requestedLuxuryResource;
30+
31+
return output;
32+
}
33+
34+
public String getSecondCivilization() {
35+
return secondCivilization;
36+
}
37+
38+
public String getOfferingCivilization() {
39+
return offeringCivilization;
40+
}
41+
42+
public int getOfferedGold() {
43+
return offeredGold;
44+
}
45+
46+
public int getRequestedGold() {
47+
return requestedGold;
48+
}
49+
50+
public String getOfferedLuxuryResource() {
51+
return offeredLuxuryResource;
52+
}
53+
54+
public String getRequestedLuxuryResource() {
55+
return requestedLuxuryResource;
56+
}
57+
58+
public String getOfferedStrategicResource() {
59+
return offeredStrategicResource;
60+
}
61+
62+
public String getRequestedStrategicResource() {
63+
return requestedStrategicResource;
64+
}
65+
}

0 commit comments

Comments
 (0)