Game state now updates based on boat position. Arrows drawn as boat travels course. Currently do not point in correct direction, also the sparkline does not work.

#bug #refactor #implement #story[1118]
This commit is contained in:
Calum
2017-08-16 03:51:48 +12:00
parent 7329f7dc65
commit ac47e9d88a
51 changed files with 358 additions and 271 deletions
@@ -8,13 +8,13 @@ import java.util.Map;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import seng302.gameServer.server.messages.BoatAction;
import seng302.gameServer.server.messages.BoatStatus;
import seng302.gameServer.server.messages.MarkRoundingMessage;
import seng302.gameServer.server.messages.MarkType;
import seng302.gameServer.server.messages.Message;
import seng302.gameServer.server.messages.RoundingBoatStatus;
import seng302.gameServer.server.messages.YachtEventCodeMessage;
import seng302.gameServer.messages.BoatAction;
import seng302.gameServer.messages.BoatStatus;
import seng302.gameServer.messages.MarkRoundingMessage;
import seng302.gameServer.messages.MarkType;
import seng302.gameServer.messages.Message;
import seng302.gameServer.messages.RoundingBoatStatus;
import seng302.gameServer.messages.YachtEventCodeMessage;
import seng302.model.GeoPoint;
import seng302.model.Player;
import seng302.model.PolarTable;
@@ -283,7 +283,7 @@ public class GameState implements Runnable {
Double velocity = yacht.getCurrentVelocity();
Double trueWindAngle = Math.abs(windDirection - yacht.getHeading());
Double boatSpeedInKnots = PolarTable.getBoatSpeed(getWindSpeedKnots(), trueWindAngle);
Double maxBoatSpeed = GeoUtility.knotsToMMS(boatSpeedInKnots);
Double maxBoatSpeed = GeoUtility.knotsToMMS(boatSpeedInKnots) * 3;
// TODO: 15/08/17 remove magic numbers from these equations.
if (yacht.getSailIn()) {
if (velocity < maxBoatSpeed - 500) {
@@ -556,7 +556,7 @@ public class GameState implements Runnable {
// TODO: 13/8/17 figure out the rounding side, rounded mark source ID and boat status.
Message markRoundingMessage = new MarkRoundingMessage(0, 0,
sourceID, RoundingBoatStatus.RACING, roundingMark.getRoundingSide(), markType,
roundingMark.getSourceID());
currentMarkSeqID + 1);
notifyMessageListeners(markRoundingMessage);
}
@@ -5,8 +5,8 @@ import java.util.Stack;
import java.util.Timer;
import java.util.TimerTask;
import seng302.model.Player;
import seng302.gameServer.server.messages.Heartbeat;
import seng302.gameServer.server.messages.Message;
import seng302.gameServer.messages.Heartbeat;
import seng302.gameServer.messages.Message;
/**
* Send Heartbeat messages to connected player at a specified interval
@@ -6,7 +6,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import seng302.gameServer.server.messages.Message;
import seng302.gameServer.messages.Message;
import seng302.model.GeoPoint;
import seng302.model.Player;
import seng302.model.PolarTable;
@@ -2,10 +2,10 @@ package seng302.gameServer;
import java.util.Arrays;
import seng302.gameServer.server.messages.ClientType;
import seng302.gameServer.server.messages.Message;
import seng302.gameServer.messages.ClientType;
import seng302.gameServer.messages.Message;
import seng302.model.stream.packets.StreamPacket;
import seng302.gameServer.server.messages.BoatAction;
import seng302.gameServer.messages.BoatAction;
public class ServerPacketParser {
@@ -19,25 +19,25 @@ import java.util.zip.CRC32;
import java.util.zip.Checksum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import seng302.gameServer.server.messages.YachtEventCodeMessage;
import seng302.gameServer.messages.YachtEventCodeMessage;
import seng302.model.Player;
import seng302.model.stream.packets.PacketType;
import seng302.model.stream.packets.StreamPacket;
import seng302.model.stream.xml.generator.Race;
import seng302.model.stream.xml.generator.Regatta;
import seng302.utilities.XMLGenerator;
import seng302.gameServer.server.messages.BoatAction;
import seng302.gameServer.server.messages.BoatLocationMessage;
import seng302.gameServer.server.messages.BoatSubMessage;
import seng302.gameServer.server.messages.ClientType;
import seng302.gameServer.server.messages.Message;
import seng302.gameServer.server.messages.RaceStatus;
import seng302.gameServer.server.messages.RaceStatusMessage;
import seng302.gameServer.server.messages.RaceType;
import seng302.gameServer.server.messages.RegistrationResponseMessage;
import seng302.gameServer.server.messages.RegistrationResponseStatus;
import seng302.gameServer.server.messages.XMLMessage;
import seng302.gameServer.server.messages.XMLMessageSubType;
import seng302.gameServer.messages.BoatAction;
import seng302.gameServer.messages.BoatLocationMessage;
import seng302.gameServer.messages.BoatSubMessage;
import seng302.gameServer.messages.ClientType;
import seng302.gameServer.messages.Message;
import seng302.gameServer.messages.RaceStatus;
import seng302.gameServer.messages.RaceStatusMessage;
import seng302.gameServer.messages.RaceType;
import seng302.gameServer.messages.RegistrationResponseMessage;
import seng302.gameServer.messages.RegistrationResponseStatus;
import seng302.gameServer.messages.XMLMessage;
import seng302.gameServer.messages.XMLMessageSubType;
import seng302.model.ServerYacht;
/**
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
import java.util.HashMap;
import java.util.Map;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Created by kre39 on 12/07/17.
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class BoatLocationMessage extends Message {
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* The current status of a boat
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
import java.nio.ByteBuffer;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Created by kre39 on 20/07/17.
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public enum ClientType {
SPECTATOR(0x00),
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public enum DeviceType {
UNKNOWN(0),
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
import java.nio.ByteBuffer;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class Heartbeat extends Message {
private final int MESSAGE_SIZE = 4;
@@ -1,6 +1,4 @@
package seng302.gameServer.server.messages;
import seng302.gameServer.GameState;
package seng302.gameServer.messages;
public class MarkRoundingMessage extends Message{
private final long MESSAGE_VERSION_NUMBER = 1;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Types of marks boats can round
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Enum containing the types of messages
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* The types of race start status messages
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class RaceStartStatusMessage extends Message {
private final int MESSAGE_SIZE = 20;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* The current status of the race
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
import java.util.List;
import java.util.zip.CRC32;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Enum containing the types of races
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class RegistrationRequestMessage extends Message {
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class RegistrationResponseMessage extends Message{
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public enum RegistrationResponseStatus {
SUCCESS_SPECTATING(0x00),
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* The status of a boat rounding a mark
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* The side the boat rounded the mark
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
public class XMLMessage extends Message{
private final MessageType MESSAGE_TYPE = MessageType.XML_MESSAGE;
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Enum containing the types of XML messages
@@ -1,4 +1,4 @@
package seng302.gameServer.server.messages;
package seng302.gameServer.messages;
/**
* Created by zyt10 on 10/08/17.