33 lines
847 B
JavaScript
33 lines
847 B
JavaScript
/**
|
|
* IdleState - Turtle is idle, waiting for commands
|
|
*/
|
|
import { BaseState } from './BaseState.js';
|
|
|
|
export class IdleState extends BaseState {
|
|
get name() {
|
|
return 'idle';
|
|
}
|
|
|
|
get description() {
|
|
return 'Idle - waiting for commands';
|
|
}
|
|
|
|
async *act() {
|
|
// Periodic fuel check while idle (no scanning — avoids rotating turtle)
|
|
// Errors are caught here so they don't bubble up and trigger
|
|
// the _runStateLoop retry mechanism (which would create an
|
|
// infinite idle→timeout→idle loop).
|
|
while (!this.cancelled) {
|
|
try {
|
|
await this.checkFuel();
|
|
} catch (e) {
|
|
// Fuel check failed (likely command timeout) — not critical in idle
|
|
// Just wait longer before trying again
|
|
await this._sleep(30000);
|
|
}
|
|
yield;
|
|
await this._sleep(10000);
|
|
}
|
|
}
|
|
}
|