Пример #1
0
/**
 * 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);
    }
}
Пример #3
0
/**
 * One frame of logic for this behavior
 */
void BehaviorStandard::logic() {

	doUpkeep();
	findTarget();
	checkPower();
	checkMove();
	updateState();

}
Пример #4
0
/**
 * 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 );
}
Пример #6
0
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);

}
Пример #7
0
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);
}