예제 #1
0
int recalibrate(int start, int end){ //gets index of closest item in item range[start:end] 
    float shortdist = 100.0f;
    int index = -1;
    for(int i = start; i < end + 1; i++){
        if (itemBool[i] == -1) {
            temp[0] = distance(items[i], me) / MY_SPEED;
            if (temp[0] * MY_SPEED < shortdist && temp[0] < getETA(other, items[i])) {
                shortdist = distance(me, items[i]);
                index = i;
            }
        }
    }
    return index;
}
예제 #2
0
void Move::createFrame(Frame * f, int pos)
{
  Game* game = Game::getGame();
  IGObject* obj = game->getObjectManager()->getObject(game->getOrderManager()->getOrderQueue(orderqueueid)->getObjectId());
  if(obj != NULL){
    turns = getETA(obj);
    game->getObjectManager()->doneWithObject(obj->getID());
  }else{
    turns = 0;
    Logger::getLogger()->error("Move create frame: object not found, id = %d", obj->getID());
  }
  
  Order::createFrame(f, pos);	
}
예제 #3
0
파일: Plan.cpp 프로젝트: FreddyFox/dune
    float
    Plan::updateProgress(const IMC::ManeuverControlState* mcs)
    {
      float prog = progress(mcs);

      if (prog >= 0.0 && m_sched != NULL)
      {
        if (!m_beyond_dur)
          m_sched->updateSchedule(getETA());
        else // if we're beyond computed durations, flush all timed actions
          m_sched->flushTimed();
      }

      return prog;
    }
예제 #4
0
/* Figures out the index of an element of a 2D array that is closest to me
 * Arguments: 2D array, me, beginning index (inclusive), ending index
 * (exclusive)
 *
 * Returns the index of the element in the 2D array closest to me
 * Returns -1 if no items are avaliable
 */
int minDistEl(float choices[][3], float me[], int beginning, int end) {
    int result = -1;
    float minDist = 101.0f;
    for (n = beginning ; n < end ; n++) {
        if (itemPossession[n] == -1) {
            temp[0] = distance(choices[n], me) / MY_SPEED;
            if (temp[0] * MY_SPEED < minDist && temp[0] < getETA(other, items[n])) {
                minDist = distance(choices[n], me);
                result = n;
            }
        }
    }
    if (minDist > 100) {
        return -1;
    }
    return result;
}
예제 #5
0
void Road::startRoad()
{
	reloj.restart();
	setETA();
	initialDurationEstimation = getETA();
}
예제 #6
0
int Fleet::getEstimatedRationsNeeded()
{
    return getETA() * getNumSailors();
}