PolycodeTemplateApp.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // Polycode template. Write your code here.
  3. //
  4. #include "PolycodeTemplateApp.h"
  5. #include "polycode/view/android/PolycodeView.h"
  6. PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
  7. core = new POLYCODE_CORE(view, 800,480,false,false, 0,0,60, -1, true);
  8. core->addFileSource("archive", "default.pak");
  9. core->addFileSource("folder", core->getDefaultWorkingDirectory());
  10. ResourcePool *globalPool = Services()->getResourceManager()->getGlobalPool();
  11. globalPool->loadResourcesFromFolder("default", true);
  12. // Write your code here!
  13. srand(time(NULL));
  14. scene = new Scene(Scene::SCENE_2D);
  15. scene->useClearColor = true;
  16. scene->clearColor.setColor(1.0f / (float)(rand() % 5),1.0f / (float)(rand()%5),1.0f / (float)(rand() % 5),1.0f);
  17. test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
  18. test->setPositionY(0.2);
  19. test->setMaterialByName("Unlit");
  20. test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
  21. SceneLabel *testLabel = new SceneLabel("Hello Polycode!", 32, "sans", Label::ANTIALIAS_FULL, 0.2);
  22. testLabel->setPositionY(-0.2);
  23. scene->addChild(testLabel);
  24. /*ScenePrimitive* box;
  25. for(int i = 0; i < 1000; i++){
  26. box = new ScenePrimitive(ScenePrimitive::TYPE_BOX, 0.2, 0.2,0.2);
  27. box->setMaterialByName("UnlitUntextured");
  28. //box->setColor(1.0, 0.0,0.0, 1.0);
  29. //box->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "default/default.png");
  30. scene->addChild(box);
  31. }*/
  32. bgSound = new Sound("FightBG.OGG");
  33. // bgSound->Play();
  34. // bgSound->setPitch(10.0);
  35. //sound1 = new Sound("hit.wav");
  36. //Logger::log("before Play");
  37. //sound1->Play(true);
  38. //Logger::log("after Play");
  39. // sound1->setPitch(2.3);
  40. // sound2 = new Sound("test.wav");
  41. // sound3 = new Sound("curve_02_c.wav");
  42. //sound2->Play(true);
  43. running = 0;
  44. rot = Vector3();
  45. fps = new SceneLabel("0", 32, "sans", Label::ANTIALIAS_FULL, 0.1);
  46. fps->setPosition(-0.6,0.3);
  47. scene->addChild(fps);
  48. scene->addChild(test);
  49. /*game = new Scene(Scene::SCENE_3D);
  50. game->useClearColor = true;
  51. game->getActiveCamera()->setPosition(0, 0, 10);
  52. box = new ScenePrimitive(ScenePrimitive::TYPE_BOX, 2, 2, 2);
  53. box->setMaterialByName("UnlitUntextured");
  54. box->setColor(0.1, 1.0, 1.0, 1.0);
  55. game->addChild(box);*/
  56. Services()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);
  57. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_BEGAN);
  58. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_ENDED);
  59. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_MOVED);
  60. Services()->getCore()->addEventListener(this, Core::EVENT_ACCELEROMETER_MOTION);
  61. Services()->getCore()->addEventListener(this, Core::EVENT_GYRO_ROTATION);
  62. }
  63. void PolycodeTemplateApp::handleEvent(Event *event) {
  64. if(event->getEventType()=="InputEvent"){
  65. InputEvent *inputEvent = (InputEvent*) event;
  66. if(inputEvent->getEventCode() == InputEvent::EVENT_KEYDOWN){
  67. switch(inputEvent->getKey()) {
  68. case KEY_z:
  69. sound1->Play(true);
  70. break;
  71. case KEY_x:
  72. sound2->Play();
  73. break;
  74. case KEY_c:
  75. sound3->Play();
  76. break;
  77. }
  78. } else if (inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_BEGAN){
  79. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  80. test->setPosition(r.origin.x, r.origin.y);
  81. } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_ENDED){
  82. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  83. test->setPosition(r.origin.x, r.origin.y);
  84. } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_MOVED){
  85. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  86. test->setPosition(r.origin.x, r.origin.y);
  87. }
  88. } else if(event->getEventType() == "CoreMotionEvent"){
  89. CoreMotionEvent* motionEvent = (CoreMotionEvent*)event;
  90. if(motionEvent->getEventCode() == Core::EVENT_ACCELEROMETER_MOTION){
  91. } else if (motionEvent->getEventCode() == Core::EVENT_GYRO_ROTATION){
  92. test->Translate(motionEvent->amount.x*0.01, motionEvent->amount.y*0.01);
  93. }
  94. }
  95. }
  96. PolycodeTemplateApp::~PolycodeTemplateApp() {
  97. }
  98. bool PolycodeTemplateApp::Update() {
  99. if (!core->paused) {
  100. running += core->getElapsed();
  101. if(running >= 1){
  102. fps->setText(String::NumberToString(core->getFPS(),0));
  103. running = 0;
  104. }
  105. return core->updateAndRender();
  106. } else {
  107. usleep(200000);
  108. return true;
  109. }
  110. }