package vooga.rts.networking.communications; /** * Represents a timeStamp that will be sent across the network. It is based on parameters passed in * by user, however it will still store a system time to use in some cases. * * @author Henrique Moraes * @author David Winegar * */ public class UserTimeStamp extends TimeStamp { private static final long serialVersionUID = 1673418588253438258L; private long myStartTime = 0; private long mySystemStartTime; /** * Starts at passed in time. * * @param startTime time to start */ public UserTimeStamp (Long startTime) { myStartTime = startTime; resetStamp(); } /** * Instantiates a timestamp with starting time 0. */ public UserTimeStamp () { resetStamp(); } /** * Resets time stamp to default value passed in. */ @Override public void resetStamp () { setInitialTime(myStartTime); setFinalTime(DEFAULT_VALUE); mySystemStartTime = System.currentTimeMillis(); } @Override public long getDifference () { if (getFinalTime() == DEFAULT_VALUE) { setFinalTime(System.currentTimeMillis() - mySystemStartTime); } return getFinalTime() - getInitialTime(); } @Override public long stamp () { setFinalTime(System.currentTimeMillis() - mySystemStartTime); return getDifference(); } @Override public long stamp (long time) { setFinalTime(time); return getDifference(); } }