Added protected prestart() method to State to set isRunning to true before start() is called to ensure states added in start() are correctly setup

This commit is contained in:
2021-02-13 19:59:18 -06:00
parent b7a64efd56
commit bf9c4c8d86
2 changed files with 10 additions and 1 deletions

View File

@@ -170,6 +170,7 @@ public abstract class CyberarmEngine extends OpMode {
new Thread(new Runnable() {
@Override
public void run() {
finalState.prestart();
finalState.start();
finalState.startTime = System.currentTimeMillis();
finalState.run();
@@ -202,6 +203,8 @@ public abstract class CyberarmEngine extends OpMode {
*/
public CyberarmState insertState(CyberarmState query, CyberarmState state) {
int index = cyberarmStates.indexOf(query) + query.insertOffset;
Log.i(TAG, "Adding cyberarmState "+ state.getClass());
cyberarmStates.add(index, state);
query.insertOffset++;

View File

@@ -22,6 +22,13 @@ public abstract class CyberarmState implements Runnable {
public void init() {
}
/**
* Called just before start to ensure state is in correct state
*/
protected void prestart() {
isRunning = true;
}
/**
* Called when state has begin to run
*/
@@ -39,7 +46,6 @@ public abstract class CyberarmState implements Runnable {
*/
@Override
public void run() {
isRunning = true;
while (!hasFinished) {
exec();
}