/**
 * @brief
 *
 * @param path
 * @return bool
 */
bool NewRoboControl::drivePath(std::vector<Position>* path)
{
    Position *target = NULL;
    for (std::vector<Position>::iterator it = path->begin() ; it != path->end() ; it++)
    {
        target = &(*it);
        if (!IsOnTarget(*target, false))
        {
            double d = 0;
            Position prevPos = GetPos();
            for (; it != path->end() ; it++)
            {
                Position pos = *it;
                d += pos.DistanceTo(prevPos);
                prevPos = pos;
            }

            return cruisetoBias(target->GetX(), target->GetY(), 700, -10, 30, d);
        }
    }

    if (!target || IsOnTarget(*target))
    {
        RandomMove();
        return true;
    }

    return cruisetoBias(target->GetX(), target->GetY(), 600);
}
Exemple #2
0
            void UpdateAI(const uint32 diff)
            { 
                events.Update(diff);

                switch (events.ExecuteEvent())
                {
                    case EVENT_MOVE_RANDOM:
                        RandomMove();
                        events.ScheduleEvent(EVENT_MOVE_RANDOM, urand(4000,12000));
                        break;
                    case EVENT_FORCE_OF_WILL:
                        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80.0f, true))
                        {
                            me->SetFacingTo(me->GetAngle(target));
                            DoCast(target,SPELL_FORCE_OF_WILL);
                        }
                        //DoCast(SPELL_FORCE_OF_WILL);
                        if (Creature* durumu = ObjectAccessor::GetCreature(*me, FindDurumuGUID(me)))
                            durumu->GetAI()->DoAction(ACTION_SAY_FORCE_OF_WILL);

                        events.ScheduleEvent(EVENT_FORCE_OF_WILL, 20000);
                        break;
                   case EVENT_LINGERING_GAZE:
                        for (uint8 i=0;i<=1;++i)
                            if (Player* target = ObjectAccessor::GetPlayer(*me, SelecGUIDtRandomPlayerInRage(me,100.0f, true)))
                                DoCast(target,SPELL_LINGERING_GAZE_MARKER);

                        DoCast(SPELL_LINGERING_GAZE_CAST);
                        events.ScheduleEvent(EVENT_LINGERING_GAZE, 45000);
                        break;
                   case EVENT_DRAIN_LIFE:
                       if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 80.0f, true))
                       {
                           DoCast(target,SPELL_DRAIN_LIFE_STUN);
                           DoCast(target,SPELL_DRAIN_LIFE_CHANNEL);
                       }
                       break;
                   case EVENT_DRAIN_LIFE_TAR_CHECK:
                       CheckBetweenPlayerAndDmg();
                       events.ScheduleEvent(EVENT_DRAIN_LIFE_TAR_CHECK, 1500);
                       break;
                   case EVENT_EYES_ORIENTATION:
                        if (Unit* target = ObjectAccessor::GetUnit(*me, SelectBeamTargetGuid()))
                            me->SetFacingToObject(target);

                       if (me->GetEntry() != YELLOW_EYE)
                           TrySearchFogs();

                       events.ScheduleEvent(EVENT_EYES_ORIENTATION, 200);
                       break;
                   default:
                        break;
                }

            }
Exemple #3
0
void MainScene::CreateObjects()
{
	Size visibleSize = Director::getInstance()->getVisibleSize();
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	std::ifstream ifs("UploadObjects.txt");
	int k = 0;
	for (int i = 0; i < 10; ++i)
	for (int j = 0; j < 10; ++j)
	{
		ifs >> a[i][j];
		switch (a[i][j])
		{
		case BONUSTYPE_FLOWER:
			bObjTmp = (BonusObject*)Sprite::create("flower.png");
			bObjTmp->setPosition(j * 32 + 16, i * 32 + 16);
			bObjTmp->setType(BONUSTYPE_FLOWER);
			bonusObjects.pushBack(bObjTmp);
			this->addChild(bObjTmp, 1);
			break;
		case BONUSTYPE_BONE:
			bObjTmp = (BonusObject*)Sprite::create("bone.png");
			bObjTmp->setPosition(j * 32 + 16, i * 32 + 16);
			bObjTmp->setType(BONUSTYPE_BONE);
			bonusObjects.pushBack(bObjTmp);
			this->addChild(bObjTmp, 2);
			break;
		case BONUSTYPE_CACTUS:
			bObjTmp = (BonusObject*)Sprite::create("cactus.png");
			bObjTmp->setPosition(j * 32 + 16, i * 32 + 16);
			bObjTmp->setType(BONUSTYPE_CACTUS);
			bonusObjects.pushBack(bObjTmp);
			this->addChild(bObjTmp, 3);
			break;
		case 4:
			myCat->setPosition(j * 32 + 16, i * 32 + 16);
			break;
		case 5:
			cObjTmp = (BonusObject*)Sprite::create("Player.png");
			cObjTmp->setPosition(j * 32 + 16, i * 32 + 16);
			cObjTmp->setType(BONUSTYPE_PLAYER);
			bonusObjects.pushBack(cObjTmp);
			RandomMove();
			this->addChild(cObjTmp, 5);

			/*myPerson = Sprite::create("Player.png");
			myPerson->setPosition(j * 32 + 16, i * 32 + 16);
			RandomMove();
			this->addChild(myPerson, 5);*/
			break;
		default: break;
		}
	}
}
void CAIThread::GetMoveTarget()
{
	// TODO: Make this more better
	if ( m_pAttackTarget == NULL )
	{
		RandomMove();
	}
	else
	{
		MoveToEntity( m_pAttackTarget );
	}
	// m_pMoveTarget should never be NULL when exiting this function
	ASSERT( m_pMoveTarget != NULL );
}
void ClientSession::HandleMapLoaded(QString& /*packet*/)
{
    // make character moving randomly on map
    RandomMove();
}