/** * One frame of logic for this behavior */ void BehaviorStandard::logic() { // skip all logic if the enemy is dead and no longer animating if (e->stats.corpse) { if (e->stats.corpse_ticks > 0) e->stats.corpse_ticks--; return; } if (!e->stats.hero_ally) { if (calcDist(e->stats.pos, pc->stats.pos) <= ENCOUNTER_DIST) e->stats.encountered = true; if (!e->stats.encountered) return; } doUpkeep(); findTarget(); checkPower(); checkMove(); updateState(); fleeing = false; }
void ProjectorShutterBlock::onMessageReceived() { QByteArray data = m_tcpSocket->readAll(); if (data.startsWith(QString("PJLINK 0").toUtf8())) { // -> connection established, no authentication required m_authenticationToken = ""; m_authenticated = true; m_passwordIsWrong = false; sendCommand("%1NAME ?\r"); } else if (data.startsWith(QString("PJLINK 1").toUtf8())) { // -> connection established, received random number for authentification if (data.size() < 18) { qWarning() << "Received invalid response from projector."; return; } QString randomNumber = data.mid(9, 8); m_authenticationToken = md5(randomNumber + m_password); m_authenticated = true; m_passwordIsWrong = false; sendCommand("%1NAME ?\r"); } else if (data.startsWith(QString("PJLINK ERRA").toUtf8())) { m_authenticated = false; m_passwordIsWrong = true; } else if (data.startsWith(QString("%1NAME=").toUtf8())) { m_projectorName = QString::fromUtf8(data.mid(7, data.size() - 8)); checkPower(); } else if (data.endsWith(QString("=OK\r").toUtf8())) { // ignore } else if (data.endsWith(QString("=ERR1\r").toUtf8())) { qDebug() << "Projector reports undefined command."; } else if (data.endsWith(QString("=ERR2\r").toUtf8())) { qDebug() << "Projector reports out-of-parameter."; } else if (data.endsWith(QString("=ERR3\r").toUtf8())) { qWarning() << "Projector unavailable."; } else if (data.endsWith(QString("=ERR4\r").toUtf8())) { qWarning() << "Projector reports failure."; } else if (data.startsWith(QString("%1POWR=").toUtf8())) { if (data.size() < 9) { qWarning() << "Projector responded with invalid power status."; return; } m_powerStatus = QString(data.mid(7, 1)).toInt(); } else if (data.startsWith(QString("%1AVMT=").toUtf8())) { if (data.size() < 10) { qWarning() << "Projector responded with invalid shutter status."; return; } m_shutterIsOpen = data.mid(7, 2) == QString("30").toUtf8() // audio and video mute OFF || data.mid(7, 2) == QString("21").toUtf8(); // audio mute ON video mute OFF } else { qDebug() << "Received response from projector:" << QString::fromUtf8(data); } }
/** * One frame of logic for this behavior */ void BehaviorStandard::logic() { doUpkeep(); findTarget(); checkPower(); checkMove(); updateState(); }
/** * One frame of logic for this behavior */ void BehaviorStandard::logic() { // skip all logic if the enemy is dead and no longer animating if (e->stats.corpse) { if (e->stats.corpse_ticks > 0) e->stats.corpse_ticks--; return; } doUpkeep(); findTarget(); checkPower(); checkMove(); updateState(); }
void HHChannelBase::setZpower( const Eref& e, double power ) { if ( checkPower( power ) ) vSetZpower( e, power ); }
void LX200_16::ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n) { int index; int err; if (strcmp (dev, thisDevice)) return; if (!strcmp(name, FanStatusSw.name)) { if (checkPower(&FanStatusSw)) return; IUResetSwitches(&FanStatusSw); IUUpdateSwitches(&FanStatusSw, states, names, n); index = getOnSwitch(&FanStatusSw); if (index == 0) { if ( (err = turnFanOn()) < 0) { handleError(&FanStatusSw, err, "Changing fan status"); return; } } else { if ( (err = turnFanOff()) < 0) { handleError(&FanStatusSw, err, "Changing fan status"); return; } } FanStatusSw.s = IPS_OK; IDSetSwitch (&FanStatusSw, index == 0 ? "Fan is ON" : "Fan is OFF"); return; } if (!strcmp(name, HomeSearchSw.name)) { if (checkPower(&HomeSearchSw)) return; IUResetSwitches(&HomeSearchSw); IUUpdateSwitches(&HomeSearchSw, states, names, n); index = getOnSwitch(&HomeSearchSw); index == 0 ? seekHomeAndSave() : seekHomeAndSet(); HomeSearchSw.s = IPS_BUSY; IDSetSwitch (&HomeSearchSw, index == 0 ? "Seek Home and Save" : "Seek Home and Set"); return; } if (!strcmp(name, FieldDeRotatorSw.name)) { if (checkPower(&FieldDeRotatorSw)) return; IUResetSwitches(&FieldDeRotatorSw); IUUpdateSwitches(&FieldDeRotatorSw, states, names, n); index = getOnSwitch(&FieldDeRotatorSw); index == 0 ? seekHomeAndSave() : seekHomeAndSet(); FieldDeRotatorSw.s = IPS_OK; IDSetSwitch (&FieldDeRotatorSw, index == 0 ? "Field deRotator is ON" : "Field deRotator is OFF"); return; } LX200Autostar::ISNewSwitch (dev, name, states, names, n); }
void LX200_16::ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) { double newAlt=0, newAz=0; char altStr[64], azStr[64]; int err; // ignore if not ours // if (strcmp (dev, thisDevice)) return; if ( !strcmp (name, horNum.name) ) { int i=0, nset=0; if (checkPower(&horNum)) return; for (nset = i = 0; i < n; i++) { INumber *horp = IUFindNumber (&horNum, names[i]); if (horp == &hor[0]) { newAlt = values[i]; nset += newAlt >= -90. && newAlt <= 90.0; } else if (horp == &hor[1]) { newAz = values[i]; nset += newAz >= 0. && newAz <= 360.0; } } if (nset == 2) { if ( (err = setObjAz(newAz)) < 0 || (err = setObjAlt(newAlt)) < 0) { handleError(&horNum, err, "Setting Alt/Az"); return; } horNum.s = IPS_OK; //horNum.n[0].value = values[0]; //horNum.n[1].value = values[1]; targetAz = newAz; targetAlt = newAlt; fs_sexa(azStr, targetAz, 2, 3600); fs_sexa(altStr, targetAlt, 2, 3600); IDSetNumber (&horNum, "Attempting to slew to Alt %s - Az %s", altStr, azStr); handleAltAzSlew(); } else { horNum.s = IPS_IDLE; IDSetNumber(&horNum, "Altitude or Azimuth missing or invalid"); } return; } LX200Autostar::ISNewNumber (dev, name, values, names, n); }