diff --git a/misc/web/index.html b/misc/web/index.html index eed3f5b..6eb328d 100644 --- a/misc/web/index.html +++ b/misc/web/index.html @@ -36,6 +36,9 @@ } window.addEventListener('resize', resizeCanvas); + window.addEventListener('onunload', () => { + FS.syncfs(true, function (err) { console.log('Sync FS failed: ' + err) }); + }) diff --git a/src/AppPlatform_glfw.h b/src/AppPlatform_glfw.h index 619ae57..d996860 100755 --- a/src/AppPlatform_glfw.h +++ b/src/AppPlatform_glfw.h @@ -130,7 +130,7 @@ public: virtual float getPixelsPerMillimeter() override; - virtual bool supportsTouchscreen() override { return true; } + virtual bool supportsTouchscreen() override { return false; /* glfw supports only mouse and keyboard */ } virtual void hideCursor(bool hide) override { int isHide = hide ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_HIDDEN; @@ -143,6 +143,8 @@ public: #elif __linux__ std::string command = "xdg-open " + url; system(command.c_str()); +#elif __EMSCRIPTEN__ + emscripten_run_script(std::string("window.open('" + url + "', '_blank')").c_str()); #endif } diff --git a/src/client/Minecraft.cpp b/src/client/Minecraft.cpp index 8d38c06..3c6b368 100755 --- a/src/client/Minecraft.cpp +++ b/src/client/Minecraft.cpp @@ -1,4 +1,5 @@ #include "Minecraft.h" +#include "Options.h" #include "client/Options.h" #include "client/player/input/IBuildInput.h" #include "platform/input/Keyboard.h" @@ -640,13 +641,11 @@ void Minecraft::tickInput() { const MouseAction& e = Mouse::getEvent(); -#ifdef RPI // If clicked when not having focus, get focus @keyboard - if (!mouseGrabbed) { + if (!useTouchscreen() && !mouseGrabbed) { if (!screen && e.data == MouseAction::DATA_DOWN) { grabMouse(); } } -#endif if (allowGuiClicks && e.action == MouseAction::ACTION_LEFT && e.data == MouseAction::DATA_DOWN) { gui.handleClick(MouseAction::ACTION_LEFT, Mouse::getX(), Mouse::getY()); @@ -660,9 +659,7 @@ void Minecraft::tickInput() { Inventory* v = player->inventory; int numSlots = gui.getNumSlots(); -#ifndef PLATFORM_DESKTOP - numSlots--; -#endif + if (!useTouchscreen()) numSlots--; int slot = (v->selected - e.dy + numSlots) % numSlots; v->selectSlot(slot); @@ -691,155 +688,147 @@ void Minecraft::tickInput() { if (isPressed) { gui.handleKeyPressed(key); - #if defined(WIN32) || defined(RPI) || defined (PLATFORM_DESKTOP)//|| defined(_DEBUG) || defined(DEBUG) - if (key >= '0' && key <= '9') { - int digit = key - '0'; - int slot = digit - 1; + if (key >= '0' && key <= '9') { + int digit = key - '0'; + int slot = digit - 1; - if (slot >= 0 && slot < gui.getNumSlots()) - player->inventory->selectSlot(slot); + if (slot >= 0 && slot < gui.getNumSlots()) + player->inventory->selectSlot(slot); - #if defined(WIN32) - if (digit >= 1 && GetAsyncKeyState(VK_CONTROL) < 0) { - // Set adventure settings here! - AdventureSettingsPacket p(level->adventureSettings); - p.toggle((AdventureSettingsPacket::Flags)(1 << slot)); - p.fillIn(level->adventureSettings); - raknetInstance->send(p); - } - if (digit == 0) { - Pos pos((int)player->x, (int)player->y-1, (int)player->z); - SetSpawnPositionPacket p(pos); - raknetInstance->send(p); - } - #endif - } - #endif - #if defined(PLATFORM_DESKTOP) - if (key == Keyboard::KEY_LEFT_CTRL) { - player->setSprinting(true); + #if defined(WIN32) + if (digit >= 1 && GetAsyncKeyState(VK_CONTROL) < 0) { + // Set adventure settings here! + AdventureSettingsPacket p(level->adventureSettings); + p.toggle((AdventureSettingsPacket::Flags)(1 << slot)); + p.fillIn(level->adventureSettings); + raknetInstance->send(p); + } + if (digit == 0) { + Pos pos((int)player->x, (int)player->y-1, (int)player->z); + SetSpawnPositionPacket p(pos); + raknetInstance->send(p); + } + #endif + } + + if (key == Keyboard::KEY_LEFT_CTRL) { + player->setSprinting(true); + } + + if (key == Keyboard::KEY_E) { + screenChooser.setScreen(SCREEN_BLOCKSELECTION); + } + + if (!screen && key == Keyboard::KEY_T && level) { + setScreen(new ConsoleScreen()); + } + + if (key == Keyboard::KEY_F3) { + options.toggle(OPTIONS_RENDER_DEBUG); + } + + if (key == Keyboard::KEY_F5) { + options.toggle(OPTIONS_THIRD_PERSON_VIEW); + /* + ImprovedNoise noise; + for (int i = 0; i < 16; ++i) + printf("%d\t%f\n", i, noise.grad2(i, 3, 8)); + */ + } + + if (!screen && key == Keyboard::KEY_O || key == 250) { + releaseMouse(); + } + + if (key == Keyboard::KEY_F) { + int dst = options.getIntValue(OPTIONS_VIEW_DISTANCE); + options.set(OPTIONS_VIEW_DISTANCE, (dst + 1) % 4); + } + #ifdef CHEATS + if (key == Keyboard::KEY_U) { + onGraphicsReset(); + player->heal(100); } - if (key == Keyboard::KEY_E) { - screenChooser.setScreen(SCREEN_BLOCKSELECTION); - } + if (key == Keyboard::KEY_B || key == 108) // Toggle the game mode + setIsCreativeMode(!isCreativeMode()); - if (!screen && key == Keyboard::KEY_T && level) { - setScreen(new ConsoleScreen()); - } + if (key == Keyboard::KEY_P) // Step forward in time + level->setTime( level->getTime() + 1000); - if (key == Keyboard::KEY_F3) { - options.toggle(OPTIONS_RENDER_DEBUG); - } - - if (key == Keyboard::KEY_F5) { - options.toggle(OPTIONS_THIRD_PERSON_VIEW); + if (key == Keyboard::KEY_G) { + setScreen(new ArmorScreen()); /* - ImprovedNoise noise; - for (int i = 0; i < 16; ++i) - printf("%d\t%f\n", i, noise.grad2(i, 3, 8)); + std::vector& boxs = level->getCubes(NULL, AABB(128.1f, 73, 128.1f, 128.9f, 74.9f, 128.9f)); + LOGI("boxes: %d\n", (int)boxs.size()); */ } - if (!screen && key == Keyboard::KEY_O || key == 250) { - releaseMouse(); + if (key == Keyboard::KEY_Y) { + textures->reloadAll(); + player->hurtTo(2); + } + if (key == Keyboard::KEY_Z || key == 108) { + for (int i = 0; i < 1; ++i) { + Mob* mob = NULL; + int forceId = 0;//MobTypes::Sheep; + + int types[] = { + MobTypes::Sheep, + MobTypes::Pig, + MobTypes::Chicken, + MobTypes::Cow, + }; + + int mobType = (forceId > 0)? forceId : types[Mth::random(sizeof(types) / sizeof(int))]; + mob = MobFactory::CreateMob(mobType, level); + + //((Animal*)mob)->setAge(-1000); + float dx = 4 - 8 * Mth::random() + 4 * Mth::sin(Mth::DEGRAD * player->yRot); + float dz = 4 - 8 * Mth::random() + 4 * Mth::cos(Mth::DEGRAD * player->yRot); + if (mob && !MobSpawner::addMob(level, mob, player->x + dx, player->y, player->z + dz, Mth::random()*360, 0, true)) + delete mob; + } } - if (key == Keyboard::KEY_F) { - int dst = options.getIntValue(OPTIONS_VIEW_DISTANCE); - options.set(OPTIONS_VIEW_DISTANCE, (dst + 1) % 4); + if (key == Keyboard::KEY_X) { + const EntityList& entities = level->getAllEntities(); + for (int i = entities.size()-1; i >= 0; --i) { + Entity* e = entities[i]; + if (!e->isPlayer()) + level->removeEntity(e); + } } - #ifdef CHEATS - if (key == Keyboard::KEY_U) { - onGraphicsReset(); - player->heal(100); + + if (key == Keyboard::KEY_C /*|| key == 4*/) { + player->inventory->clearInventoryWithDefault(); + // @todo: Add saving here for benchmarking + } + if (key == Keyboard::KEY_H) { + setScreen( new PrerenderTilesScreen() ); + } + + if (key == Keyboard::KEY_O) { + for (int i = Inventory::MAX_SELECTION_SIZE; i < player->inventory->getContainerSize(); ++i) + if (player->inventory->getItem(i)) + player->inventory->dropSlot(i, false); + } + if (key == Keyboard::KEY_M) { + Difficulty difficulty = (Difficulty)options.getIntValue(OPTIONS_DIFFICULTY); + options.set(OPTIONS_DIFFICULTY, (difficulty == Difficulty::PEACEFUL)? + Difficulty::NORMAL : Difficulty::PEACEFUL); + //setIsCreativeMode( !isCreativeMode() ); + } + + if (options.getBooleanValue(OPTIONS_RENDER_DEBUG)) { + if (key >= '0' && key <= '9') { + _perfRenderer->debugFpsMeterKeyPress(key - '0'); } - - if (key == Keyboard::KEY_B || key == 108) // Toggle the game mode - setIsCreativeMode(!isCreativeMode()); - - if (key == Keyboard::KEY_P) // Step forward in time - level->setTime( level->getTime() + 1000); - - if (key == Keyboard::KEY_G) { - setScreen(new ArmorScreen()); - /* - std::vector& boxs = level->getCubes(NULL, AABB(128.1f, 73, 128.1f, 128.9f, 74.9f, 128.9f)); - LOGI("boxes: %d\n", (int)boxs.size()); - */ - } - - if (key == Keyboard::KEY_Y) { - textures->reloadAll(); - player->hurtTo(2); - } - if (key == Keyboard::KEY_Z || key == 108) { - for (int i = 0; i < 1; ++i) { - Mob* mob = NULL; - int forceId = 0;//MobTypes::Sheep; - - int types[] = { - MobTypes::Sheep, - MobTypes::Pig, - MobTypes::Chicken, - MobTypes::Cow, - }; - - int mobType = (forceId > 0)? forceId : types[Mth::random(sizeof(types) / sizeof(int))]; - mob = MobFactory::CreateMob(mobType, level); - - //((Animal*)mob)->setAge(-1000); - float dx = 4 - 8 * Mth::random() + 4 * Mth::sin(Mth::DEGRAD * player->yRot); - float dz = 4 - 8 * Mth::random() + 4 * Mth::cos(Mth::DEGRAD * player->yRot); - if (mob && !MobSpawner::addMob(level, mob, player->x + dx, player->y, player->z + dz, Mth::random()*360, 0, true)) - delete mob; - } - } - - if (key == Keyboard::KEY_X) { - const EntityList& entities = level->getAllEntities(); - for (int i = entities.size()-1; i >= 0; --i) { - Entity* e = entities[i]; - if (!e->isPlayer()) - level->removeEntity(e); - } - } - - if (key == Keyboard::KEY_C /*|| key == 4*/) { - player->inventory->clearInventoryWithDefault(); - // @todo: Add saving here for benchmarking - } - if (key == Keyboard::KEY_H) { - setScreen( new PrerenderTilesScreen() ); - } - - if (key == Keyboard::KEY_O) { - for (int i = Inventory::MAX_SELECTION_SIZE; i < player->inventory->getContainerSize(); ++i) - if (player->inventory->getItem(i)) - player->inventory->dropSlot(i, false); - } - if (key == Keyboard::KEY_M) { - Difficulty difficulty = (Difficulty)options.getIntValue(OPTIONS_DIFFICULTY); - options.set(OPTIONS_DIFFICULTY, (difficulty == Difficulty::PEACEFUL)? - Difficulty::NORMAL : Difficulty::PEACEFUL); - //setIsCreativeMode( !isCreativeMode() ); - } - - if (options.getBooleanValue(OPTIONS_RENDER_DEBUG)) { - if (key >= '0' && key <= '9') { - _perfRenderer->debugFpsMeterKeyPress(key - '0'); - } - } - #endif + } #endif - #ifndef PLATFORM_DESKTOP - if (key == 82) - pauseGame(false); - #else - if (key == Keyboard::KEY_ESCAPE) - pauseGame(false); - #endif + if (key == Keyboard::KEY_ESCAPE) + pauseGame(false); #ifndef OPENGL_ES if (key == Keyboard::KEY_P) { @@ -1112,7 +1101,7 @@ bool Minecraft::useTouchscreen() { #ifdef RPI return false; #endif - return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) || !_supportsNonTouchscreen; + return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) && !_supportsNonTouchscreen; } bool Minecraft::supportNonTouchScreen() { return _supportsNonTouchscreen; @@ -1241,11 +1230,7 @@ void Minecraft::_reloadInput() { #ifndef STANDALONE_SERVER delete inputHolder; -#ifdef PLATFORM_DESKTOP - const bool useTouchHolder = false; -#else const bool useTouchHolder = useTouchscreen(); -#endif if (useTouchHolder) { inputHolder = new TouchInputHolder(this, &options); } else { @@ -1570,6 +1555,8 @@ void Minecraft::optionUpdated(OptionId option, bool value ) { if(netCallback != NULL && option == OPTIONS_SERVER_VISIBLE) { ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) netCallback; ss->allowIncomingConnections(value); + } else if (option == OPTIONS_USE_TOUCHSCREEN) { + _reloadInput(); } } diff --git a/src/client/MouseHandler.cpp b/src/client/MouseHandler.cpp index d122950..d77e28b 100755 --- a/src/client/MouseHandler.cpp +++ b/src/client/MouseHandler.cpp @@ -5,7 +5,7 @@ #include #endif -#ifdef PLATFORM_DESKTOP +#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) #include #endif @@ -34,7 +34,7 @@ void MouseHandler::grab() { SDL_ShowCursor(0); #endif -#ifdef PLATFORM_DESKTOP +#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_DISABLED); #endif } @@ -46,7 +46,7 @@ void MouseHandler::release() { SDL_ShowCursor(1); #endif -#ifdef PLATFORM_DESKTOP +#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_NORMAL); #endif } diff --git a/src/client/OptionsFile.cpp b/src/client/OptionsFile.cpp index 4601429..ef2a0dc 100755 --- a/src/client/OptionsFile.cpp +++ b/src/client/OptionsFile.cpp @@ -16,6 +16,8 @@ OptionsFile::OptionsFile() { settingsPath = "./Documents/options.txt"; #elif defined(ANDROID) settingsPath = "options.txt"; +#elif defined(__EMSCRIPTEN__) + settingsPath = "/games/com.mojang/options.txt"; #else settingsPath = "options.txt"; #endif diff --git a/src/client/gui/Gui.cpp b/src/client/gui/Gui.cpp index b7c462e..ccc9c26 100755 --- a/src/client/gui/Gui.cpp +++ b/src/client/gui/Gui.cpp @@ -51,7 +51,8 @@ Gui::Gui(Minecraft* minecraft) _currentDropTicks(-1), _currentDropSlot(-1), MAX_MESSAGE_WIDTH(240), - itemNameOverlayTime(2) + itemNameOverlayTime(2), + _openInventorySlot(minecraft->useTouchscreen()) { glGenBuffers2(1, &_inventoryRc.vboId); glGenBuffers2(1, &rcFeedbackInner.vboId); @@ -75,11 +76,8 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) { //minecraft->gameRenderer->setupGuiScreen(); Font* font = minecraft->font; -#ifdef PLATFORM_DESKTOP - const bool isTouchInterface = false; -#else const bool isTouchInterface = minecraft->useTouchscreen(); -#endif + const int screenWidth = (int)(minecraft->width * InvGuiScale); const int screenHeight = (int)(minecraft->height * InvGuiScale); blitOffset = -90; @@ -206,16 +204,10 @@ void Gui::handleClick(int button, int x, int y) { if (button != MouseAction::ACTION_LEFT) return; int slot = getSlotIdAt(x, y); - if (slot != -1) - { -#ifndef PLATFORM_DESKTOP - if (slot == (getNumSlots()-1)) - { + if (slot != -1) { + if (_openInventorySlot && slot == (getNumSlots()-1)) { minecraft->screenChooser.setScreen(SCREEN_BLOCKSELECTION); - } - else -#endif - { + } else { minecraft->player->inventory->selectSlot(slot); itemNameOverlayTime = 0; } @@ -537,11 +529,7 @@ void Gui::tickItemDrop() static bool isCurrentlyActive = false; isCurrentlyActive = false; - int slots = getNumSlots(); - -#ifndef PLATFORM_DESKTOP - slots--; -#endif + int slots = getNumSlots() - _openInventorySlot; if (Mouse::isButtonDown(MouseAction::ACTION_LEFT)) { int slot = getSlotIdAt(Mouse::getX(), Mouse::getY()); @@ -1083,13 +1071,7 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) { float x = baseItemX; - int slots = getNumSlots(); - - // TODO: if using touchscreen - -#ifndef PLATFORM_DESKTOP - slots--; -#endif + int slots = getNumSlots() - _openInventorySlot; for (int i = 0; i < slots; i++) { renderSlot(i, (int)x, ySlot, a); @@ -1097,9 +1079,10 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) { } _inventoryNeedsUpdate = false; -#ifndef PLATFORM_DESKTOP - blit(screenWidth / 2 + 10 * getNumSlots() - 20 + 4, ySlot + 6, 242, 252, 14, 4, 14, 4); -#endif + + if (_openInventorySlot) { + blit(screenWidth / 2 + 10 * getNumSlots() - 20 + 4, ySlot + 6, 242, 252, 14, 4, 14, 4); + } minecraft->textures->loadAndBindTexture("gui/gui_blocks.png"); t.endOverrideAndDraw(); diff --git a/src/client/gui/Gui.h b/src/client/gui/Gui.h index 1c36f83..1335035 100755 --- a/src/client/gui/Gui.h +++ b/src/client/gui/Gui.h @@ -127,6 +127,8 @@ private: static const float DropTicks; float _currentDropTicks; int _currentDropSlot; + + bool _openInventorySlot; }; #endif /*NET_MINECRAFT_CLIENT_GUI__Gui_H__*/ diff --git a/src/client/gui/Screen.cpp b/src/client/gui/Screen.cpp index ae39036..a6bcc6f 100755 --- a/src/client/gui/Screen.cpp +++ b/src/client/gui/Screen.cpp @@ -177,9 +177,11 @@ void Screen::keyPressed( int eventKey ) textbox->keyPressed(minecraft, eventKey); } +#ifdef TABBING if (minecraft->useTouchscreen()) return; + // "Tabbing" the buttons (walking with keys) const int tabButtonCount = tabButtons.size(); if (!tabButtonCount) @@ -199,6 +201,7 @@ void Screen::keyPressed( int eventKey ) } updateTabButtonSelection(); +#endif } void Screen::charPressed(char inputChar) { @@ -209,11 +212,13 @@ void Screen::charPressed(char inputChar) { void Screen::updateTabButtonSelection() { +#ifdef TABBING if (minecraft->useTouchscreen()) return; for (unsigned int i = 0; i < tabButtons.size(); ++i) tabButtons[i]->selected = (i == tabButtonIndex); +#endif } void Screen::mouseClicked( int x, int y, int buttonNum ) diff --git a/src/client/gui/components/Button.cpp b/src/client/gui/components/Button.cpp index e03ae37..39022a7 100755 --- a/src/client/gui/components/Button.cpp +++ b/src/client/gui/components/Button.cpp @@ -95,7 +95,7 @@ void Button::renderBg( Minecraft* minecraft, int xm, int ym ) } bool Button::hovered(Minecraft* minecraft, int xm , int ym) { - return minecraft->useTouchscreen()? (_currentlyDown && isInside(xm, ym)) : false; + return minecraft->useTouchscreen()? (_currentlyDown && isInside(xm, ym)) : isInside(xm, ym); } bool Button::isInside( int xm, int ym ) { @@ -143,7 +143,8 @@ TButton::TButton( int id, int x, int y, int w, int h, const std::string& msg ) void TButton::renderBg( Minecraft* minecraft, int xm, int ym ) { - bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false); + bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym)); + // bool hovered = active && (_currentlyDown && isInside(xm, ym)); minecraft->textures->loadAndBindTexture("gui/touchgui.png"); diff --git a/src/client/gui/components/ImageButton.cpp b/src/client/gui/components/ImageButton.cpp index 1c7a57a..3d95acc 100755 --- a/src/client/gui/components/ImageButton.cpp +++ b/src/client/gui/components/ImageButton.cpp @@ -42,7 +42,7 @@ void ImageButton::render(Minecraft* minecraft, int xm, int ym) { //minecraft->textures->loadAndBindTexture("gui/gui.png"); glColor4f2(1, 1, 1, 1); - bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false); + bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym)); bool IsSecondImage = isSecondImage(hovered); //printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym); diff --git a/src/client/gui/components/LargeImageButton.cpp b/src/client/gui/components/LargeImageButton.cpp index 673d983..db1f599 100755 --- a/src/client/gui/components/LargeImageButton.cpp +++ b/src/client/gui/components/LargeImageButton.cpp @@ -33,7 +33,7 @@ void LargeImageButton::render(Minecraft* minecraft, int xm, int ym) { //minecraft->textures->loadAndBindTexture("gui/gui.png"); glColor4f2(1, 1, 1, 1); - bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false); + bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym)); //printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym); //int yImage = getYImage(hovered || selected); diff --git a/src/client/gui/screens/ConfirmScreen.cpp b/src/client/gui/screens/ConfirmScreen.cpp index ce911c6..2529549 100755 --- a/src/client/gui/screens/ConfirmScreen.cpp +++ b/src/client/gui/screens/ConfirmScreen.cpp @@ -31,7 +31,7 @@ ConfirmScreen::~ConfirmScreen() { void ConfirmScreen::init() { - if (minecraft->useTouchscreen()) { + if (/* minecraft->useTouchscreen() */ true) { yesButton = new Touch::TButton(0, 0, 0, yesButtonText), noButton = new Touch::TButton(1, 0, 0, noButtonText); } else { diff --git a/src/client/gui/screens/DeathScreen.cpp b/src/client/gui/screens/DeathScreen.cpp index a5685dc..411b148 100755 --- a/src/client/gui/screens/DeathScreen.cpp +++ b/src/client/gui/screens/DeathScreen.cpp @@ -23,7 +23,7 @@ DeathScreen::~DeathScreen() void DeathScreen::init() { - if (minecraft->useTouchscreen()) { + if (/* minecraft->useTouchscreen() */ true) { bRespawn = new Touch::TButton(1, "Respawn!"); bTitle = new Touch::TButton(2, "Main menu"); } else { diff --git a/src/client/gui/screens/DisconnectionScreen.h b/src/client/gui/screens/DisconnectionScreen.h index 12c62ec..f32530f 100755 --- a/src/client/gui/screens/DisconnectionScreen.h +++ b/src/client/gui/screens/DisconnectionScreen.h @@ -21,7 +21,7 @@ public: } void init() { - if (minecraft->useTouchscreen()) + if (/* minecraft->useTouchscreen() */ true) _back = new Touch::TButton(1, "Ok"); else _back = new Button(1, "Ok"); diff --git a/src/client/gui/screens/InBedScreen.cpp b/src/client/gui/screens/InBedScreen.cpp index ef6dd95..3adadc7 100755 --- a/src/client/gui/screens/InBedScreen.cpp +++ b/src/client/gui/screens/InBedScreen.cpp @@ -17,7 +17,7 @@ InBedScreen::~InBedScreen() { } void InBedScreen::init() { - if (minecraft->useTouchscreen()) { + if (/* minecraft->useTouchscreen() */ true) { bWakeUp = new Touch::TButton(1, "Leave Bed"); } else { bWakeUp = new Button(1, "Leave Bed"); diff --git a/src/client/gui/screens/PauseScreen.cpp b/src/client/gui/screens/PauseScreen.cpp index 46d99cd..ab30ecb 100755 --- a/src/client/gui/screens/PauseScreen.cpp +++ b/src/client/gui/screens/PauseScreen.cpp @@ -48,7 +48,7 @@ PauseScreen::~PauseScreen() { } void PauseScreen::init() { - if (minecraft->useTouchscreen()) { + if (/* minecraft->useTouchscreen() */ true) { bContinue = new Touch::TButton(1, "Back to game"); bOptions = new Touch::TButton(5, "Options"); bQuit = new Touch::TButton(2, "Quit to title"); diff --git a/src/client/gui/screens/ProgressScreen.h b/src/client/gui/screens/ProgressScreen.h index 263e346..762d4fa 100755 --- a/src/client/gui/screens/ProgressScreen.h +++ b/src/client/gui/screens/ProgressScreen.h @@ -11,6 +11,8 @@ public: void render(int xm, int ym, float a); bool isInGameScreen(); + virtual void keyPressed(int eventKey) {} + void tick(); private: int ticks; diff --git a/src/client/gui/screens/ScreenChooser.cpp b/src/client/gui/screens/ScreenChooser.cpp index 9f45e3c..b423524 100755 --- a/src/client/gui/screens/ScreenChooser.cpp +++ b/src/client/gui/screens/ScreenChooser.cpp @@ -21,7 +21,7 @@ Screen* ScreenChooser::createScreen( ScreenId id ) Screen* screen = NULL; // :sob: - if (_mc->useTouchscreen()) { + if (/* _mc->useTouchscreen() */ true) { switch (id) { case SCREEN_STARTMENU: screen = new Touch::StartMenuScreen(); break; case SCREEN_SELECTWORLD: screen = new Touch::SelectWorldScreen();break; diff --git a/src/client/gui/screens/SimpleChooseLevelScreen.cpp b/src/client/gui/screens/SimpleChooseLevelScreen.cpp index f839725..c5a1278 100755 --- a/src/client/gui/screens/SimpleChooseLevelScreen.cpp +++ b/src/client/gui/screens/SimpleChooseLevelScreen.cpp @@ -56,7 +56,7 @@ void SimpleChooseLevelScreen::init() def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height)); bBack->setImageDef(def, true); } - if (minecraft->useTouchscreen()) { + if (/* minecraft->useTouchscreen() */ true) { bGamemode = new Touch::TButton(1, "Survival mode"); bCheats = new Touch::TButton(4, "Cheats: Off"); bCreate = new Touch::TButton(3, "Create"); diff --git a/src/client/gui/screens/crafting/PaneCraftingScreen.cpp b/src/client/gui/screens/crafting/PaneCraftingScreen.cpp index 0e39082..4e3d025 100755 --- a/src/client/gui/screens/crafting/PaneCraftingScreen.cpp +++ b/src/client/gui/screens/crafting/PaneCraftingScreen.cpp @@ -41,7 +41,7 @@ public: //fill(x+1, y+1, x+w-1, y+h-1, 0xff999999); bool hovered = active && (minecraft->useTouchscreen()? - (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false); + (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym)); if (hovered || *selectedPtr == this) statePressed->draw(Tesselator::instance, (float)x, (float)y); @@ -547,7 +547,7 @@ void CraftButton::renderBg(Minecraft* minecraft, int xm, int ym) { //fill(x+1, y+1, x+w-1, y+h-1, 0xff999999); bool hovered = active && (minecraft->useTouchscreen()? - (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false); + (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym)); if (hovered || selected) bgSelected->draw(Tesselator::instance, (float)x, (float)y); diff --git a/src/client/player/input/KeyboardInput.cpp b/src/client/player/input/KeyboardInput.cpp index 674838d..b84fe75 100755 --- a/src/client/player/input/KeyboardInput.cpp +++ b/src/client/player/input/KeyboardInput.cpp @@ -50,10 +50,8 @@ void KeyboardInput::tick( Player* player ) ya *= 0.3f; } - #if defined(RPI) || defined(PLATFORM_DESKTOP) - wantUp = jumping; - wantDown = sneaking; - #endif + wantUp = jumping; + wantDown = sneaking; if (keys[KEY_CRAFT]) player->startCrafting((int)player->x, (int)player->y, (int)player->z, Recipe::SIZE_2X2); diff --git a/src/client/renderer/GameRenderer.cpp b/src/client/renderer/GameRenderer.cpp index ca9d388..1aa6a15 100755 --- a/src/client/renderer/GameRenderer.cpp +++ b/src/client/renderer/GameRenderer.cpp @@ -153,7 +153,7 @@ void GameRenderer::render(float a) { int xMouse = (int)(Mouse::getX() * Gui::InvGuiScale); int yMouse = (int)(Mouse::getY() * Gui::InvGuiScale); -#ifndef PLATFORM_DESKTOP + if (mc->useTouchscreen()) { const int pid = Multitouch::getFirstActivePointerIdExThisUpdate(); if (pid >= 0) { @@ -164,7 +164,6 @@ void GameRenderer::render(float a) { yMouse = -9999; } } -#endif TIMER_POP(); bool hasClearedColorBuffer = false; @@ -361,9 +360,9 @@ void GameRenderer::renderLevel(float a) { if (mc->hitResult.isHit() && !cameraEntity->isUnderLiquid(Material::water)) { TIMER_POP_PUSH("select"); Player* player = (Player*) cameraEntity; - if (mc->useTouchscreen()) { + // if (mc->useTouchscreen()) { levelRenderer->renderHitSelect(player, mc->hitResult, 0, NULL, a); //player.inventory->getSelected(), a); - } + // } levelRenderer->renderHit(player, mc->hitResult, 0, NULL, a);//player->inventory.getSelected(), a); } } @@ -657,11 +656,9 @@ void GameRenderer::pick(float a) { float range = mc->gameMode->getPickRange(); bool isPicking = true; -#ifndef PLATFORM_DESKTOP - bool freeform = mc->useTouchscreen() && !mc->options.getBooleanValue(OPTIONS_IS_JOY_TOUCH_AREA); -#else - bool freeform = false; -#endif + + bool freeform = mc->useTouchscreen(); //&& !mc->options.getBooleanValue(OPTIONS_IS_JOY_TOUCH_AREA); + if (freeform) { isPicking = updateFreeformPickDirection(a, pickDirection); } else { diff --git a/src/main_glfw.h b/src/main_glfw.h index 2b5bb97..042c9fb 100755 --- a/src/main_glfw.h +++ b/src/main_glfw.h @@ -139,12 +139,14 @@ int main(void) { #ifndef STANDALONE_SERVER // Platform init. appContext.platform = new AppPlatform_glfw(); -#if defined(DEBUG) && defined(__EMSCRIPTEN__) - EM_ASM({ - console.log(FS.readdir("/")); - console.log(FS.readdir("/data")); - console.log(FS.readdir("/data/images")); - }); +#if defined(__EMSCRIPTEN__) + EM_ASM( + FS.mkdir('/games'); + FS.mkdir('/games/com.mojang'); + FS.mkdir('/games/com.mojang/minecraftWorlds'); + FS.mount(IDBFS, {}, '/games'); + FS.syncfs(true, function (err) {}); + ); #endif glfwSetErrorCallback(error_callback);