char *StartStateManager::StateName(StatePtr p) { state nextstate; if (!p.isStart()) Error.Notrace ("Internal: Cannot find startstate name for non startstate"); for (what_startstate = 0; what_startstate < numstartstates; what_startstate++) { StartState(); StateCopy(&nextstate, workingstate); if (StateEquivalent(&nextstate, p)) return LastStateName(); } // Norris: it is very funny, but the following code is supposed to work, but it doesn't // // state * nextstate; // for(what_startstate=0; what_startstate<numstartstates; what_startstate++) // { // nextstate = StartState(); // nextstate points to internal data at theworld.getstate() // if (p.compare(nextstate)) // return LastStateName(); // } Error.Notrace ("Internal: Cannot find startstate name for funny startstate"); return NULL; }
state *StartStateManager::NextStartState() { static int next_startstate = 0; if (next_startstate >= numstartstates) return NULL; what_startstate = next_startstate++; return StartState(); }
void StateMachine::OnStart() { for (auto& globalState : globalStates) { globalState->Start(); } if (currentState != nullptr) { StartState(currentState); } }
void StartStateManager::AllStartStates() { state *nextstate = NULL; for (what_startstate = 0; what_startstate < numstartstates; what_startstate++) { nextstate = StartState(); // nextstate points to internal data at theworld.getstate() (void) StateSet->Add(nextstate, FALSE, TRUE); } }
state *StartStateManager::RandomStartState() { what_startstate = (unsigned short) (random.next() % numstartstates); return StartState(); }
void CMainMenuSection::Reaction(long srcId, const CHamster_InitMainMenuResponse& out) { StartState(); }
void CGameSection::Reaction(long src, const CPreloaderSection_MatrixLoadResponse& in ) { m_pField->SetHamsterAnimation(in.m_pController); StartState(); }