PolycodeTemplateApp.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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. CoreServices::getInstance()->getConfig()->loadConfig("Polycode", "UIThemes/dark_retina/theme.xml");
  13. // Write your code here!
  14. srand(time(NULL));
  15. scene = new Scene(Scene::SCENE_2D);
  16. scene->useClearColor = true;
  17. scene->clearColor.setColor(1.0f / (float)(rand() % 5),1.0f / (float)(rand()%5),1.0f / (float)(rand() % 5),1.0f);
  18. test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
  19. test->setPositionY(0.2);
  20. test->setMaterialByName("Unlit");
  21. test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
  22. SceneLabel *testLabel = new SceneLabel("Hello Polycode!", 32, "sans", Label::ANTIALIAS_FULL, 0.2);
  23. testLabel->setPositionY(-0.2);
  24. scene->addChild(testLabel);
  25. /*ScenePrimitive* box;
  26. for(int i = 0; i < 1000; i++){
  27. box = new ScenePrimitive(ScenePrimitive::TYPE_BOX, 0.2, 0.2,0.2);
  28. box->setMaterialByName("UnlitUntextured");
  29. //box->setColor(1.0, 0.0,0.0, 1.0);
  30. //box->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "default/default.png");
  31. scene->addChild(box);
  32. }*/
  33. bgSound = new Sound("FightBG.wav");
  34. // bgSound->Play();
  35. // sound1 = new Sound("hit.wav");
  36. //Logger::log("before Play");
  37. //sound1->Play(true);
  38. //Logger::log("after Play");
  39. //sound1->setPitch(10);
  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_2D_TOPLEFT);
  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. UILabel *uiLabel = new UILabel("Text");
  57. game->addChild(uiLabel);
  58. btn = new UIButton("Press me!", 80);
  59. btn->setPosition(5, 70);
  60. game->addChild(btn);
  61. btn->addEventListener(this, UIEvent::CLICK_EVENT);
  62. Services()->getInput()->simulateMouseWithTouch = true;
  63. game->rootEntity.processInputEvents = true;*/
  64. Services()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);
  65. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_BEGAN);
  66. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_ENDED);
  67. Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_MOVED);
  68. Services()->getCore()->addEventListener(this, Core::EVENT_ACCELEROMETER_MOTION);
  69. Services()->getCore()->addEventListener(this, Core::EVENT_GYRO_ROTATION);
  70. }
  71. void PolycodeTemplateApp::handleEvent(Event *event) {
  72. if(event->getEventType()=="InputEvent"){
  73. InputEvent *inputEvent = (InputEvent*) event;
  74. if(inputEvent->getEventCode() == InputEvent::EVENT_KEYDOWN){
  75. //Logger::log("keyevent %d", inputEvent->getKey());
  76. switch(inputEvent->getKey()) {
  77. case KEY_ESCAPE:
  78. core->openOnScreenKeyboard(false);
  79. break;
  80. case KEY_z:
  81. //sound1->Play(true);
  82. break;
  83. case KEY_x:
  84. //sound2->Play();
  85. break;
  86. case KEY_c:
  87. //sound3->Play();
  88. break;
  89. }
  90. } else if (inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_BEGAN){
  91. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  92. test->setPosition(r.origin.x, r.origin.y);
  93. } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_ENDED){
  94. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  95. test->setPosition(r.origin.x, r.origin.y);
  96. } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_MOVED){
  97. Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
  98. test->setPosition(r.origin.x, r.origin.y);
  99. }
  100. } else if(event->getEventType() == "CoreMotionEvent"){
  101. CoreMotionEvent* motionEvent = (CoreMotionEvent*)event;
  102. if(motionEvent->getEventCode() == Core::EVENT_ACCELEROMETER_MOTION){
  103. } else if (motionEvent->getEventCode() == Core::EVENT_GYRO_ROTATION){
  104. test->Translate(motionEvent->amount.x*0.01, motionEvent->amount.y*0.01);
  105. }
  106. } else if(event->getEventType()=="UIEvent"){
  107. UIEvent* uiEvent = (UIEvent*)event;
  108. if(uiEvent->getDispatcher() == btn){
  109. Logger::log("hit");
  110. core->openOnScreenKeyboard(true);
  111. }
  112. }
  113. }
  114. PolycodeTemplateApp::~PolycodeTemplateApp() {
  115. }
  116. bool PolycodeTemplateApp::Update() {
  117. if (!core->paused) {
  118. running += core->getElapsed();
  119. if(running >= 1){
  120. fps->setText(String::NumberToString(core->getFPS(),0));
  121. running = 0;
  122. }
  123. return core->updateAndRender();
  124. } else {
  125. usleep(200000);
  126. return true;
  127. }
  128. }