void WealthEffect::createEffect1(const char* spriteFrameName,int count,float scale,Vec2 startPoint,Vec2 stopPoint) { auto findIter=_animateMap.find(spriteFrameName); if (findIter==_animateMap.end()) return; Animate* animate=findIter->second; Sprite* effectSprite; Vec2 position; auto runningScene=Director::getInstance()->getRunningScene(); ExplosionData* explosionData; for (int i=0; i<count; ++i) { effectSprite=Sprite::create(); effectSprite->setScale(scale); runningScene->addChild(effectSprite,_localZOrder); position.x=startPoint.x+rand_minus1_1()*50; position.y=startPoint.y+rand_minus1_1()*20; explosionData=new ExplosionData; explosionData->_explosionSprite=effectSprite; explosionData->delayTime=0.03*rand_0_1(); explosionData->stage=0; explosionData->_animate=animate; explosionData->_startPoint=position; explosionData->_stopPoint=stopPoint; explosionData->ID=5; explosionData->_speed=Vec2(0,0); explosionData->_acceleration=Vec2(0,-2000);; position.y+=100; effectSprite->setPosition(position); _explosionDataVector.push_back(explosionData); } startEffect(); }
void ScreenEffectsManager::startShaking(float duration, float amount) { startEffect(SHAKING_EFFECT, duration, amount); }
int main(int argc, char* argv[]) { logger = new Logger(); // parse options; set some defaults; control required ones parseOptions(argc, argv, options); if (options.printHelpAndExit) { printHelp(); return(0); } if (options.effectX == 0) options.effectX = options.winWidth / 2; if (options.effectY == 0) options.effectY = options.winHeight / 2; if (options.effectFile.empty()) { logger->error("Please, specify particle effect definition file."); return(1); } PHYSFS_init(argv[0]); logger->log("-> initialize engine"); initEngine(); effectViewer->setEffectPosition(options.effectX, options.effectY); effectViewer->setBackgroundColour(options.backgroundColour); startEffect(); logger->log("-> game loop"); SDL_Event event; bool quit = false; // event loop while (true) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { quit = true; } else if (event.type == SDL_KEYDOWN) { switch (event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_q: quit = true; case SDLK_r: // start new effect startEffect(); break; case SDLK_n: // delete all particles and start new effect effectViewer->cleanParticles(); startEffect(); break; } } } // std::cout << m->getNumSprites() << std::endl; gui->logic(); gui->draw(); graphics->updateScreen(); // end if particle effect has ended if (effectViewer->isEffectOver()) { if (options.quitOnEffectEnd) { quit = true; } else if (options.loop) { startEffect(); } } if (quit) { break; } SDL_Delay(10); } logger->log("-> game loop ended"); logger->log("-> exit engine"); exitEngine(); logger->log("-> done."); delete logger; PHYSFS_deinit(); return(0); }