formatTrifecta method

  1. @override
void formatTrifecta (
  1. SamAction sa,
  2. SamState ss,
  3. SamView sv
)
override

The specific method for the RocketFactory subclass.

Tutorial note: Normally these function references would be private but here are made public so that their details show in the api documentation.

Implementation

@override
void formatTrifecta(SamAction sa,SamState ss,SamView sv) {
  // ---------------- action mapping ----------------
  sa.addAction(RK.saDecrement,    saDecrement);
  sa.addAction(RK.saStartCtr,     saStartCtr);
  sa.addAction(RK.saRestartCtr,   saRestartCtr);
  sa.addAction(RK.saPause,        (SamModel sm,SamReq req){sm.flipState(RK.ssPaused);});
  sa.addAction(RK.saAbort,        (SamModel sm,SamReq req){sm.flipState(RK.ssAborted);});
  sa.addAction(RK.saResetLauncher,(SamModel sm,SamReq req){sm.flipState(RK.ssReady);});
  // nap processing
  sa.addAction(RK.ssReady,        napPrepReady);
  sa.addAction(RK.ssCounting,     napStartTimer);
  sa.addAction(RK.ssWaiting,      napStartTimer);
  // ---------------- state mapping ----------------
  ss.addState(RK.ssReady)        .next([RK.ssCounting,RK.ssWaiting]).nap();
  ss.addState(RK.ssLaunched)     .next(RK.ssReady).weakSignal(RK.sgLaunching).allow(RK.saResetLauncher).ignore(RK.saDecrement);
  ss.addState(RK.ssCounting)     .next([RK.ssAborted,RK.ssPaused,RK.ssLaunched]).allow([RK.saDecrement,RK.saPause,RK.saAbort]).nap();
  ss.addState(RK.ssAborted)      .next(RK.ssReady).weakSignal(RK.sgAborting).allow(RK.saResetLauncher).ignore(RK.saDecrement);
  ss.addState(RK.ssPaused)       .next([RK.ssAborted,RK.ssCounting,RK.ssWaiting]).weakSignal(RK.sgPausing).ignore(RK.saDecrement);
  ss.addState(RK.ssWaiting)      .next([RK.ssAborted,RK.ssPaused,RK.ssCounting]).allow([RK.saDecrement,RK.saPause,RK.saAbort]).nap();
  // ---------------- view mapping ----------------
  sv.addView(RK.ssReady,         ssReady);
  sv.addView(RK.ssCounting,      _ssCounting);
  sv.addView(RK.ssPaused,        _ssPaused);
  sv.addView(RK.ssAborted,       _ssAborted);
  sv.addView(RK.ssLaunched,      _ssLaunched);
  sv.addView(RK.ssWaiting,       _ssWaiting);
  //log("trifecta Rocket ${enums} ${enums.runtimeType} eq=${RK == enums} ${RK} ${RK.ssReady.runtimeType} ${RK.ssReady is String} ");
}