Boat collision packets are now sent. Command class created for boat collision. Currently prints out message depending on if user crashed or someone else crashed. #story[1195]
This commit is contained in:
@@ -81,6 +81,7 @@ public class Event {
|
||||
|
||||
String raceXMLFile = "mock/mockXML/raceTest.xml";
|
||||
String boatsXMLFile = "mock/mockXML/boatTest.xml";
|
||||
//String boatsXMLFile = "mock/mockXML/boatsSinglePlayer.xml";
|
||||
String regattaXMLFile = "mock/mockXML/regattaTest.xml";
|
||||
|
||||
if (singlePlayer) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import network.Messages.Enums.RaceStatusEnum;
|
||||
import network.Messages.LatestMessages;
|
||||
import shared.model.RunnableWithFramePeriod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
|
||||
@@ -104,6 +105,8 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
||||
*/
|
||||
private void raceLoop() {
|
||||
|
||||
ArrayList<MockBoat> collisionBoats = new ArrayList<>();
|
||||
|
||||
long previousFrameTime = System.currentTimeMillis();
|
||||
|
||||
while (race.getRaceStatusEnum() != RaceStatusEnum.FINISHED && loopBool) {
|
||||
@@ -129,9 +132,17 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
||||
//If it is still racing, update its position.
|
||||
if (boat.getStatus() == BoatStatusEnum.RACING) {
|
||||
race.updatePosition(boat, framePeriod, race.getRaceClock().getDurationMilli());
|
||||
race.getColliderRegistry().rayCast(boat);
|
||||
|
||||
if(race.getColliderRegistry().rayCast(boat)){
|
||||
System.out.println("Collision!");
|
||||
//Add boat to list
|
||||
collisionBoats.add(boat);
|
||||
}
|
||||
|
||||
//System.out.println(race.getColliderRegistry().rayCast(boat));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -144,9 +155,14 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
||||
// Change wind direction
|
||||
race.changeWindDirection();
|
||||
|
||||
//Pass collision boats in
|
||||
server.parseBoatCollisions(collisionBoats);
|
||||
|
||||
//Parse the race snapshot.
|
||||
server.parseSnapshot();
|
||||
|
||||
collisionBoats.clear();
|
||||
|
||||
//Update the last frame time.
|
||||
previousFrameTime = currentTime;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package mock.model;
|
||||
|
||||
import network.Messages.*;
|
||||
import network.Messages.Enums.BoatLocationDeviceEnum;
|
||||
import network.Messages.Enums.YachtEventEnum;
|
||||
import shared.model.Bearing;
|
||||
import shared.model.CompoundMark;
|
||||
import shared.model.Mark;
|
||||
@@ -15,6 +16,7 @@ import java.util.List;
|
||||
public class RaceServer {
|
||||
private MockRace race;
|
||||
private LatestMessages latestMessages;
|
||||
private List<YachtEvent> collisionEvents = new ArrayList<>();
|
||||
|
||||
|
||||
/**
|
||||
@@ -44,7 +46,17 @@ public class RaceServer {
|
||||
//Parse the race status.
|
||||
snapshotMessages.add(parseRaceStatus());
|
||||
|
||||
//Parse collisions
|
||||
if(collisionEvents.size()>0){
|
||||
snapshotMessages.addAll(collisionEvents);
|
||||
}
|
||||
|
||||
latestMessages.setSnapshot(snapshotMessages);
|
||||
|
||||
//Reset collision list
|
||||
collisionEvents.clear();
|
||||
//System.out.println(collisionEvents.size());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -178,4 +190,28 @@ public class RaceServer {
|
||||
|
||||
return raceStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the yacht event and return it
|
||||
* @param boat yacht with event
|
||||
* @param event event that happened
|
||||
* @return yacht event
|
||||
*/
|
||||
private YachtEvent parseYachtEvent(MockBoat boat, YachtEventEnum event){
|
||||
YachtEvent yachtEvent = new YachtEvent(
|
||||
System.currentTimeMillis(),
|
||||
this.boatLocationSequenceNumber,
|
||||
race.getRaceId(),
|
||||
boat.getSourceID(),
|
||||
1337,
|
||||
event);
|
||||
return yachtEvent;
|
||||
}
|
||||
|
||||
public void parseBoatCollisions(ArrayList<MockBoat> boats){
|
||||
for (MockBoat boat : boats){
|
||||
collisionEvents.add(parseYachtEvent(boat, YachtEventEnum.COLLISION));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ public abstract class Collider extends Observable implements Locatable {
|
||||
notifyObservers(collision);
|
||||
this.setChanged();
|
||||
|
||||
//Send out packet to all boats
|
||||
|
||||
return true;
|
||||
} else return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user