void Snake::hitByBullet(std::vector<SnakeNode>::iterator nodeHit) { if (fireClock_.getElapsedTime() - lastTimeShot_ >= TakeDamageDelay) { life_ -= 10; lastTimeShot_ = fireClock_.getElapsedTime(); particleSystem_.addEmitter(createEmitter(nodeHit->getPosition()), sf::milliseconds(200)); } }
void resetEmitters(void) { // called on engine startup, and between states. preps emitters for first use int i; for (i = 0; i < MAX_EMITTERS; ++i) { createEmitter(&emitter[i]); } }
CEvent::CEvent(CEntity &owner, const tinyxml2::XMLElement *pElement) : m_sID(Attribute(pElement, "id", "unset id")), m_eRepeatType(REPEAT_TYPES_MAP.parseString(Attribute(pElement, "repeat", "none"))), m_fRepeatTime(RealAttribute(pElement, "time", 0)), m_fTimer(0), m_Owner(owner), m_bStarted(BoolAttribute(pElement, "started", false)) { for (const tinyxml2::XMLElement *pChildElem = pElement->FirstChildElement(); pChildElem; pChildElem = pChildElem->NextSiblingElement()) { if (strcmp(pChildElem->Value(), "emitter") == 0) { m_lEmitter.push_back(createEmitter(pChildElem, *this)); } else if (strcmp(pChildElem->Value(), "action") == 0) { m_lActions.push_back(createAction(pChildElem, *this)); } else { throw Ogre::Exception(0, "Unknown event child '" + std::string(pChildElem->Value()) + "'", __FILE__); } } }
struct EMITTER *getNewEmitter(float x, float y, float duration, float frequency, int number, void (*executeEmitterFunction)(float x, float y)) { /* make new particle emitter - null if we can't get one */ struct EMITTER *e; int i; for (i = 0; i < MAX_EMITTERS; ++i) { if (!emitter[i].executeEmitterFunction) { e = &emitter[i]; createEmitter(e); e->x = x; e->y = y; e->__internal__duration = (duration * 60); e->__internal__frequency = (frequency * 60); e->number = number; e->executeEmitterFunction = executeEmitterFunction; return e; } } return NULL; }