Esempio n. 1
0
void SpaceZombie::performAttacking(float delta)
{
	Shield* shield = Shield::getShieldSingleton();
	float r, x, y;
	shield->getCenterAndRadius(r, x, y);
	if( m_sprite->boundingBox().containsPoint(ccp(x,y)) )
	{
		shield->onHurt(100.0*delta);
	}
	else
	{
		m_state1 = en_ZombieMoving;
		NOTIFY->postNotification(kZombieLeaveMessage, NULL);
		updateState2();
	}
}
Esempio n. 2
0
void HINT_update () {
	int time;
	if (toneon) {
		if (CINT_time > toneledstop) {
			toneledon = !toneledon;
			LED_setOn(5, toneledon);
			toneledstop = CINT_time + 166;
		}
	}
	if (lastButtonPress[10].pressed) {
		time = CINT_time - lastButtonPress[10].time;
		if (time > 10000) {
			LED_setOn(3, 1);
			STK_delay(2000);
			reset();
			return;
		} else if (time > 5000) {
			if (CINT_time > warnstop) {
				switch (time / 1000) {
					case 9: warnstop = CINT_time + 56;  break; 
					case 8: warnstop = CINT_time + 62;  break; 
					case 7: warnstop = CINT_time + 71;  break; 
					case 6: warnstop = CINT_time + 83;  break; 
					case 5: warnstop = CINT_time + 100; break; 
				}
				warnon = !warnon;
				LED_setOn(4, warnon);
			}
		}
	}
	switch (state) {
		case 0: updateState0(); break;
		case 1: updateState1(); break;
		case 2: updateState2(); break;
		default: break;
	}
}
Esempio n. 3
0
void SpaceZombie::hit(float v1x, float v1y, float m1)
{
	char msg[128];
	sprintf(msg,"Before hit, direction: %f, %f", m_direction.x, m_direction.y);
//	CCLOG(msg);
	CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("music/crash1.wav");
	updateState2();

	if(m_state2 == en_Floating)
	{
		float v2x = getSpeedX();
		float v2y = getSpeedY();

		m_direction.x = -m_direction.x;
		m_direction.y = -m_direction.y;
		m_speed = kZombieSpeedFlyAway;

		m_sprite->stopAllActions();
		m_sprite->runAction(createFlyAwayAction());
		
		m_state1 = en_ZombieFlyAway;
		scoreChanged();

		sprintf(msg,"After hit, direction: %f, %f", m_direction.x, m_direction.y);
		//CCLOG(msg);
	}
	else if(m_state2 == en_InShield)
	{
		m_hp -= m1;
		if(m_hp <= 0)
		{
			m_facingLeft = v1x < 0 ? true : false;
			scoreChanged();
			performDead();
		}
	}
}
Esempio n. 4
0
bool SpaceZombie::init(ZombieType type, CCPoint pos)
{
	bool bRet = false;

	do{
		m_type = type;
		m_state1 = en_ZombieMoving;
		m_facingLeft = true;
		m_weight = kZombieWeight;
		m_aicount = 0;

		CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadEffect("music/crash1.wav");

		char name[64], picture[64];
		int numFrames;
		switch(type)
		{
		case en_BucketheadZombie:
			numFrames = 15;
			m_speed = kZombieSpeedFloating;
			m_hp = 100;
			m_ai = 20;
			strcpy(name, "BucketheadZombie");
			break;
		case en_ConeheadZombie:
			numFrames = 21;
			m_speed = kZombieSpeedFloating;
			m_hp = 100;
			m_ai = 40;
			strcpy(name, "ConeheadZombie");
			break;
		case en_FlagZombie:
			numFrames = 12;
			m_speed = kZombieSpeedFloating;
			m_hp = 100;
			m_ai = 80;
			strcpy(name, "FlagZombie");
			break;
		case en_NormalZombie:
			numFrames = 22;
			m_speed = kZombieSpeedFloating;
			m_hp = 100;
			m_ai = 10;
			strcpy(name, "zombie");
			break;
		default:
			numFrames = 22;
			m_speed = kZombieSpeedFloating;
			m_hp = 100;
			m_ai = 10;
			strcpy(name, "zombie");
			break;
		}

		sprintf(picture, "%s%03d.png", name, 1);

		m_sprite = CCSprite::createWithSpriteFrameName(picture);
		m_sprite->setPosition(pos);
		m_sprite->setScale(2.0);

		m_sprite->runAction(createFloatingAction());

		Shield *shield = Shield::getShieldSingleton();
		float r, x, y;
		shield->getCenterAndRadius(r, x, y);

		m_direction = ccp(x-pos.x, y-pos.y);

		updateState2();

		normalize(m_direction);
		updateFacing();

		scheduleUpdate();

		bRet = true;
	}while(0);

	return bRet;
}