| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- //
- // Polycode template. Write your code here.
- //
- #include "PolycodeTemplateApp.h"
- #include "polycode/view/android/PolycodeView.h"
- PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
- core = new POLYCODE_CORE(view, 800,480,false,false, 0,0,60, -1, true);
- core->addFileSource("archive", "default.pak");
- core->addFileSource("folder", core->getDefaultWorkingDirectory());
- ResourcePool *globalPool = Services()->getResourceManager()->getGlobalPool();
- globalPool->loadResourcesFromFolder("default", true);
- CoreServices::getInstance()->getConfig()->loadConfig("Polycode", "UIThemes/dark_retina/theme.xml");
- // Write your code here!
- srand(time(NULL));
- scene = new Scene(Scene::SCENE_2D);
- scene->useClearColor = true;
- scene->clearColor.setColor(1.0f / (float)(rand() % 5),1.0f / (float)(rand()%5),1.0f / (float)(rand() % 5),1.0f);
- test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
- test->setPositionY(0.2);
- test->setMaterialByName("Unlit");
- test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
- SceneLabel *testLabel = new SceneLabel("Hello Polycode!", 32, "sans", Label::ANTIALIAS_FULL, 0.2);
- testLabel->setPositionY(-0.2);
- scene->addChild(testLabel);
- /*ScenePrimitive* box;
- for(int i = 0; i < 1000; i++){
- box = new ScenePrimitive(ScenePrimitive::TYPE_BOX, 0.2, 0.2,0.2);
- box->setMaterialByName("UnlitUntextured");
- //box->setColor(1.0, 0.0,0.0, 1.0);
- //box->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "default/default.png");
- scene->addChild(box);
- }*/
- bgSound = new Sound("FightBG.wav");
- // bgSound->Play();
- // sound1 = new Sound("hit.wav");
- //Logger::log("before Play");
- //sound1->Play(true);
- //Logger::log("after Play");
- //sound1->setPitch(10);
- // sound2 = new Sound("test.wav");
- // sound3 = new Sound("curve_02_c.wav");
- //sound2->Play(true);
- running = 0;
- rot = Vector3();
- fps = new SceneLabel("0", 32, "sans", Label::ANTIALIAS_FULL, 0.1);
- fps->setPosition(-0.6,0.3);
- scene->addChild(fps);
- scene->addChild(test);
- /*game = new Scene(Scene::SCENE_2D_TOPLEFT);
- //game->useClearColor = true;
- //game->getActiveCamera()->setPosition(0, 0, 10);
- /*box = new ScenePrimitive(ScenePrimitive::TYPE_BOX, 2, 2, 2);
- box->setMaterialByName("UnlitUntextured");
- box->setColor(0.1, 1.0, 1.0, 1.0);
- game->addChild(box);
- UILabel *uiLabel = new UILabel("Text");
- game->addChild(uiLabel);
- btn = new UIButton("Press me!", 80);
- btn->setPosition(5, 70);
- game->addChild(btn);
- btn->addEventListener(this, UIEvent::CLICK_EVENT);
- Services()->getInput()->simulateMouseWithTouch = true;
- game->rootEntity.processInputEvents = true;*/
- Services()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);
- Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_BEGAN);
- Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_ENDED);
- Services()->getInput()->addEventListener(this, InputEvent::EVENT_TOUCHES_MOVED);
- Services()->getCore()->addEventListener(this, Core::EVENT_ACCELEROMETER_MOTION);
- Services()->getCore()->addEventListener(this, Core::EVENT_GYRO_ROTATION);
- }
- void PolycodeTemplateApp::handleEvent(Event *event) {
- if(event->getEventType()=="InputEvent"){
- InputEvent *inputEvent = (InputEvent*) event;
- if(inputEvent->getEventCode() == InputEvent::EVENT_KEYDOWN){
- //Logger::log("keyevent %d", inputEvent->getKey());
- switch(inputEvent->getKey()) {
- case KEY_ESCAPE:
- core->openOnScreenKeyboard(false);
- break;
- case KEY_z:
- //sound1->Play(true);
- break;
- case KEY_x:
- //sound2->Play();
- break;
- case KEY_c:
- //sound3->Play();
- break;
- }
- } else if (inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_BEGAN){
- Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
- test->setPosition(r.origin.x, r.origin.y);
- } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_ENDED){
- Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
- test->setPosition(r.origin.x, r.origin.y);
- } else if(inputEvent->getEventCode() == InputEvent::EVENT_TOUCHES_MOVED){
- Ray r = scene->projectRayFromCameraAndViewportCoordinate(scene->getActiveCamera(),inputEvent->touch.position);
- test->setPosition(r.origin.x, r.origin.y);
- }
- } else if(event->getEventType() == "CoreMotionEvent"){
- CoreMotionEvent* motionEvent = (CoreMotionEvent*)event;
- if(motionEvent->getEventCode() == Core::EVENT_ACCELEROMETER_MOTION){
- } else if (motionEvent->getEventCode() == Core::EVENT_GYRO_ROTATION){
- test->Translate(motionEvent->amount.x*0.01, motionEvent->amount.y*0.01);
- }
- } else if(event->getEventType()=="UIEvent"){
- UIEvent* uiEvent = (UIEvent*)event;
- if(uiEvent->getDispatcher() == btn){
- Logger::log("hit");
- core->openOnScreenKeyboard(true);
- }
- }
- }
- PolycodeTemplateApp::~PolycodeTemplateApp() {
-
- }
- bool PolycodeTemplateApp::Update() {
- if (!core->paused) {
- running += core->getElapsed();
- if(running >= 1){
- fps->setText(String::NumberToString(core->getFPS(),0));
- running = 0;
- }
- return core->updateAndRender();
- } else {
- usleep(200000);
- return true;
- }
- }
|