示例#1
0
void Sparkman::setState(proto::Enemy e) {
  if (e.enemyState != e_.enemyState) {
    tics = 0;
  }
  e_ = e;
  setPosition(e_.pos);
  tics++;

  setFlipped(e_.o == proto::right);

  std::string image = "idle_1";
  switch (e.enemyState) {
    case proto::EnemyState::moving:
      image = "moving_" + std::to_string(tics);
      if (tics >= 7) tics = 0;
      break;
    case proto::EnemyState::jumping:
      image = "jumping_1";
      break;
    case proto::EnemyState::shooting:
    case proto::EnemyState::idle:
    case proto::EnemyState::guarded:
      break;
  }

  setImageName("enemies/sparkman/" + image + ".png");
}
示例#2
0
void Met::setState(proto::Enemy e) {
  if (e.enemyState != e_.enemyState) {
    tics = 0;
  }
  e_ = e;
  setPosition(e_.pos);
  tics++;

  setFlipped(e_.o == proto::left);

  std::string image = "idle_1";
  switch (e.enemyState) {
    case proto::EnemyState::moving:
      image = "moving_" + std::to_string(tics);
      if (tics >=  10) tics = 0;
      break;
    case proto::EnemyState::idle: break;
    case proto::EnemyState::shooting: return;
    case proto::EnemyState::jumping: image = "jumping_1"; break;
    case proto::EnemyState::guarded:
      image = "guarded_" + std::to_string(tics);
      if (tics >=  3) tics = 2;
      break;
  }
  setImageName("enemies/met/" + image + ".png");
}
示例#3
0
void Sniper::setState(proto::Enemy e) {
  if (e.enemyState != e_.enemyState) {
    tics = 0;
  }
  e_ = e;
  setPosition(e_.pos);
  tics++;

  setFlipped(e_.o == proto::right);

  std::string image = "unguarded";
  switch (e.enemyState) {
    case proto::EnemyState::moving: break;
    case proto::EnemyState::idle: break;
    case proto::EnemyState::shooting:
      image = "shooting_" + std::to_string(tics);
      if (tics >= 2) tics = 1;
      break;
    case proto::EnemyState::jumping:
      image = "jumping_" + std::to_string(tics);
      if (tics >= 2) tics = 1;
      break;
    case proto::EnemyState::guarded:
      image = "guarded_1";
      break;
  }
  setImageName("enemies/sniper/" + image + ".png");
}
示例#4
0
/**
 * @copydoc configure()
**/
AREXPORT void ArSick::configureShort(bool useSim, BaudRate baud,
				     Degrees deg, Increment incr)
{
  myUseSim = useSim;

  setPowerControlled(true);
  setFlipped(false);

  if (baud == BAUD9600)
    chooseAutoBaud("9600");
  else if (baud == BAUD19200)
    chooseAutoBaud("19200");
  else if (baud == BAUD38400)
    chooseAutoBaud("38400");
  else
    ArLog::log(ArLog::Normal, "%s: Bad baud choice", getName());

  if (deg == DEGREES180)
    chooseDegrees("180");
  if (deg == DEGREES100)
    chooseDegrees("100");
  else
    ArLog::log(ArLog::Normal, "%s: Bad degrees choice", getName());


  if (incr == INCREMENT_ONE)
    chooseIncrement("one");
  if (incr == INCREMENT_HALF)
    chooseIncrement("half");
  else
    ArLog::log(ArLog::Normal, "%s: Bad increment choice", getName());

}
示例#5
0
void PlayCard::flipInstantly()
{
    mIsFlipped = !mIsFlipped;
    if (isVisible())
    {
        // Hide the back and show the front:
        setFlipped(mIsFlipped);
    }
}
示例#6
0
/**
 * Manually set laser configuration options for connection. This must be called
 * only before connecting to the laser (not while the laser is connected).
 * This configuration is automatically performed if you are using
 * ArSimpleConnector to connect to the laser based on command line parameters,
 * so calling this function is only neccesary if you are not using
 * ArSimpleConnector, or you wish to always override ArSimpleConnector's
 * configuration. 
 *
 * (Don't forget, you must lock ArLMS2xx with lockDevice() if multiple threads
 * are accessing the ArLMS2xx, e.g. if you used runAsync().)
**/
AREXPORT void ArSick::configure(bool useSim, bool powerControl,
				bool laserFlipped, BaudRate baud,
				Degrees deg, Increment incr)
{
  configureShort(useSim, baud, deg, incr);

  setPowerControlled(powerControl);
  setFlipped(laserFlipped);
}
示例#7
0
    void Sprite::deserialize(const deserializedata* data)
    {
        inherited::deserialize(data);

        pugi::xml_node node = data->node;
        const char* res = node.attribute("resanim").as_string(0);
        if (res && *res)
        {
            int col = node.attribute("column").as_int(0);
            int row = node.attribute("row").as_int(0);
            AnimationFrame frame = data->factory->getFrame(res, col, row);
            setAnimFrame(frame);
        }

        setFlipped(node.attribute("flipX").as_bool(false), node.attribute("flipY").as_bool(false));
    }
