Exemple #1
0
void AISystem::basicAI(entityx::Entity &e) {
  world->currLevel->calculateMaps();
  world->currLevel->computeMovesTo(target_x, target_y);

  if (canSee(e) && canMoveToward(e)) {
    moveToward(e);
  }
  // if (failMoraleCheck() && canMoveAway()) {
  //   moveAway();
  // } else if (hasRangedAttack() && canMoveToward(e)) {
  //   if (decideToCharge()) {
  //     moveToward(e);
  //   } else {
  //     rangedAttack();
  //   }
  // } else if (canAttack() && hasRangedAttack() && canMoveAway()) {
  //   if (decideToRetreat()) {
  //     moveAway();
  //   } else {
  //     attack();
  //   }
  // } else if (canAttack()) {
  //   attack();
  // } else if (canMoveToward(e)) {
  //   moveToward(e);
  // } else {
  //   wait();
  // }
}
Exemple #2
0
void ItemContainer::move(State::Way w)
{
	if(moveMessageList.empty()){
		moveMessageList.push_back(w);
		moveToward(w);
	}else
		moveMessageList.push_back(w);
}
Exemple #3
0
void ItemContainer::processNextMove()
{
	moveMessageList.pop_front();
    if(moveMessageList.empty())
        return;
    else{
        moveToward(moveMessageList.first());
    }
}
Exemple #4
0
void Hostile::updateTarget( std::vector< Actor* > p_actorlist )
{
	Sint32 _closest = -1;
	for ( Uint16 i = 0; i < p_actorlist.size(); i++ )
	{
		if ( m_actorID == i )
			continue;
		if ( _closest == -1 || ( p_actorlist[i]->getPosition() - getPosition() ).getLength() < ( p_actorlist[_closest]->getPosition() - getPosition() ).getLength() )
			_closest = i;
	}
	if ( _closest != -1 && ( p_actorlist[_closest]->getPosition() - getPosition() ).getLength() < 300 && ( p_actorlist[_closest]->getPosition() - getPosition() ).getLength() > 0 )
	{
		moveToward( p_actorlist[_closest]->getPosition() );
	}
}