Isometric-view
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user