示例#8
0
void Player::setState(proto::Player p) {
  if (p_.ps != p.ps) {
    tics = 0;
  }
  tics++;

  p_ = p;
  setPosition(p_.pos);

  setFlipped(p_.o == proto::left);

  std::string image = "idle_1";
  switch (p_.ps) {
    case proto::PlayerState::moving:
      image = "running_" + std::to_string(tics);
      if (tics >=  11) tics = 0;
      break;
    case proto::PlayerState::idle:
      break;
    case proto::PlayerState::shooting:
      image = "shooting_" + std::to_string(tics);
      if (tics >= 2) tics = 1;
      break;
    case proto::PlayerState::jumping:
      if (p.ps == proto::PlayerState::jumpingShooting) tics = 2;
      image = "jumping_" + std::to_string(tics);
      if (tics >= 3) tics = 2;
      break;
    case proto::PlayerState::jumpingShooting:
      image = "jumping_shooting_1";
      if (tics >= 3) tics = 2;
      break;
    case proto::PlayerState::climbing:
      image = "climbing_1";
      if (tics >= 10) image = "climbing_2";
      if (tics >= 20) tics = 0;
      break;
  }

  setImageName("player/" + image + ".png");
}
示例#9
0
AREXPORT bool ArLaser::laserPullUnsetParamsFromRobot(void)
{
  if (myRobot == NULL)
  {
    ArLog::log(ArLog::Normal, "%s: Trying to connect, but have no robot, continuing under the assumption this is intentional", getName());
    return true;
  }

  const ArRobotParams *params = myRobot->getRobotParams();
  if (params == NULL)
  {
    ArLog::log(ArLog::Terse, 
	       "%s: Robot has no params, cannot pull unset params from robot",
	       getName());
    return false;
  }

  const char *paramStr;
  char *endPtr;
  double paramDouble;
  int paramInt;
  bool paramBool;

  paramBool = params->getLaserFlipped(getLaserNumber());
  if (!myFlippedSet)
  {
    if (paramBool)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting flipped to true from robot params",
		 getName());
      setFlipped(true);
    }
    else if (!paramBool)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting flipped to false from robot params",
		 getName());
      setFlipped(false);
    }
  }

  paramInt = params->getLaserMaxRange(getLaserNumber());
  if (!myMaxRangeSet)
  {
    if(paramInt < 0)
    {
      ArLog::log(ArLog::Terse, "%s: LaserMaxRange in robot param file was negative but shouldn't be (it was '%d'), failing", getName(), paramInt);
      return false;
    }
    if (paramInt > 0)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting max range to %d from robot params",
		 getName(), paramInt);
      setMaxRange(paramInt);
    }
  }

  paramInt = params->getLaserCumulativeBufferSize(getLaserNumber());
  if (!myCumulativeBufferSizeSet)
  {
    if(paramInt < 0)
    {
      ArLog::log(ArLog::Terse, "%s: LaserCumulativeBufferSize in robot param file was negative but shouldn't be (it was '%d'), failing", getName(), paramInt);
      return false;
    }
    if (paramInt > 0)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting cumulative buffer size to %d from robot params",
		 getName(), paramInt);
      setCumulativeBufferSize(paramInt);
    }
  }

  paramStr = params->getLaserStartDegrees(getLaserNumber());
  if (canSetDegrees() && !myStartDegreesSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    paramDouble = strtod(paramStr, &endPtr);
    if(endPtr == paramStr)
    {
      ArLog::log(ArLog::Terse, "%s: LaserStartDegrees in robot param file was not a double (it was '%s'), failing", getName(), paramStr);
      return false;
    }
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting start degrees to %g from robot params",
	       getName(), paramDouble);
    setStartDegrees(paramDouble);
  }

  paramStr = params->getLaserEndDegrees(getLaserNumber());
  if (canSetDegrees() && !myEndDegreesSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    paramDouble = strtod(paramStr, &endPtr);
    if(endPtr == paramStr)
    {
      ArLog::log(ArLog::Terse, 
		 "%s: LaserEndDegrees in robot param file was not a double (it was '%s'), failing", 
		 getName(), paramStr);
      return false;
    }
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting end degrees to %g from robot params",
	       getName(), paramDouble);
    setEndDegrees(paramDouble);
  }

  paramStr = params->getLaserDegreesChoice(getLaserNumber());
  if (canChooseDegrees() && !myDegreesChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting degrees choice to %s from robot params",
	       getName(), paramStr);
    chooseDegrees(paramStr);
  }

  paramStr = params->getLaserIncrement(getLaserNumber());
  if (canSetDegrees() && !myIncrementSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    paramDouble = strtod(paramStr, &endPtr);
    if(endPtr == paramStr)
    {
      ArLog::log(ArLog::Terse, 
		 "%s: LaserIncrement in robot param file was not a double (it was '%s'), failing", 
		 getName(), paramStr);
      return false;
    }
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting increment to %g from robot params",
	       getName(), paramDouble);
    setIncrement(paramDouble);
  }

  paramStr = params->getLaserIncrementChoice(getLaserNumber());
  if (canChooseIncrement() && !myIncrementChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting increment choice to %s from robot params",
	       getName(), paramStr);
    chooseIncrement(paramStr);
  }

  paramStr = params->getLaserUnitsChoice(getLaserNumber());
  if (canChooseUnits() && !myUnitsChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting units choice to %s from robot params",
	       getName(), paramStr);
    chooseUnits(paramStr);
  }

  paramStr = params->getLaserReflectorBitsChoice(getLaserNumber());
  if (canChooseReflectorBits() && !myReflectorBitsChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting reflectorBits choice to %s from robot params",
	       getName(), paramStr);
    chooseReflectorBits(paramStr);
  }

  paramBool = params->getLaserPowerControlled(getLaserNumber());
  if (canSetPowerControlled() && !myPowerControlledSet)
  {
    if (paramBool)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting powerControlled to true from robot params",
		 getName());
      setPowerControlled(true);
    }
    else if (!paramBool)
    {
      ArLog::log(myInfoLogLevel, 
		 "%s: Setting powerControlled to false from robot params",
		 getName());
      setPowerControlled(false);
    }
  }

  paramStr = params->getLaserStartingBaudChoice(getLaserNumber());
  if (canChooseStartingBaud() && !myStartingBaudChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel,
	       "%s: Setting startingBaud choice to %s from robot params",
	       getName(), paramStr);
    chooseStartingBaud(paramStr);
  }

  paramStr = params->getLaserAutoBaudChoice(getLaserNumber());
  if (canChooseAutoBaud() && !myAutoBaudChoiceSet && 
      paramStr != NULL && paramStr[0] != '\0')
  {
    ArLog::log(myInfoLogLevel, 
	       "%s: Setting autoBaud choice to %s from robot params",
	       getName(), paramStr);
    chooseAutoBaud(paramStr);
  }

  if (!addIgnoreReadings(params->getLaserIgnore(getLaserNumber())))
    return false;

  setSensorPosition(params->getLaserX(getLaserNumber()), 
		    params->getLaserY(getLaserNumber()), 
		    params->getLaserTh(getLaserNumber()),
		    params->getLaserZ(getLaserNumber()));

  return true;
}
示例#10
0
AREXPORT void ArSick::setIsLaserFlipped(bool laserFlipped)
{
  setFlipped(laserFlipped);
}