forked from Kolyah35/minecraft-pe-0.6.1
(MAJOR)Added Java Beta/Normal Shading, toggleble in settings Fixed and restored the unused Item Switching Animation, toggleble in tweaks too Added Dynamic Texture for Lava Added option to use Block Outline Selection which was unused normally Added Split Touch Controls into Options Mobs will now drop cooked variants of their meat if they died by fire Fixed Untranslated Strings in Settings (MAJOR) Ravines and Lava/Water pools have been fixed and renabled Tweaked BasicTree to hopefully speed up generation a bit, might disable them temporarily if they keep being slow You can now grow Fancy Oak Trees using saplings.
278 lines
7.8 KiB
C++
Executable File
278 lines
7.8 KiB
C++
Executable File
#include "OptionsScreen.h"
|
|
|
|
#include "StartMenuScreen.h"
|
|
#include "UsernameScreen.h"
|
|
#include "DialogDefinitions.h"
|
|
#include "../../Minecraft.h"
|
|
#include "../../../AppPlatform.h"
|
|
#include "CreditsScreen.h"
|
|
|
|
#include "../components/ImageButton.h"
|
|
#include "../components/OptionsGroup.h"
|
|
#include "platform/input/Keyboard.h"
|
|
|
|
OptionsScreen::OptionsScreen()
|
|
: btnClose(NULL),
|
|
bHeader(NULL),
|
|
btnCredits(NULL),
|
|
selectedCategory(0) {
|
|
}
|
|
|
|
OptionsScreen::~OptionsScreen() {
|
|
if (btnClose != NULL) {
|
|
delete btnClose;
|
|
btnClose = NULL;
|
|
}
|
|
|
|
if (bHeader != NULL) {
|
|
delete bHeader;
|
|
bHeader = NULL;
|
|
}
|
|
|
|
if (btnCredits != NULL) {
|
|
delete btnCredits;
|
|
btnCredits = NULL;
|
|
}
|
|
|
|
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
|
if (*it != NULL) {
|
|
delete* it;
|
|
*it = NULL;
|
|
}
|
|
}
|
|
|
|
for (std::vector<OptionsGroup*>::iterator it = optionPanes.begin(); it != optionPanes.end(); ++it) {
|
|
if (*it != NULL) {
|
|
delete* it;
|
|
*it = NULL;
|
|
}
|
|
}
|
|
|
|
categoryButtons.clear();
|
|
}
|
|
|
|
void OptionsScreen::init() {
|
|
bHeader = new Touch::THeader(0, "Options");
|
|
|
|
btnClose = new ImageButton(1, "");
|
|
|
|
ImageDef def;
|
|
def.name = "gui/touchgui.png";
|
|
def.width = 34;
|
|
def.height = 26;
|
|
|
|
def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height));
|
|
btnClose->setImageDef(def, true);
|
|
|
|
categoryButtons.push_back(new Touch::TButton(2, "General"));
|
|
categoryButtons.push_back(new Touch::TButton(3, "Game"));
|
|
categoryButtons.push_back(new Touch::TButton(4, "Controls"));
|
|
categoryButtons.push_back(new Touch::TButton(5, "Graphics"));
|
|
categoryButtons.push_back(new Touch::TButton(6, "Tweaks"));
|
|
|
|
btnCredits = new Touch::TButton(11, "Credits");
|
|
|
|
buttons.push_back(bHeader);
|
|
buttons.push_back(btnClose);
|
|
buttons.push_back(btnCredits);
|
|
|
|
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
|
buttons.push_back(*it);
|
|
tabButtons.push_back(*it);
|
|
}
|
|
|
|
generateOptionScreens();
|
|
// start with first category selected
|
|
selectCategory(0);
|
|
}
|
|
|
|
void OptionsScreen::setupPositions() {
|
|
int buttonHeight = btnClose->height;
|
|
|
|
btnClose->x = width - btnClose->width;
|
|
btnClose->y = 0;
|
|
|
|
int offsetNum = 1;
|
|
|
|
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
|
|
|
(*it)->x = 0;
|
|
(*it)->y = offsetNum * buttonHeight;
|
|
(*it)->selected = false;
|
|
|
|
offsetNum++;
|
|
}
|
|
|
|
bHeader->x = 0;
|
|
bHeader->y = 0;
|
|
bHeader->width = width - btnClose->width;
|
|
bHeader->height = btnClose->height;
|
|
|
|
// Credits button (bottom-right)
|
|
if (btnCredits != NULL) {
|
|
btnCredits->x = width - btnCredits->width;
|
|
btnCredits->y = height - btnCredits->height;
|
|
}
|
|
|
|
for (std::vector<OptionsGroup*>::iterator it = optionPanes.begin(); it != optionPanes.end(); ++it) {
|
|
|
|
if (categoryButtons.size() > 0 && categoryButtons[0] != NULL) {
|
|
|
|
(*it)->x = categoryButtons[0]->width;
|
|
(*it)->y = bHeader->height;
|
|
(*it)->width = width - categoryButtons[0]->width;
|
|
|
|
(*it)->setupPositions();
|
|
}
|
|
}
|
|
|
|
// don't override user selection on resize
|
|
}
|
|
|
|
|
|
void OptionsScreen::render(int xm, int ym, float a) {
|
|
renderBackground();
|
|
|
|
int xmm = xm * width / minecraft->width;
|
|
int ymm = ym * height / minecraft->height - 1;
|
|
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->render(minecraft, xmm, ymm);
|
|
|
|
super::render(xm, ym, a);
|
|
}
|
|
|
|
void OptionsScreen::removed() {
|
|
}
|
|
|
|
void OptionsScreen::buttonClicked(Button* button) {
|
|
if (button == btnClose) {
|
|
minecraft->options.save();
|
|
if (minecraft->screen != NULL) {
|
|
minecraft->setScreen(NULL);
|
|
} else {
|
|
minecraft->screenChooser.setScreen(SCREEN_STARTMENU);
|
|
}
|
|
}
|
|
else if (button->id > 1 && button->id < 7) {
|
|
int categoryButton = button->id - categoryButtons[0]->id;
|
|
selectCategory(categoryButton);
|
|
}
|
|
else if (button == btnCredits) {
|
|
minecraft->setScreen(new CreditsScreen());
|
|
}
|
|
}
|
|
|
|
void OptionsScreen::selectCategory(int index) {
|
|
int currentIndex = 0;
|
|
|
|
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
|
|
|
if (index == currentIndex)
|
|
(*it)->selected = true;
|
|
else
|
|
(*it)->selected = false;
|
|
|
|
currentIndex++;
|
|
}
|
|
|
|
if (index < (int)optionPanes.size())
|
|
currentOptionsGroup = optionPanes[index];
|
|
}
|
|
|
|
void OptionsScreen::generateOptionScreens() {
|
|
// how the fuck it works
|
|
|
|
optionPanes.push_back(new OptionsGroup("options.group.general"));
|
|
optionPanes.push_back(new OptionsGroup("options.group.game"));
|
|
optionPanes.push_back(new OptionsGroup("options.group.controls"));
|
|
optionPanes.push_back(new OptionsGroup("options.group.graphics"));
|
|
optionPanes.push_back(new OptionsGroup("options.group.tweaks"));
|
|
|
|
// General Pane
|
|
optionPanes[0]->addOptionItem(OPTIONS_USERNAME, minecraft)
|
|
.addOptionItem(OPTIONS_SENSITIVITY, minecraft);
|
|
|
|
// Game Pane
|
|
optionPanes[1]->addOptionItem(OPTIONS_DIFFICULTY, minecraft)
|
|
.addOptionItem(OPTIONS_SERVER_VISIBLE, minecraft)
|
|
.addOptionItem(OPTIONS_THIRD_PERSON_VIEW, minecraft)
|
|
.addOptionItem(OPTIONS_GUI_SCALE, minecraft)
|
|
.addOptionItem(OPTIONS_SENSITIVITY, minecraft)
|
|
.addOptionItem(OPTIONS_MUSIC_VOLUME, minecraft)
|
|
.addOptionItem(OPTIONS_SOUND_VOLUME, minecraft)
|
|
.addOptionItem(OPTIONS_SMOOTH_CAMERA, minecraft)
|
|
.addOptionItem(OPTIONS_DESTROY_VIBRATION, minecraft)
|
|
.addOptionItem(OPTIONS_IS_LEFT_HANDED, minecraft);
|
|
|
|
// // Controls Pane
|
|
optionPanes[2]->addOptionItem(OPTIONS_INVERT_Y_MOUSE, minecraft)
|
|
.addOptionItem(OPTIONS_USE_TOUCHSCREEN, minecraft)
|
|
.addOptionItem(OPTIONS_AUTOJUMP, minecraft)
|
|
.addOptionItem(OPTIONS_BLOCK_OUTLINE, minecraft)
|
|
.addOptionItem(OPTIONS_IS_JOY_TOUCH_AREA, minecraft);
|
|
|
|
for (int i = OPTIONS_KEY_FORWARD; i <= OPTIONS_KEY_USE; i++) {
|
|
optionPanes[2]->addOptionItem((OptionId)i, minecraft);
|
|
}
|
|
|
|
// // Graphics Pane
|
|
optionPanes[3]->addOptionItem(OPTIONS_FANCY_GRAPHICS, minecraft)
|
|
// .addOptionItem(&Option::VIEW_BOBBING, minecraft)
|
|
// .addOptionItem(&Option::AMBIENT_OCCLUSION, minecraft)
|
|
// .addOptionItem(&Option::ANAGLYPH, minecraft)
|
|
.addOptionItem(OPTIONS_LIMIT_FRAMERATE, minecraft)
|
|
.addOptionItem(OPTIONS_VSYNC, minecraft)
|
|
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
|
.addOptionItem(OPTIONS_ANAGLYPH_3D, minecraft)
|
|
.addOptionItem(OPTIONS_VIEW_BOBBING, minecraft)
|
|
.addOptionItem(OPTIONS_AMBIENT_OCCLUSION, minecraft)
|
|
.addOptionItem(OPTIONS_NORMAL_LIGHTING, minecraft);
|
|
|
|
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
|
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
|
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
|
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
|
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
|
.addOptionItem(OPTIONS_FOG_TYPE, minecraft)
|
|
.addOptionItem(OPTIONS_RESTORED_ANIMS, minecraft);
|
|
|
|
}
|
|
|
|
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->mouseClicked(minecraft, x, y, buttonNum);
|
|
|
|
super::mouseClicked(x, y, buttonNum);
|
|
}
|
|
|
|
void OptionsScreen::mouseReleased(int x, int y, int buttonNum) {
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->mouseReleased(minecraft, x, y, buttonNum);
|
|
|
|
super::mouseReleased(x, y, buttonNum);
|
|
}
|
|
|
|
void OptionsScreen::keyPressed(int eventKey) {
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->keyPressed(minecraft, eventKey);
|
|
if (eventKey == Keyboard::KEY_ESCAPE)
|
|
minecraft->options.save();
|
|
|
|
super::keyPressed(eventKey);
|
|
}
|
|
|
|
void OptionsScreen::charPressed(char inputChar) {
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->charPressed(minecraft, inputChar);
|
|
|
|
super::keyPressed(inputChar);
|
|
}
|
|
|
|
void OptionsScreen::tick() {
|
|
|
|
if (currentOptionsGroup != NULL)
|
|
currentOptionsGroup->tick(minecraft);
|
|
|
|
super::tick();
|
|
} |