mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
870dc07fd2
Allow a host/client to disconnect and reconnect/make lobby, leave lobby and play the game. #pair[kre39,hyi25] #story[1047]
107 lines
4.2 KiB
Java
107 lines
4.2 KiB
Java
package seng302.controllers;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.ResourceBundle;
|
|
import javafx.fxml.FXML;
|
|
import javafx.fxml.FXMLLoader;
|
|
import javafx.fxml.Initializable;
|
|
import javafx.scene.Parent;
|
|
import javafx.scene.input.KeyEvent;
|
|
import javafx.scene.layout.AnchorPane;
|
|
import seng302.client.ClientPacketParser;
|
|
import seng302.client.ClientState;
|
|
import seng302.client.ClientToServerThread;
|
|
import seng302.server.messages.BoatActionMessage;
|
|
import seng302.server.messages.BoatActionType;
|
|
|
|
public class Controller implements Initializable {
|
|
|
|
@FXML
|
|
private AnchorPane contentPane;
|
|
private ClientToServerThread clientToServerThread;
|
|
private long lastSendingTime;
|
|
private int KEY_STROKE_SENDING_FREQUENCY = 50;
|
|
|
|
public Object setContentPane(String jfxUrl) {
|
|
try {
|
|
contentPane.getChildren().removeAll();
|
|
contentPane.getChildren().clear();
|
|
contentPane.getStylesheets().add(getClass().getResource("/css/master.css").toString());
|
|
FXMLLoader fxmlLoader = new FXMLLoader((getClass().getResource(jfxUrl)));
|
|
Parent view = fxmlLoader.load();
|
|
contentPane.getChildren().addAll(view);
|
|
return fxmlLoader.getController();
|
|
} catch (javafx.fxml.LoadException e) {
|
|
System.err.println(e.getCause());
|
|
} catch (IOException e) {
|
|
System.err.println(e);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void initialize(URL location, ResourceBundle resources) {
|
|
setUpStartScreen();
|
|
lastSendingTime = System.currentTimeMillis();
|
|
}
|
|
|
|
void setUpStartScreen() {
|
|
contentPane.getChildren().removeAll();
|
|
contentPane.getChildren().clear();
|
|
contentPane.getStylesheets().add(getClass().getResource("/css/master.css").toString());
|
|
StartScreenController startScreenController = (StartScreenController) setContentPane("/views/StartScreenView.fxml");
|
|
startScreenController.setController(this);
|
|
ClientPacketParser.boatLocations.clear();
|
|
}
|
|
|
|
|
|
/** Handle the key-pressed event from the text field. */
|
|
public void keyPressed(KeyEvent e) {
|
|
BoatActionMessage boatActionMessage;
|
|
long currentTime = System.currentTimeMillis();
|
|
if (currentTime - lastSendingTime > KEY_STROKE_SENDING_FREQUENCY && ClientState.isRaceStarted()) {
|
|
lastSendingTime = currentTime;
|
|
switch (e.getCode()) {
|
|
case SPACE: // align with vmg
|
|
boatActionMessage = new BoatActionMessage(BoatActionType.VMG);
|
|
clientToServerThread.sendBoatActionMessage(boatActionMessage);
|
|
break;
|
|
case PAGE_UP: // upwind
|
|
boatActionMessage = new BoatActionMessage(BoatActionType.UPWIND);
|
|
clientToServerThread.sendBoatActionMessage(boatActionMessage);
|
|
break;
|
|
case PAGE_DOWN: // downwind
|
|
boatActionMessage = new BoatActionMessage(BoatActionType.DOWNWIND);
|
|
clientToServerThread.sendBoatActionMessage(boatActionMessage);
|
|
break;
|
|
case ENTER: // tack/gybe
|
|
boatActionMessage = new BoatActionMessage(BoatActionType.TACK_GYBE);
|
|
clientToServerThread.sendBoatActionMessage(boatActionMessage);
|
|
break;
|
|
//TODO Allow a zoom in and zoom out methods
|
|
case Z: // zoom in
|
|
System.out.println("Zoom in");
|
|
break;
|
|
case X: // zoom out
|
|
System.out.println("Zoom out");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void keyReleased(KeyEvent e) {
|
|
switch (e.getCode()) {
|
|
//TODO 12/07/17 Determine the sail state and send the appropriate packet (eg. if sails are in, send a sail out packet)
|
|
case SHIFT: // sails in/sails out
|
|
BoatActionMessage boatActionMessage = new BoatActionMessage(BoatActionType.SAILS_IN);
|
|
clientToServerThread.sendBoatActionMessage(boatActionMessage);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void setClientToServerThread(ClientToServerThread ctt) {
|
|
clientToServerThread = ctt;
|
|
}
|
|
}
|