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(); } }
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; } }
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(); } } }
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; }