HelloPolycodeApp.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "HelloPolycodeApp.h"
  2. HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
  3. core = new POLYCODE_CORE(view, 640,480,false,true,0,0,90, 0, true);
  4. CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
  5. CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
  6. scene = new PhysicsScene2D(0.1, 60);
  7. ScenePrimitive *shape = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 1.0,0.05);
  8. shape->setColor(0.0,0.0,0.1,1.0);
  9. shape->setPosition(0, -0.3);
  10. scene->addPhysicsChild(shape, PhysicsScene2DEntity::ENTITY_RECT, true);
  11. for(int i=0; i < 50; i++) {
  12. shape = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.08,0.02);
  13. shape->setRoll(rand() % 360);
  14. shape->setColor(RANDOM_NUMBER, RANDOM_NUMBER, RANDOM_NUMBER, 1.0);
  15. shape->setPosition(-0.3 + (RANDOM_NUMBER*0.6), RANDOM_NUMBER);
  16. scene->addPhysicsChild(shape, PhysicsScene2DEntity::ENTITY_RECT, false);
  17. }
  18. collisionSound = new Sound("Resources/hit.wav");
  19. scene->addEventListener(this, PhysicsScene2DEvent::EVENT_SOLVE_SHAPE_COLLISION);
  20. }
  21. void HelloPolycodeApp::handleEvent(Event *e) {
  22. if(e->getDispatcher() == scene) {
  23. switch(e->getEventCode()) {
  24. case PhysicsScene2DEvent::EVENT_SOLVE_SHAPE_COLLISION:
  25. PhysicsScene2DEvent *pe = (PhysicsScene2DEvent*)e;
  26. if(pe->impactStrength > 1.0)
  27. collisionSound->Play();
  28. break;
  29. }
  30. }
  31. }
  32. HelloPolycodeApp::~HelloPolycodeApp() {
  33. }
  34. bool HelloPolycodeApp::Update() {
  35. return core->updateAndRender();
  36. }