nt main(void) { string select; WorldClock worldClock; while(true) { cin>>select; if(select=="set") { try{ cin>>worldClock; cout<<worldClock<<endl; }catch(InvalidTimeException iserr) { cout<<"Invalid time: "<<iserr.input_time<<endl; } } else if(select=="tick") { int second; cin>>second; worldClock.Tick(second); cout<<worldClock<<endl; }
ostream& operator<<(ostream& os, const WorldClock& c) { WorldClock temp = c; temp.Tick(temp.time_difference()*secondOfTime); os << temp.hour() << ":" << temp.minute() << ":" << temp.second(); if (temp.time_difference() >= 0) os << " (+" << temp.time_difference() << ")"; else os << " (" << temp.time_difference() << ")"; return os; }
int main() { WorldClock clock; string cmd; while (cmd != "quit") { cin >> cmd; try { if (cmd == "set") { cin >> clock; cout << clock << endl; } else if (cmd == "tick") { int tick = 1; cin >> tick; clock.Tick(tick); cout << clock << endl; } else if (cmd == "set_timezone") {
void IMSystemManager::Update(const WorldClock& p_clock) { for (IMContainer::iterator itr = m_managedMaps.begin(); itr != m_managedMaps.end(); ++itr) { switch (itr->first) { case IM_BuildingData: if (p_clock.ElapsedGameCycles() % m_params.OccupanceIMUpdateInterval != 0) continue; break; case IM_GroundControl: if (p_clock.ElapsedGameCycles() % m_params.GrndCtrlIMUpdateInterval != 0) continue; break; } itr->second->Update(p_clock); } }
bool Action::IsCurrentStateTimeout(const WorldClock& p_clock) { unsigned timeout = _stateTimeout[INDEX(_state, ExecutionStateType)]; unsigned startTime = _stateStartTime[INDEX(_state, ExecutionStateType)]; // 0 means no timeout and thus meaning infinite timeout if (timeout == 0) return false; else return ((p_clock.ElapsedGameCycles() - startTime) > timeout); }
void PlanStepEx::State(ExecutionStateType p_state, RtsGame& game, const WorldClock& p_clock) { string stepName = ToString(); const char* oldStateName = Enums[_state]; const char* newStateName = Enums[p_state]; LogInfo("%s: '%s'->'%s'", stepName.c_str(), oldStateName, newStateName); _stateStartTime[INDEX(p_state, ExecutionStateType)] = p_clock.ElapsedMilliseconds(); _state = p_state; }
void IMSystemManager::Update(const WorldClock& p_clock) { unsigned elapsedTimeSinceLastUpdateMs = p_clock.ElapsedMilliseconds() - m_lastUpdateTimeMs; for (IMContainer::iterator itr = m_managedMaps.begin(); itr != m_managedMaps.end(); ++itr) { switch (itr->first) { case IM_BuildingData: if (elapsedTimeSinceLastUpdateMs > m_params.OccupanceIMUpdateInterval) continue; break; case IM_GroundControl: if (elapsedTimeSinceLastUpdateMs > m_params.GrndCtrlIMUpdateInterval) continue; break; } itr->second->Update(p_clock); } m_lastUpdateTimeMs = p_clock.ElapsedMilliseconds(); }
void Action::SetState(ExecutionStateType p_state, RtsGame& game, const WorldClock& p_clock) { PlanStepEx::SetState(p_state, game, p_clock); _stateStartTime[INDEX(p_state, ExecutionStateType)] = p_clock.ElapsedGameCycles(); switch (p_state) { case ESTATE_Succeeded: OnSucccess(game, p_clock); break; case ESTATE_Failed: OnFailure(game, p_clock); break; } }