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

View File

@@ -22,6 +22,13 @@ public abstract class CyberarmState implements Runnable {
public void init() { 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 * Called when state has begin to run
*/ */
@@ -39,7 +46,6 @@ public abstract class CyberarmState implements Runnable {
*/ */
@Override @Override
public void run() { public void run() {
isRunning = true;
while (!hasFinished) { while (!hasFinished) {
exec(); exec();
} }