Exemple #1
0
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;
}
Exemple #3
0
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);
    }
}
Exemple #5
0
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);
}
Exemple #6
0
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();
}
Exemple #8
0
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;
    }
}