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"); }
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"); }
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"); }
/** * @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()); }
void PlayCard::flipInstantly() { mIsFlipped = !mIsFlipped; if (isVisible()) { // Hide the back and show the front: setFlipped(mIsFlipped); } }
/** * 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); }
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)); }
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"); }
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; }
AREXPORT void ArSick::setIsLaserFlipped(bool laserFlipped) { setFlipped(laserFlipped); }