forked from Kolyah35/minecraft-pe-0.6.1
Compare commits
1 Commits
main
...
feature/is
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b5d12832d |
@@ -129,7 +129,6 @@ public class SoundPlayer
|
||||
new SoundId(R.raw.eat1, "random.eat"),
|
||||
new SoundId(R.raw.eat2, "random.eat"),
|
||||
new SoundId(R.raw.eat3, "random.eat"),
|
||||
new SoundId(R.raw.burp1, "random.burp"),
|
||||
new SoundId(R.raw.fuse, "random.fuse"),
|
||||
|
||||
new SoundId(R.raw.zpig1, "mob.zombiepig.zpig"),
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "client/Options.h"
|
||||
#include "client/gui/components/Button.h"
|
||||
#include "client/gui/screens/OptionsScreen.h"
|
||||
#include "UploadPhotoScreen.h"
|
||||
|
||||
PauseScreen::PauseScreen(bool wasBackPaused)
|
||||
: saveStep(0),
|
||||
@@ -17,6 +18,7 @@ PauseScreen::PauseScreen(bool wasBackPaused)
|
||||
bOptions(0),
|
||||
bQuitAndSaveLocally(0),
|
||||
bServerVisibility(0),
|
||||
bPhotoMode(0),
|
||||
// bThirdPerson(0),
|
||||
wasBackPaused(wasBackPaused),
|
||||
// bSound(OPTIONS_SOUND_VOLUME, 1, 0),
|
||||
@@ -43,6 +45,7 @@ PauseScreen::~PauseScreen() {
|
||||
delete bQuit;
|
||||
delete bQuitAndSaveLocally;
|
||||
delete bServerVisibility;
|
||||
delete bPhotoMode;
|
||||
delete bOptions;
|
||||
// delete bThirdPerson;
|
||||
}
|
||||
@@ -51,6 +54,7 @@ void PauseScreen::init() {
|
||||
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 0) {
|
||||
bContinue = new Touch::TButton(1, "Back to game");
|
||||
bOptions = new Touch::TButton(5, "Options");
|
||||
bPhotoMode = new Touch::TButton(6, "Photo Mode");
|
||||
bQuit = new Touch::TButton(2, "Quit to title");
|
||||
bQuitAndSaveLocally = new Touch::TButton(3, "Quit and copy map");
|
||||
bServerVisibility = new Touch::TButton(4, "");
|
||||
@@ -58,6 +62,7 @@ void PauseScreen::init() {
|
||||
} else if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 1) {
|
||||
bContinue = new Button(1, "Back to game");
|
||||
bOptions = new Button(5, "Options");
|
||||
bPhotoMode = new Button(6, "Photo Mode");
|
||||
bQuit = new Button(2, "Quit to title");
|
||||
bQuitAndSaveLocally = new Button(3, "Quit and copy map");
|
||||
bServerVisibility = new Button(4, "");
|
||||
@@ -66,6 +71,7 @@ void PauseScreen::init() {
|
||||
bContinue = new Button(1, 0, 0, 200, 20, "Back to game");
|
||||
bServerVisibility = new Button(4, 0, 0, 200, 20, "");
|
||||
bOptions = new Button(5, 0, 0, 200, 20, "Options...");
|
||||
bPhotoMode = new Button(6, 0, 0, 200, 20, "Photo Mode");
|
||||
bQuit = new Button(2, 0, 0, 200, 20, "Save and quit to title");
|
||||
bQuitAndSaveLocally = new Button(3, 0, 0, 200, 20, "Copy and quit map");
|
||||
// bThirdPerson = new Button(5, "Toggle 3:rd person view");
|
||||
@@ -74,6 +80,7 @@ void PauseScreen::init() {
|
||||
buttons.push_back(bContinue);
|
||||
buttons.push_back(bQuit);
|
||||
buttons.push_back(bOptions);
|
||||
buttons.push_back(bPhotoMode);
|
||||
// bSound.updateImage(&minecraft->options);
|
||||
bThirdPerson.updateImage(&minecraft->options);
|
||||
bHideGui.updateImage(&minecraft->options);
|
||||
@@ -115,7 +122,7 @@ void PauseScreen::setupPositions() {
|
||||
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||
yBase = 50;
|
||||
|
||||
bContinue->width = bOptions->width = bQuit->width = /*bThirdPerson->w =*/ 200;
|
||||
bContinue->width = bOptions->width = bPhotoMode->width = bQuit->width = /*bThirdPerson->w =*/ 200;
|
||||
bQuitAndSaveLocally->width = bServerVisibility->width = 200;
|
||||
|
||||
bContinue->x = (width - bContinue->width) / 2;
|
||||
@@ -124,6 +131,9 @@ void PauseScreen::setupPositions() {
|
||||
bQuitAndSaveLocally->x = bServerVisibility->x = (width - bQuitAndSaveLocally->width) / 2;
|
||||
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 24 * 2;
|
||||
|
||||
bPhotoMode->x = (width - bPhotoMode->width) / 2;
|
||||
bPhotoMode->y = yBase + 24 * 3;
|
||||
|
||||
bOptions->x = (width - bOptions->width) / 2;
|
||||
bOptions->y = yBase + 24 * 3 + 24;
|
||||
|
||||
@@ -131,7 +141,7 @@ void PauseScreen::setupPositions() {
|
||||
bQuit->y = yBase + 24 * 4 + 24;
|
||||
|
||||
} else {
|
||||
bContinue->width = bOptions->width = bQuit->width = /*bThirdPerson->w =*/ 160;
|
||||
bContinue->width = bOptions->width = bPhotoMode->width = bQuit->width = /*bThirdPerson->w =*/ 160;
|
||||
bQuitAndSaveLocally->width = bServerVisibility->width = 160;
|
||||
|
||||
bContinue->x = (width - bContinue->width) / 2;
|
||||
@@ -140,15 +150,18 @@ void PauseScreen::setupPositions() {
|
||||
bOptions->x = (width - bOptions->width) / 2;
|
||||
bOptions->y = yBase + 32 * 2;
|
||||
|
||||
bPhotoMode->x = (width - bPhotoMode->width) / 2;
|
||||
bPhotoMode->y = yBase + 32 * 3;
|
||||
|
||||
bQuit->x = (width - bQuit->width) / 2;
|
||||
bQuit->y = yBase + 32 * 3;
|
||||
bQuit->y = yBase + 32 * 4;
|
||||
|
||||
#if APPLE_DEMO_PROMOTION
|
||||
bQuit->y += 16;
|
||||
#endif
|
||||
|
||||
bQuitAndSaveLocally->x = bServerVisibility->x = (width - bQuitAndSaveLocally->width) / 2;
|
||||
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 32 * 4;
|
||||
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 32 * 5;
|
||||
}
|
||||
|
||||
|
||||
@@ -192,6 +205,9 @@ void PauseScreen::buttonClicked(Button* button) {
|
||||
if (button->id == bQuit->id) {
|
||||
minecraft->leaveGame();
|
||||
}
|
||||
if (button->id == bPhotoMode->id) {
|
||||
minecraft->setScreen(new UploadPhotoScreen());
|
||||
}
|
||||
if (button->id == bQuitAndSaveLocally->id) {
|
||||
minecraft->leaveGame(true);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ private:
|
||||
Button* bQuit;
|
||||
Button* bQuitAndSaveLocally;
|
||||
Button* bServerVisibility;
|
||||
Button* bPhotoMode;
|
||||
Button* bOptions;
|
||||
|
||||
// Button* bThirdPerson;
|
||||
|
||||
@@ -1,177 +1,160 @@
|
||||
#if 0
|
||||
|
||||
#include "UploadPhotoScreen.h"
|
||||
#include "../renderer/TileRenderer.h"
|
||||
#include "../player/LocalPlayer.h"
|
||||
#include "../../world/entity/player/Inventory.h"
|
||||
|
||||
UploadPhotoScreen::UploadPhotoScreen()
|
||||
:
|
||||
selectedItem(0)
|
||||
{
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::init()
|
||||
{
|
||||
int currentSelection = minecraft->player->inventory->getSelectedItemId();
|
||||
for (int i = 0; i < Inventory::INVENTORY_SIZE; i++)
|
||||
{
|
||||
if (currentSelection == minecraft->player->inventory->getSelectionSlotItemId(i + Inventory::SELECTION_SIZE))
|
||||
{
|
||||
selectedItem = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::renderSlots()
|
||||
{
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
|
||||
blitOffset = -90;
|
||||
|
||||
minecraft->textures->loadAndBindTexture("gui/gui.png");
|
||||
for (int r = 0; r < Inventory::INVENTORY_ROWS; r++)
|
||||
{
|
||||
blit(width / 2 - 182 / 2, height - 22 * 3 - 22 * r, 0, 0, 182, 22);
|
||||
}
|
||||
if (selectedItem >= 0)
|
||||
{
|
||||
int x = width / 2 - 182 / 2 - 1 + (selectedItem % Inventory::SELECTION_SIZE) * 20;
|
||||
int y = height - 22 * 3 - 1 - (selectedItem / Inventory::SELECTION_SIZE) * 22;
|
||||
blit(x, y, 0, 22, 24, 22);
|
||||
}
|
||||
|
||||
for (int r = 0; r < Inventory::INVENTORY_ROWS; r++)
|
||||
{
|
||||
for (int i = 0; i < 9; i++) {
|
||||
int x = width / 2 - 9 * 10 + i * 20 + 2;
|
||||
int y = height - 16 - 3 - 22 * 2 - 22 * r;
|
||||
renderSlot(r * 9 + i + Inventory::SELECTION_SIZE, x, y, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::renderSlot(int slot, int x, int y, float a)
|
||||
{
|
||||
int itemId = minecraft->player->inventory->getSelectionSlotItemId(slot);
|
||||
if (itemId < 0) return;
|
||||
|
||||
const bool fancy = false;
|
||||
|
||||
if (fancy && itemId < 256 && TileRenderer::canRender(Tile::tiles[itemId]->getRenderShape())) {
|
||||
|
||||
} else {
|
||||
if (itemId < 256) {
|
||||
Tile* tile = Tile::tiles[itemId];
|
||||
if (tile == NULL) return;
|
||||
|
||||
minecraft->textures->loadAndBindTexture("terrain.png");
|
||||
|
||||
int textureId = tile->getTexture(2, 0);
|
||||
blit(x, y, textureId % 16 * 16, textureId / 16 * 16, 16, 16);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::keyPressed(int eventKey)
|
||||
{
|
||||
int selX = selectedItem % Inventory::SELECTION_SIZE;
|
||||
int selY = selectedItem / Inventory::SELECTION_SIZE;
|
||||
|
||||
Options& o = minecraft->options;
|
||||
if (eventKey == o.keyLeft.key && selX > 0)
|
||||
{
|
||||
selectedItem -= 1;
|
||||
}
|
||||
else if (eventKey == o.keyRight.key && selX < (Inventory::SELECTION_SIZE - 1))
|
||||
{
|
||||
selectedItem += 1;
|
||||
}
|
||||
else if (eventKey == o.keyDown.key && selY > 0)
|
||||
{
|
||||
selectedItem -= Inventory::SELECTION_SIZE;
|
||||
}
|
||||
else if (eventKey == o.keyUp.key && selY < (Inventory::INVENTORY_ROWS - 1))
|
||||
{
|
||||
selectedItem += Inventory::SELECTION_SIZE;
|
||||
}
|
||||
|
||||
if (eventKey == o.keyMenuOk.key)
|
||||
{
|
||||
selectSlotAndClose();
|
||||
}
|
||||
}
|
||||
|
||||
int UploadPhotoScreen::getSelectedSlot(int x, int y)
|
||||
{
|
||||
int left = 3 + width / 2 - Inventory::SELECTION_SIZE * 10;
|
||||
int top = height - 16 - 3 - 22 * 2 - 22 * Inventory::INVENTORY_ROWS;
|
||||
|
||||
if (x >= left && y >= top)
|
||||
{
|
||||
int xSlot = (x - left) / 20;
|
||||
if (xSlot < Inventory::SELECTION_SIZE)
|
||||
{
|
||||
// rows are rendered upsidedown
|
||||
return xSlot + Inventory::INVENTORY_SIZE - ((y - top) / 22) * Inventory::SELECTION_SIZE;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||
if (buttonNum == MouseAction::ACTION_LEFT) {
|
||||
|
||||
int slot = getSelectedSlot(x, y);
|
||||
if (slot >= 0 && slot < Inventory::INVENTORY_SIZE)
|
||||
{
|
||||
selectedItem = slot;
|
||||
//minecraft->soundEngine->playUI("random.click", 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::mouseReleased(int x, int y, int buttonNum)
|
||||
{
|
||||
if (buttonNum == MouseAction::ACTION_LEFT) {
|
||||
|
||||
int slot = getSelectedSlot(x, y);
|
||||
if (slot >= 0 && slot < Inventory::INVENTORY_SIZE && slot == selectedItem)
|
||||
{
|
||||
selectSlotAndClose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::selectSlotAndClose()
|
||||
{
|
||||
Inventory* inventory = minecraft->player->inventory;
|
||||
|
||||
int itemId = inventory->getSelectionSlotItemId(selectedItem + Inventory::SELECTION_SIZE);
|
||||
int i = 0;
|
||||
|
||||
for (; i < Inventory::SELECTION_SIZE - 2; i++)
|
||||
{
|
||||
if (itemId == inventory->getSelectionSlotItemId(i))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// update selection list
|
||||
for (; i >= 1; i--)
|
||||
{
|
||||
inventory->setSelectionSlotItemId(i, inventory->getSelectionSlotItemId(i - 1));
|
||||
}
|
||||
inventory->setSelectionSlotItemId(0, itemId);
|
||||
inventory->selectSlot(0);
|
||||
|
||||
minecraft->soundEngine->playUI("random.click", 1, 1);
|
||||
minecraft->setScreen(NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
#include "UploadPhotoScreen.h"
|
||||
|
||||
#include "../components/Button.h"
|
||||
#include "../../Minecraft.h"
|
||||
#include "../../player/LocalPlayer.h"
|
||||
#include "../../../world/entity/item/TripodCamera.h"
|
||||
#include "../../../world/level/Level.h"
|
||||
#include "../../../platform/input/Keyboard.h"
|
||||
#include "../../renderer/GameRenderer.h"
|
||||
#include "../../renderer/LevelRenderer.h"
|
||||
|
||||
UploadPhotoScreen::UploadPhotoScreen()
|
||||
: hasAppliedPhotoMode(false),
|
||||
oldHideGui(false),
|
||||
oldThirdPerson(false),
|
||||
oldFixedCamera(false),
|
||||
hasOldPose(false),
|
||||
oldX(0),
|
||||
oldY(0),
|
||||
oldZ(0),
|
||||
oldYaw(0),
|
||||
oldPitch(0),
|
||||
photoCameraTarget(NULL),
|
||||
photoCameraX(0),
|
||||
photoCameraY(0),
|
||||
photoCameraZ(0),
|
||||
bBack(0)
|
||||
{
|
||||
}
|
||||
|
||||
UploadPhotoScreen::~UploadPhotoScreen()
|
||||
{
|
||||
restorePhotoMode();
|
||||
delete photoCameraTarget;
|
||||
delete bBack;
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::init()
|
||||
{
|
||||
applyPhotoMode();
|
||||
|
||||
if (minecraft->useTouchscreen()) {
|
||||
bBack = new Touch::TButton(1, "Back");
|
||||
} else {
|
||||
bBack = new Button(1, "Back");
|
||||
}
|
||||
|
||||
buttons.push_back(bBack);
|
||||
tabButtons.push_back(bBack);
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::removed()
|
||||
{
|
||||
restorePhotoMode();
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::applyPhotoMode()
|
||||
{
|
||||
if (hasAppliedPhotoMode || !minecraft || !minecraft->gameRenderer) return;
|
||||
|
||||
if (minecraft->player) {
|
||||
oldX = minecraft->player->x;
|
||||
oldY = minecraft->player->y;
|
||||
oldZ = minecraft->player->z;
|
||||
oldYaw = minecraft->player->yRot;
|
||||
oldPitch = minecraft->player->xRot;
|
||||
hasOldPose = true;
|
||||
}
|
||||
|
||||
oldHideGui = minecraft->options.getBooleanValue(OPTIONS_HIDEGUI);
|
||||
oldThirdPerson = minecraft->options.getBooleanValue(OPTIONS_THIRD_PERSON_VIEW);
|
||||
oldFixedCamera = minecraft->options.getBooleanValue(OPTIONS_FIXED_CAMERA);
|
||||
Pos spawn = minecraft->level->getSharedSpawnPos();
|
||||
photoCameraX = (float) spawn.x;
|
||||
photoCameraY = 128.0f;
|
||||
photoCameraZ = (float) spawn.z;
|
||||
if (!photoCameraTarget) {
|
||||
photoCameraTarget = new TripodCamera(minecraft->level, minecraft->player, photoCameraX, photoCameraY, photoCameraZ);
|
||||
}
|
||||
photoCameraTarget->setPos(photoCameraX, photoCameraY, photoCameraZ);
|
||||
photoCameraTarget->xo = photoCameraTarget->xOld = photoCameraX;
|
||||
photoCameraTarget->yo = photoCameraTarget->yOld = photoCameraY;
|
||||
photoCameraTarget->zo = photoCameraTarget->zOld = photoCameraZ;
|
||||
|
||||
if (!oldHideGui) minecraft->options.toggle(OPTIONS_HIDEGUI);
|
||||
if (!oldThirdPerson) minecraft->options.toggle(OPTIONS_THIRD_PERSON_VIEW);
|
||||
if (!oldFixedCamera) minecraft->options.toggle(OPTIONS_FIXED_CAMERA);
|
||||
|
||||
minecraft->gameRenderer->setPhotoModeIsometric();
|
||||
minecraft->levelRenderer->allChanged();
|
||||
hasAppliedPhotoMode = true;
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::tick()
|
||||
{
|
||||
if (!hasAppliedPhotoMode || !minecraft || !minecraft->player || !minecraft->level) return;
|
||||
|
||||
if (photoCameraTarget) {
|
||||
photoCameraTarget->setPos(photoCameraX, photoCameraY, photoCameraZ);
|
||||
photoCameraTarget->xo = photoCameraTarget->xOld = photoCameraX;
|
||||
photoCameraTarget->yo = photoCameraTarget->yOld = photoCameraY;
|
||||
photoCameraTarget->zo = photoCameraTarget->zOld = photoCameraZ;
|
||||
photoCameraTarget->yRot = photoCameraTarget->yRotO = 45.0f;
|
||||
photoCameraTarget->xRot = photoCameraTarget->xRotO = 68.0f;
|
||||
minecraft->cameraTargetPlayer = photoCameraTarget;
|
||||
}
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::restorePhotoMode()
|
||||
{
|
||||
if (!hasAppliedPhotoMode || !minecraft) return;
|
||||
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_HIDEGUI) != oldHideGui) minecraft->options.toggle(OPTIONS_HIDEGUI);
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_THIRD_PERSON_VIEW) != oldThirdPerson) minecraft->options.toggle(OPTIONS_THIRD_PERSON_VIEW);
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_FIXED_CAMERA) != oldFixedCamera) minecraft->options.toggle(OPTIONS_FIXED_CAMERA);
|
||||
minecraft->gameRenderer->clearPhotoModeIsometric();
|
||||
minecraft->cameraTargetPlayer = minecraft->player;
|
||||
|
||||
if (hasOldPose && minecraft->player) {
|
||||
minecraft->player->yRot = oldYaw;
|
||||
minecraft->player->xRot = oldPitch;
|
||||
}
|
||||
|
||||
hasAppliedPhotoMode = false;
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::keyPressed(int eventKey)
|
||||
{
|
||||
if (eventKey == Keyboard::KEY_ESCAPE) {
|
||||
restorePhotoMode();
|
||||
minecraft->setScreen(NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
Screen::keyPressed(eventKey);
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::buttonClicked(Button* button)
|
||||
{
|
||||
if (!button || button->id != 1) return;
|
||||
|
||||
restorePhotoMode();
|
||||
minecraft->setScreen(NULL);
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::setupPositions()
|
||||
{
|
||||
const int buttonWidth = 120;
|
||||
const int buttonHeight = 24;
|
||||
bBack->width = buttonWidth;
|
||||
bBack->height = buttonHeight;
|
||||
bBack->x = (width - buttonWidth) / 2;
|
||||
bBack->y = height - 32;
|
||||
}
|
||||
|
||||
void UploadPhotoScreen::render(int xm, int ym, float a)
|
||||
{
|
||||
drawCenteredString(font, "Photo Mode - Isometric", width / 2, 12, 0xffffff);
|
||||
Screen::render(xm, ym, a);
|
||||
}
|
||||
|
||||
@@ -1,36 +1,50 @@
|
||||
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__
|
||||
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__
|
||||
|
||||
#include "Screen.h"
|
||||
|
||||
class UploadPhotoScreen : public Screen
|
||||
{
|
||||
public:
|
||||
|
||||
UploadPhotoScreen();
|
||||
virtual ~UploadPhotoScreen() {}
|
||||
|
||||
virtual void init();
|
||||
|
||||
void render(int xm, int ym, float a) {
|
||||
Screen::render(xm, ym, a);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
virtual void mouseClicked(int x, int y, int buttonNum);
|
||||
virtual void mouseReleased(int x, int y, int buttonNum);
|
||||
virtual void keyPressed(int eventKey);
|
||||
|
||||
private:
|
||||
|
||||
int selectedItem;
|
||||
|
||||
void renderSlots();
|
||||
void renderSlot(int slot, int x, int y, float a);
|
||||
|
||||
int getSelectedSlot(int x, int y);
|
||||
void selectSlotAndClose();
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__*/
|
||||
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__
|
||||
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__
|
||||
|
||||
#include "../Screen.h"
|
||||
|
||||
class Button;
|
||||
class Mob;
|
||||
|
||||
class UploadPhotoScreen : public Screen
|
||||
{
|
||||
public:
|
||||
|
||||
UploadPhotoScreen();
|
||||
virtual ~UploadPhotoScreen();
|
||||
|
||||
virtual void init();
|
||||
virtual void setupPositions();
|
||||
virtual void tick();
|
||||
virtual void removed();
|
||||
virtual void keyPressed(int eventKey);
|
||||
|
||||
virtual void render(int xm, int ym, float a);
|
||||
|
||||
protected:
|
||||
|
||||
virtual void buttonClicked(Button* button);
|
||||
|
||||
private:
|
||||
|
||||
void applyPhotoMode();
|
||||
void restorePhotoMode();
|
||||
|
||||
bool hasAppliedPhotoMode;
|
||||
bool oldHideGui;
|
||||
bool oldThirdPerson;
|
||||
bool oldFixedCamera;
|
||||
bool hasOldPose;
|
||||
float oldX;
|
||||
float oldY;
|
||||
float oldZ;
|
||||
float oldYaw;
|
||||
float oldPitch;
|
||||
Mob* photoCameraTarget;
|
||||
float photoCameraX;
|
||||
float photoCameraY;
|
||||
float photoCameraZ;
|
||||
Button* bBack;
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__UploadPhotoScreen_H__*/
|
||||
|
||||
@@ -34,6 +34,7 @@ static int _shTicks = -1;
|
||||
GameRenderer::GameRenderer( Minecraft* mc )
|
||||
: mc(mc),
|
||||
renderDistance(0),
|
||||
photoModeIsometric(false),
|
||||
_tick(0),
|
||||
_lastTickT(0),
|
||||
fovOffset(0),
|
||||
@@ -90,7 +91,7 @@ void renderCursor(float x, float y, Minecraft* minecraft) {
|
||||
|
||||
/*private*/
|
||||
void GameRenderer::setupCamera(float a, int eye) {
|
||||
renderDistance = (float) (16 * 16 >> (mc->options.getIntValue(OPTIONS_VIEW_DISTANCE)));
|
||||
renderDistance = photoModeIsometric ? 1024.0f : (float) (16 * 16 >> (mc->options.getIntValue(OPTIONS_VIEW_DISTANCE)));
|
||||
#if defined(ANDROID)
|
||||
if (mc->isPowerVR() && mc->options.getIntValue(OPTIONS_VIEW_DISTANCE) <= 2)
|
||||
renderDistance *= 0.8f;
|
||||
@@ -314,7 +315,7 @@ void GameRenderer::renderLevel(float a) {
|
||||
setupFog(1);
|
||||
// MCPE renders clouds using this, but this method breaks 3d clouds and also breaks 2d clouds transparency viewed from above, add as a Legacy Sky or Fast Sky option. - shredder
|
||||
if(!mc->options.getBooleanValue(OPTIONS_BETA_SKY)){
|
||||
if(mc->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS)) {
|
||||
if(mc->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && !photoModeIsometric) {
|
||||
prepareAndRenderClouds(levelRenderer, a);
|
||||
}
|
||||
}
|
||||
@@ -573,6 +574,14 @@ void GameRenderer::bobView(float a) {
|
||||
|
||||
/*private*/
|
||||
void GameRenderer::setupFog(int i) {
|
||||
if (photoModeIsometric) {
|
||||
glDisable2(GL_FOG);
|
||||
glFogf(GL_FOG_START, 0.0f);
|
||||
glFogf(GL_FOG_END, 1024.0f);
|
||||
glEnable2(GL_COLOR_MATERIAL);
|
||||
return;
|
||||
}
|
||||
|
||||
Mob* player = mc->cameraTargetPlayer;
|
||||
float fogBuffer[4] = {fr, fg, fb, 1};
|
||||
|
||||
@@ -829,6 +838,14 @@ void GameRenderer::tick(int nTick, int maxTick) {
|
||||
|
||||
/*private*/
|
||||
void GameRenderer::setupClearColor(float a) {
|
||||
if (photoModeIsometric) {
|
||||
fr = 0.47f;
|
||||
fg = 0.78f;
|
||||
fb = 1.0f;
|
||||
glClearColor(fr, fg, fb, 1.0f);
|
||||
return;
|
||||
}
|
||||
|
||||
Level* level = mc->level;
|
||||
Mob* player = mc->cameraTargetPlayer;
|
||||
|
||||
@@ -942,6 +959,28 @@ void GameRenderer::onGraphicsReset()
|
||||
if (itemInHandRenderer) itemInHandRenderer->onGraphicsReset();
|
||||
}
|
||||
|
||||
void GameRenderer::setPhotoModeIsometric()
|
||||
{
|
||||
photoModeIsometric = true;
|
||||
thirdDistance = thirdDistanceO = 128.0f;
|
||||
thirdRotation = thirdRotationO = 45.0f;
|
||||
thirdTilt = thirdTiltO = 56.0f;
|
||||
zoom = 1.0f;
|
||||
zoom_x = 0.0f;
|
||||
zoom_y = 0.0f;
|
||||
cameraRoll = cameraRollO = 0.0f;
|
||||
}
|
||||
|
||||
void GameRenderer::clearPhotoModeIsometric()
|
||||
{
|
||||
photoModeIsometric = false;
|
||||
}
|
||||
|
||||
bool GameRenderer::isPhotoModeIsometric() const
|
||||
{
|
||||
return photoModeIsometric;
|
||||
}
|
||||
|
||||
void GameRenderer::saveMatrices()
|
||||
{
|
||||
#if defined(RPI)
|
||||
|
||||
@@ -33,6 +33,9 @@ public:
|
||||
void renderItemInHand(float a, int eye);
|
||||
|
||||
void onGraphicsReset();
|
||||
void setPhotoModeIsometric();
|
||||
void clearPhotoModeIsometric();
|
||||
bool isPhotoModeIsometric() const;
|
||||
|
||||
void setupCamera(float a, int eye);
|
||||
void moveCameraToPlayer(float a);
|
||||
@@ -58,6 +61,7 @@ private:
|
||||
Minecraft* mc;
|
||||
|
||||
float renderDistance;
|
||||
bool photoModeIsometric;
|
||||
int _tick;
|
||||
Vec3 pickDirection;
|
||||
|
||||
|
||||
@@ -193,7 +193,9 @@ void LevelRenderer::allChanged()
|
||||
TileRenderer::setUseTint(sideTint);
|
||||
|
||||
|
||||
int dist = (512 >> 3) << (3 - lastViewDistance);
|
||||
int dist = mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric()
|
||||
? 1024
|
||||
: (512 >> 3) << (3 - lastViewDistance);
|
||||
if (lastViewDistance <= 2 && mc->isPowerVR())
|
||||
dist = (int)((float)dist * 0.8f);
|
||||
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
||||
@@ -202,7 +204,9 @@ void LevelRenderer::allChanged()
|
||||
dist *= 0.6f;
|
||||
#endif
|
||||
|
||||
if (dist > 400) dist = 400;
|
||||
if (!(mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric())) {
|
||||
if (dist > 400) dist = 400;
|
||||
}
|
||||
/*
|
||||
* if (Minecraft.FLYBY_MODE) { dist = 512 - CHUNK_SIZE * 2; }
|
||||
*/
|
||||
@@ -674,9 +678,11 @@ void LevelRenderer::tick()
|
||||
|
||||
bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
{
|
||||
bool slow = false;
|
||||
bool slow = mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric();
|
||||
|
||||
if (slow) {
|
||||
const int visibleLimit = 12;
|
||||
const int invisibleLimit = 4;
|
||||
DirtyChunkSorter dirtySorter(player);
|
||||
std::sort(dirtyChunks.begin(), dirtyChunks.end(), dirtySorter);
|
||||
int s = dirtyChunks.size() - 1;
|
||||
@@ -686,9 +692,9 @@ bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
if (!force) {
|
||||
if (chunk->distanceToSqr(player) > 16 * 16) {
|
||||
if (chunk->visible) {
|
||||
if (i >= MAX_VISIBLE_REBUILDS_PER_FRAME) return false;
|
||||
if (i >= visibleLimit) return false;
|
||||
} else {
|
||||
if (i >= MAX_INVISIBLE_REBUILDS_PER_FRAME) return false;
|
||||
if (i >= invisibleLimit) return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -702,10 +708,9 @@ bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
|
||||
return dirtyChunks.size() == 0;
|
||||
} else {
|
||||
const int count = 3;
|
||||
|
||||
const int count = (mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric()) ? 32 : 3;
|
||||
Chunk* toAdd[24] = {NULL};
|
||||
DirtyChunkSorter dirtyChunkSorter(player);
|
||||
Chunk* toAdd[count] = {NULL};
|
||||
std::vector<Chunk*>* nearChunks = NULL;
|
||||
|
||||
int pendingChunkSize = dirtyChunks.size();
|
||||
@@ -715,7 +720,7 @@ bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
Chunk* chunk = dirtyChunks[i];
|
||||
|
||||
if (!force) {
|
||||
if (chunk->distanceToSqr(player) > 1024.0f) {
|
||||
if (chunk->distanceToSqr(player) > ((mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric()) ? 65536.0f : 1024.0f)) {
|
||||
int index;
|
||||
|
||||
// is this chunk in the closest <count>?
|
||||
@@ -754,7 +759,7 @@ bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
|
||||
// if there are nearby chunks that need to be prepared for
|
||||
// rendering, sort them and then process them
|
||||
static const float MaxFrameTime = 1.0f / 100.0f;
|
||||
static const float MaxFrameTime = (mc->gameRenderer && mc->gameRenderer->isPhotoModeIsometric()) ? (1.0f / 75.0f) : (1.0f / 100.0f);
|
||||
Stopwatch chunkWatch;
|
||||
chunkWatch.start();
|
||||
|
||||
|
||||
@@ -111,7 +111,6 @@
|
||||
#include "data/eat1.pcm"
|
||||
#include "data/eat2.pcm"
|
||||
#include "data/eat3.pcm"
|
||||
#include "data/burp1.pcm"
|
||||
#include "data/fuse.pcm"
|
||||
|
||||
SoundDesc SA_cloth1((char*)PCM_cloth1);
|
||||
@@ -222,7 +221,6 @@ SoundDesc SA_creeperdeath((char*)PCM_creeperdeath);
|
||||
SoundDesc SA_eat1((char*)PCM_eat1);
|
||||
SoundDesc SA_eat2((char*)PCM_eat2);
|
||||
SoundDesc SA_eat3((char*)PCM_eat3);
|
||||
SoundDesc SA_burp1((char*)PCM_burp1);
|
||||
SoundDesc SA_fuse((char*)PCM_fuse);
|
||||
|
||||
#endif /*!PRE_ANDROID23 && !__APPLE__*/
|
||||
|
||||
@@ -172,7 +172,6 @@ extern SoundDesc SA_creeperdeath;
|
||||
extern SoundDesc SA_eat1;
|
||||
extern SoundDesc SA_eat2;
|
||||
extern SoundDesc SA_eat3;
|
||||
extern SoundDesc SA_burp1;
|
||||
extern SoundDesc SA_fuse;
|
||||
|
||||
#endif /*!PRE_ANDROID23 && !__APPLE__*/
|
||||
|
||||
@@ -144,7 +144,6 @@ void SoundEngine::init( Minecraft* mc, Options* options )
|
||||
sounds.add("random.eat", SA_eat1);
|
||||
sounds.add("random.eat", SA_eat2);
|
||||
sounds.add("random.eat", SA_eat3);
|
||||
sounds.add("random.burp", SA_burp1);
|
||||
sounds.add("random.fuse", SA_fuse);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -227,7 +227,6 @@ void SoundEngine::init( Minecraft* mc, Options* options )
|
||||
sounds.add( "random.eat", _pp("eat1"));
|
||||
sounds.add( "random.eat", _pp("eat2"));
|
||||
sounds.add( "random.eat", _pp("eat3"));
|
||||
sounds.add( "random.burp", _pp("burp1"));
|
||||
sounds.add( "random.fuse", _pp("fuse"));
|
||||
|
||||
sounds.add( "step.cloth", _pp("cloth1"));
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user