Made ObserverCommands and made racestate an observable. ObserverCommands observes the race passes in the params. #story[1196]

main
Joseph 9 years ago
parent 28d27a7b2b
commit f4cb1a3ac4

@ -743,4 +743,10 @@ public class MockRace extends RaceState {
}
/**
* Made public, so race logic can control it
*/
public void setChanged() {
super.setChanged();
}
}

@ -185,6 +185,10 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
previousFrameTime = currentTime;
}
// Notify Observers
race.setChanged();
race.notifyObservers();
waitForFramePeriod(previousFrameTime, currentTime, 50);
previousFrameTime = currentTime;
}

@ -3,6 +3,8 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
import java.util.Observer;
/**
* Allows RaceLogic to control MockRace state according to the Command pattern
*/

@ -0,0 +1,20 @@
package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
import java.util.Observer;
/**
* Command that can observe the race
*/
public abstract class ObserverCommand implements Command, Observer {
MockRace race;
MockBoat boat;
public ObserverCommand(MockRace race, MockBoat boat) {
this.race = race;
this.boat = boat;
race.addObserver(this);
}
}

@ -3,14 +3,13 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
public class SailsCommand implements Command {
private MockRace race;
private MockBoat boat;
import java.util.Observable;
public class SailsCommand extends ObserverCommand {
private boolean sailsOut;
public SailsCommand(MockRace race, MockBoat boat, Boolean sailsOut) {
this.race = race;
this.boat = boat;
super(race, boat);
this.sailsOut = sailsOut;
}
@ -18,4 +17,9 @@ public class SailsCommand implements Command {
public void execute() {
this.boat.setSailsOut(this.sailsOut);
}
@Override
public void update(Observable o, Object arg) {
}
}

@ -4,12 +4,12 @@ import mock.model.MockBoat;
import mock.model.MockRace;
import shared.model.Bearing;
import java.util.Observable;
/**
* Command class for tacking and gybing
*/
public class TackGybeCommand implements Command {
private MockRace race;
private MockBoat boat;
public class TackGybeCommand extends ObserverCommand {
/**
* Constructor for class
@ -17,8 +17,7 @@ public class TackGybeCommand implements Command {
* @param boat mock boat to update
*/
public TackGybeCommand(MockRace race, MockBoat boat) {
this.race = race;
this.boat = boat;
super(race, boat);
}
@Override
@ -49,5 +48,9 @@ public class TackGybeCommand implements Command {
return phi > 180 ? 360 - phi : phi;
}
@Override
public void update(Observable o, Object arg) {
}
}

@ -3,12 +3,12 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
import java.util.Observable;
/**
* Command class for autoVMG
*/
public class VMGCommand implements Command {
private MockRace race;
private MockBoat boat;
public class VMGCommand extends ObserverCommand {
/**
* Constructor for class
@ -16,8 +16,7 @@ public class VMGCommand implements Command {
* @param boat mock boat to update
*/
public VMGCommand(MockRace race, MockBoat boat) {
this.race = race;
this.boat = boat;
super(race, boat);
}
@Override
@ -28,4 +27,9 @@ public class VMGCommand implements Command {
boat.setAutoVMG(true);
}
}
@Override
public void update(Observable o, Object arg) {
}
}

@ -4,17 +4,16 @@ import mock.model.MockBoat;
import mock.model.MockRace;
import shared.model.Bearing;
import java.util.Observable;
/**
* Created by connortaylorbrown on 4/08/17.
*/
public class WindCommand implements Command {
private MockRace race;
private MockBoat boat;
public class WindCommand extends ObserverCommand {
private int direction;
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
this.race = race;
this.boat = boat;
super(race, boat);
this.direction = upwind? -1 : 1;
}
@ -34,4 +33,9 @@ public class WindCommand implements Command {
boat.setBearing(Bearing.fromDegrees(heading + offset));
}
@Override
public void update(Observable o, Object arg) {
}
}

@ -13,6 +13,7 @@ import shared.dataInput.RegattaDataSource;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
/**
@ -20,7 +21,7 @@ import java.util.List;
* This is a base class inherited by {@link mock.model.MockRace} and {@link visualiser.model.VisualiserRaceState}.
* Has a course, state, wind, boundaries, etc.... Boats are added by inheriting classes (see {@link Boat}, {@link mock.model.MockBoat}, {@link visualiser.model.VisualiserBoat}.
*/
public abstract class RaceState {
public abstract class RaceState extends Observable{

Loading…
Cancel
Save