feat: achievements, minecraft store, languages, auto lb sendStats, more Language Strings
This commit is contained in:
@@ -152,7 +152,7 @@ void AchievementScreen::renderLabels()
|
||||
|
||||
// font.draw(xScrollP + ", " + yScrollP, xo + 5, yo + 5 + BIGMAP_HEIGHT + 18, 0x404040);
|
||||
// font.drawWordWrap("Ride a pig off a cliff.", xo + 5, yo + 5 + BIGMAP_HEIGHT + 16, BIGMAP_WIDTH, 0x404040);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void AchievementScreen::renderBg(int xm, int ym, float a)
|
||||
|
||||
@@ -23,7 +23,7 @@ set(MINECRAFT_CLIENT_SOURCES
|
||||
${SOURCES_COMMON}
|
||||
)
|
||||
|
||||
add_executable(Minecraft.Client ${MINECRAFT_CLIENT_SOURCES})
|
||||
add_executable(Minecraft.Client ${MINECRAFT_CLIENT_SOURCES} "Common/UI/UIScene_AchievementsMenu.cpp" "Common/UI/UIScene_AchievementsMenu.h" "Common/UI/UIControl_AchievementsList.cpp" "Common/UI/UIControl_AchievementsList.h")
|
||||
|
||||
# Only define executable on windows
|
||||
if(PLATFORM_NAME STREQUAL "Windows64")
|
||||
|
||||
@@ -23,18 +23,18 @@ enum eAward
|
||||
eAward_DispenseWithThis,
|
||||
eAward_InToTheNether,
|
||||
|
||||
eAward_mine100Blocks,
|
||||
eAward_kill10Creepers,
|
||||
//eAward_mine100Blocks,
|
||||
//eAward_kill10Creepers,
|
||||
eAward_eatPorkChop,
|
||||
eAward_play100Days,
|
||||
eAward_arrowKillCreeper,
|
||||
eAward_socialPost,
|
||||
//eAward_socialPost,
|
||||
|
||||
#ifndef _XBOX
|
||||
// 4J Stu - Does not map to any Xbox achievements
|
||||
eAward_snipeSkeleton,
|
||||
eAward_diamonds,
|
||||
eAward_portal,
|
||||
//eAward_portal,
|
||||
eAward_ghast,
|
||||
eAward_blazeRod,
|
||||
eAward_potion,
|
||||
@@ -45,7 +45,6 @@ enum eAward
|
||||
eAward_bookcase,
|
||||
#endif
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
eAward_adventuringTime,
|
||||
eAward_repopulation,
|
||||
//eAward_porkChop,
|
||||
@@ -66,7 +65,6 @@ enum eAward
|
||||
eAward_ironMan,
|
||||
eAward_zombieDoctor,
|
||||
eAward_lionTamer,
|
||||
#endif
|
||||
|
||||
eAward_Max,
|
||||
};
|
||||
|
||||
@@ -839,6 +839,11 @@ void CMinecraftApp::InitGameSettings()
|
||||
memset(pProfileSettings,0,sizeof(C_4JProfile::PROFILESETTINGS));
|
||||
SetDefaultOptions(pProfileSettings,i);
|
||||
Win64_LoadSettings(GameSettingsA[i]);
|
||||
app.DebugPrintf("Loaded language: %d\n", GameSettingsA[i]->ucLanguage);
|
||||
app.SetMinecraftLanguage(i, GameSettingsA[i]->ucLanguage);
|
||||
app.SetMinecraftLocale(i, GameSettingsA[i]->ucLocale);
|
||||
|
||||
app.loadStringTable();
|
||||
ApplyGameSettingsChanged(i);
|
||||
#elif defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__
|
||||
C4JStorage::PROFILESETTINGS *pProfileSettings=StorageManager.GetDashboardProfileSettings(i);
|
||||
@@ -855,6 +860,7 @@ int CMinecraftApp::SetDefaultOptions(C4JStorage::PROFILESETTINGS *pSettings,cons
|
||||
int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,const int iPad)
|
||||
#endif
|
||||
{
|
||||
app.DebugPrintf("SetDefaultOptions language BEFORE: %d\n", GameSettingsA[iPad]->ucLanguage);
|
||||
SetGameSettings(iPad,eGameSetting_MusicVolume,DEFAULT_VOLUME_LEVEL);
|
||||
SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL);
|
||||
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
|
||||
@@ -939,6 +945,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
|
||||
if (!app.GetGameStarted())
|
||||
{
|
||||
GameSettingsA[iPad]->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
|
||||
app.DebugPrintf("SetDefaultOptions language AFTER: %d\n", GameSettingsA[iPad]->ucLanguage);
|
||||
GameSettingsA[iPad]->ucLocale = MINECRAFT_LANGUAGE_DEFAULT; // use the system locale
|
||||
}
|
||||
|
||||
@@ -6469,7 +6476,7 @@ int CMinecraftApp::GetHTMLFontSize(EHTMLFontSize size)
|
||||
return s_iHTMLFontSizesA[size];
|
||||
}
|
||||
|
||||
wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shadowColour /*= 0xFFFFFFFF*/)
|
||||
wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shadowColour /*= 0xFFFFFFFF*/, bool override)
|
||||
{
|
||||
wstring text(desc);
|
||||
|
||||
@@ -6552,7 +6559,7 @@ wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shado
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_A*}", GetVKReplacement(VK_PAD_A) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_B*}", GetVKReplacement(VK_PAD_B) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_X*}", GetVKReplacement(VK_PAD_X) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_Y*}", GetVKReplacement(VK_PAD_Y) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_Y*}", GetVKReplacement(VK_PAD_Y, override) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_LB*}", GetVKReplacement(VK_PAD_LSHOULDER) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_RB*}", GetVKReplacement(VK_PAD_RSHOULDER) );
|
||||
text = replaceAll(text, L"{*CONTROLLER_VK_LS*}", GetVKReplacement(VK_PAD_LTHUMB_UP) );
|
||||
@@ -6790,7 +6797,7 @@ wstring CMinecraftApp::GetActionReplacement(int iPad, unsigned char ucAction)
|
||||
#endif
|
||||
}
|
||||
|
||||
wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
|
||||
wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey, bool override)
|
||||
{
|
||||
#ifdef _XBOX
|
||||
switch(uiVKey)
|
||||
@@ -6908,7 +6915,7 @@ wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
|
||||
int size = 30;
|
||||
#elif defined _WIN64
|
||||
int size = 45;
|
||||
if(ui.getScreenHeight() < 1080) size = 30;
|
||||
if(ui.getScreenHeight() < 1080 || override == true) size = 30;
|
||||
#else
|
||||
int size = 45;
|
||||
#endif
|
||||
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
*/
|
||||
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 2*972; // per user
|
||||
#else
|
||||
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 972; // per user
|
||||
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 2*972; // per user
|
||||
#endif
|
||||
unsigned int uiGameDefinedDataChangedBitmask;
|
||||
|
||||
@@ -564,11 +564,11 @@ public:
|
||||
int GetHTMLColour(eMinecraftColour colour);
|
||||
int GetHTMLColor(eMinecraftColour colour) { return GetHTMLColour(colour); }
|
||||
int GetHTMLFontSize(EHTMLFontSize size);
|
||||
wstring FormatHTMLString(int iPad, const wstring& desc, int shadowColour = 0xFFFFFFFF);
|
||||
wstring FormatHTMLString(int iPad, const wstring& desc, int shadowColour = 0xFFFFFFFF, bool override = false);
|
||||
wstring EscapeHTMLString(const wstring &desc);
|
||||
wstring FormatChatMessage(const wstring& desc, bool applyStyling = true);
|
||||
wstring GetActionReplacement(int iPad, unsigned char ucAction);
|
||||
wstring GetVKReplacement(unsigned int uiVKey);
|
||||
wstring GetVKReplacement(unsigned int uiVKey, bool override = false);
|
||||
wstring GetIconReplacement(unsigned int uiIcon);
|
||||
|
||||
float getAppTime() { return m_Time.fAppTime; }
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -868,7 +868,10 @@ void CPlatformNetworkManagerStub::SearchForGames()
|
||||
info->sessionId = static_cast<uint64_t>(inet_addr(lanSessions[i].hostIP)) |
|
||||
static_cast<uint64_t>(lanSessions[i].hostPort) << 32;
|
||||
|
||||
friendsSessions[0].push_back(info);
|
||||
//Fix null crash? I think its here...
|
||||
if (info) {
|
||||
friendsSessions[0].push_back(info);
|
||||
}
|
||||
}
|
||||
|
||||
m_searchResultsCount[0] = static_cast<int>(friendsSessions[0].size());
|
||||
|
||||
@@ -70,12 +70,61 @@ void UIComponent_PressStartToPlay::handleReload()
|
||||
m_controlPressStartPanel.setVisible(showPressStart);
|
||||
}
|
||||
|
||||
void UIComponent_PressStartToPlay::ShowAchievementToast(string achievementName, string achievementDescription, string achT)
|
||||
{
|
||||
/*IggyStringUTF8 stringVal;
|
||||
stringVal.string = (char*)label.c_str();
|
||||
stringVal.length = static_cast<S32>(label.length());
|
||||
value[0].type = IGGY_DATATYPE_string_UTF8;
|
||||
value[0].string8 = stringVal;*/
|
||||
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[3];
|
||||
|
||||
IggyStringUTF8 stringVal1;
|
||||
value[0].type = IGGY_DATATYPE_string_UTF8;
|
||||
stringVal1.string = (char*)achievementName.c_str();
|
||||
stringVal1.length = static_cast<S32>(achievementName.length());
|
||||
value[0].string8 = stringVal1;
|
||||
|
||||
IggyStringUTF8 stringVal2;
|
||||
stringVal2.string = (char*)achievementDescription.c_str();
|
||||
stringVal2.length = static_cast<S32>(achievementDescription.length());
|
||||
value[1].type = IGGY_DATATYPE_string_UTF8;
|
||||
value[1].string8 = stringVal2;
|
||||
|
||||
IggyStringUTF8 stringVal3;
|
||||
stringVal3.string = (char*)achT.c_str();
|
||||
stringVal3.length = static_cast<S32>(achT.length()+3);
|
||||
value[2].type = IGGY_DATATYPE_string_UTF8;
|
||||
value[2].string8 = stringVal3;
|
||||
|
||||
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcShowAchToast, 3, value);
|
||||
|
||||
addTimer(1, 5000);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void UIComponent_PressStartToPlay::HideAchievementToast()
|
||||
{
|
||||
IggyDataValue result;
|
||||
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcHideAchToast, 0, nullptr);
|
||||
|
||||
Minecraft::GetInstance()->achID = 0;
|
||||
}
|
||||
|
||||
void UIComponent_PressStartToPlay::handleTimerComplete(int id)
|
||||
{
|
||||
m_controlPressStartPanel.setVisible(false);
|
||||
for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
|
||||
{
|
||||
m_showingPressStart[i] = false;
|
||||
if (id == 1) {
|
||||
HideAchievementToast();
|
||||
killTimer(id);
|
||||
ui.toastOn = false;
|
||||
}
|
||||
}
|
||||
ui.ClearPressStart();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "UIScene.h"
|
||||
#include "UIControl_Label.h"
|
||||
|
||||
class UIComponent_PressStartToPlay : public UIScene
|
||||
{
|
||||
@@ -15,7 +16,7 @@ private:
|
||||
protected:
|
||||
UIControl_Label m_labelTrialTimer, m_labelPressStart, m_playerDisplayName;
|
||||
UIControl m_controlSaveIcon, m_controlPressStartPanel;
|
||||
IggyName m_funcShowController;
|
||||
IggyName m_funcShowController, m_funcShowAchToast, m_funcHideAchToast;
|
||||
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
|
||||
UI_MAP_ELEMENT(m_labelTrialTimer, "TrialTimer")
|
||||
UI_MAP_ELEMENT(m_controlSaveIcon, "SaveIcon")
|
||||
@@ -26,6 +27,8 @@ protected:
|
||||
UI_END_MAP_CHILD_ELEMENTS()
|
||||
|
||||
UI_MAP_NAME(m_funcShowController, L"ShowController");
|
||||
UI_MAP_NAME(m_funcShowAchToast, L"ShowAchievementToast");
|
||||
UI_MAP_NAME(m_funcHideAchToast, L"HideAchievementToast");
|
||||
UI_END_MAP_ELEMENTS_AND_NAMES()
|
||||
|
||||
public:
|
||||
@@ -47,6 +50,9 @@ public:
|
||||
// Returns true if lower scenes in this scenes layer, or in any layer below this scenes layers should be hidden
|
||||
virtual bool hidesLowerScenes() { return false; }
|
||||
|
||||
void ShowAchievementToast(string achievementName, string achievementDescription, string achT = "");
|
||||
void HideAchievementToast();
|
||||
|
||||
virtual void handleReload();
|
||||
virtual void handleTimerComplete(int id);
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ public:
|
||||
eTexturePackList,
|
||||
eBitmapIcon,
|
||||
eTouchControl,
|
||||
eAchievementList,
|
||||
};
|
||||
protected:
|
||||
eUIControlType m_eControlType;
|
||||
@@ -63,7 +64,7 @@ public:
|
||||
UIControl();
|
||||
|
||||
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
|
||||
void UpdateControl();
|
||||
virtual void UpdateControl();
|
||||
void setHidden(bool bHidden) {m_bHidden=bHidden;}
|
||||
bool getHidden(void) {return m_bHidden;}
|
||||
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
#include "UIControl_AchievementsList.h"
|
||||
#include "stdafx.h"
|
||||
#include "UI.h"
|
||||
#include "../../../Minecraft.World/JavaMath.h"
|
||||
|
||||
UIControl_AchievementsList::UIControl_AchievementsList()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::init(int id)
|
||||
{
|
||||
m_id = id;
|
||||
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[1];
|
||||
value[0].type = IGGY_DATATYPE_number;
|
||||
value[0].number = id;
|
||||
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_initFunc, 1, value);
|
||||
|
||||
//Hardcoded from SWF since it techinically won't ever change, and getting the x and y just doesnt work through the intended way
|
||||
m_x = 221;
|
||||
m_y = 204;
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::setCurrentSelection(int iSelection)
|
||||
{
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[1];
|
||||
|
||||
value[0].type = IGGY_DATATYPE_number;
|
||||
value[0].number = iSelection;
|
||||
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcHighlightItem, 1, value);
|
||||
}
|
||||
|
||||
bool UIControl_AchievementsList::setupControl(UIScene* scene, IggyValuePath* parent, const string& controlName)
|
||||
{
|
||||
UIControl::setControlType(UIControl::eAchievementList);
|
||||
bool success = UIControl_Base::setupControl(scene, parent, controlName);
|
||||
|
||||
//Label specific initialisers
|
||||
m_funcAddNewItem = registerFastName(L"addNewItem");
|
||||
m_funcHighlightItem = registerFastName(L"HighlightItem");
|
||||
m_funcSetTouchFocus = registerFastName(L"SetTouchFocus");
|
||||
m_funcEnableButton = registerFastName(L"EnableButton");
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::UpdateControl()
|
||||
{
|
||||
F64 fwidth, fheight;
|
||||
IggyValueGetF64RS(getIggyValuePath(), m_nameWidth, nullptr, &fwidth);
|
||||
IggyValueGetF64RS(getIggyValuePath(), m_nameHeight, nullptr, &fheight);
|
||||
m_width = static_cast<S32>(Math::round(fwidth));
|
||||
m_height = static_cast<S32>(Math::round(fheight));
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::SetTouchFocus(S32 iX, S32 iY, bool bRepeat)
|
||||
{
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[3];
|
||||
|
||||
value[0].type = IGGY_DATATYPE_number;
|
||||
value[0].number = iX;
|
||||
value[1].type = IGGY_DATATYPE_number;
|
||||
value[1].number = iY;
|
||||
value[2].type = IGGY_DATATYPE_boolean;
|
||||
value[2].boolval = bRepeat;
|
||||
|
||||
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcSetTouchFocus, 3, value);
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::addnewItem(int id, wstring textureName)
|
||||
{
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[2];
|
||||
value[0].type = IGGY_DATATYPE_number;
|
||||
value[0].number = id;
|
||||
value[1].type = IGGY_DATATYPE_string_UTF16;
|
||||
IggyStringUTF16 stringVal;
|
||||
stringVal.string = (IggyUTF16*)textureName.c_str();
|
||||
stringVal.length = textureName.length();
|
||||
value[1].string16 = stringVal;
|
||||
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcAddNewItem, 2, value);
|
||||
|
||||
++m_itemCount;
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::EnableButton(int id, bool bEnable) {
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[2];
|
||||
value[0].type = IGGY_DATATYPE_number;
|
||||
value[0].number = id;
|
||||
value[1].type = IGGY_DATATYPE_boolean;
|
||||
value[1].boolval = bEnable;
|
||||
|
||||
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcEnableButton, 2, value);
|
||||
}
|
||||
|
||||
void UIControl_AchievementsList::updateChildFocus(int iChild)
|
||||
{
|
||||
m_iCurrentSelection = iChild;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
#include "UIControl_Base.h"
|
||||
|
||||
class UIControl_AchievementsList : public UIControl_Base
|
||||
{
|
||||
private:
|
||||
IggyName m_funcAddNewItem, m_funcHighlightItem, m_funcSetTouchFocus, m_funcEnableButton;
|
||||
|
||||
public:
|
||||
UIControl_AchievementsList();
|
||||
void init(int id);
|
||||
int m_itemCount;
|
||||
int m_iCurrentSelection = 0;
|
||||
void SetTouchFocus(S32 iX, S32 iY, bool bRepeat);
|
||||
void UpdateControl();
|
||||
void EnableButton(int id, bool bEnable);
|
||||
void updateChildFocus(int iChild);
|
||||
void setCurrentSelection(int iSelection);
|
||||
virtual bool setupControl(UIScene* scene, IggyValuePath* parent, const string& controlName);
|
||||
void UIControl_AchievementsList::addnewItem(int id, wstring textureName);
|
||||
//virtual void ReInit();
|
||||
};
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "UIScene.h"
|
||||
#include "UIControl_Slider.h"
|
||||
#include "UIControl_TexturePackList.h"
|
||||
#include "UIControl_AchievementsList.h"
|
||||
#include "UIScene_AchievementsMenu.h"
|
||||
#include "../../../Minecraft.World/StringHelpers.h"
|
||||
#include "../../LocalPlayer.h"
|
||||
#include "../../DLCTexturePack.h"
|
||||
@@ -581,6 +583,11 @@ void UIController::loadSkins()
|
||||
m_iggyLibraries[eLibrary_Tooltips] = loadSkin(L"skinHDTooltips.swf", L"skinHDTooltips.swf");
|
||||
m_iggyLibraries[eLibrary_Default] = loadSkin(L"skinHD.swf", L"skinHD.swf");
|
||||
|
||||
//Load skins specifcally edited for use on achievements, if we
|
||||
//used these as skin.swf and skinInGame.swf it breaks some other things
|
||||
m_iggyLibraries[eLibrary_LCDefault] = loadSkin(L"skinLC.swf", L"skinLC.swf");
|
||||
m_iggyLibraries[eLibrary_LCInGame] = loadSkin(L"skinInGameLC.swf", L"skinInGameLC.swf");
|
||||
|
||||
#elif defined _DURANGO
|
||||
m_iggyLibraries[eLibrary_Platform] = loadSkin(L"skinHDDurango.swf", L"platformskinHD.swf");
|
||||
|
||||
@@ -924,7 +931,7 @@ void UIController::tickInput()
|
||||
UIControl::eUIControlType type = ctrl->getControlType();
|
||||
if (type != UIControl::eButton && type != UIControl::eTextInput &&
|
||||
type != UIControl::eCheckBox && type != UIControl::eSlider &&
|
||||
type != UIControl::eButtonList && type != UIControl::eTexturePackList)
|
||||
type != UIControl::eButtonList && type != UIControl::eTexturePackList && type != UIControl::eAchievementList)
|
||||
continue;
|
||||
|
||||
// If the scene has an active panel (e.g. tab menus),
|
||||
@@ -958,6 +965,18 @@ void UIController::tickInput()
|
||||
hitCtrl = NULL;
|
||||
break; // ButtonList takes priority
|
||||
}
|
||||
if (type == UIControl::eAchievementList)
|
||||
{
|
||||
auto t = (UIScene_AchievementsMenu*)pScene;
|
||||
static_cast<UIControl_AchievementsList*>(ctrl)->SetTouchFocus(
|
||||
static_cast<S32>(sceneMouseX - cx), static_cast<S32>(sceneMouseY - cy), false);
|
||||
/*static_cast<UIControl_AchievementsList*>(ctrl)->SetTouchFocus(
|
||||
static_cast<S32>(t->aX), static_cast<S32>(t->aY), false);*/
|
||||
hitControlId = -1;
|
||||
hitArea = INT_MAX;
|
||||
hitCtrl = NULL;
|
||||
break;
|
||||
}
|
||||
if (type == UIControl::eTexturePackList)
|
||||
{
|
||||
// TexturePackList expects coords relative to its origin.
|
||||
@@ -1830,6 +1849,10 @@ GDrawTexture * RADLINK UIController::TextureSubstitutionCreateCallback ( void *
|
||||
Textures *t = Minecraft::GetInstance()->textures;
|
||||
int id = t->getTexture(&image,C4JRender::TEXTURE_FORMAT_RxGyBzAw,false);
|
||||
|
||||
std::string result(texture_name, texture_name + wcslen(texture_name));
|
||||
|
||||
bool isSub = result.find("sub") != std::string::npos;
|
||||
|
||||
// 4J Stu - All our flash controls that allow replacing textures use a special 64x64 symbol
|
||||
// Force this size here so that our images don't get scaled wildly
|
||||
#if (defined __ORBIS__ || defined _DURANGO )
|
||||
@@ -1843,11 +1866,15 @@ GDrawTexture * RADLINK UIController::TextureSubstitutionCreateCallback ( void *
|
||||
#if defined _WINDOWS64
|
||||
// Only set the size to 96x96 for 1080p on Windows
|
||||
UIScene *scene = uiController->GetTopScene(0);
|
||||
if (scene->getSceneResolution() == UIScene::eSceneResolution_1080)
|
||||
{
|
||||
*width = 96;
|
||||
*height = 96;
|
||||
//Fix for icon size changing on Achievements
|
||||
if (scene) {
|
||||
if (scene->getSceneResolution() == UIScene::eSceneResolution_1080 && (scene->getSceneType() != eUIScene_PauseMenu && scene->getSceneType() != eUIScene_MainMenu && scene->getSceneType() != eUIScene_AchievementsMenu) && isSub == false)
|
||||
{
|
||||
*width = 96;
|
||||
*height = 96;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
*destroy_callback_data = (void *)id;
|
||||
@@ -2933,6 +2960,16 @@ void UIController::HidePressStart()
|
||||
if(m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()) m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->showPressStart(0, false);
|
||||
}
|
||||
|
||||
void UIController::ShowAchievementToast(string achievementName, string achievementDescription, byteArray b, string achT)
|
||||
{
|
||||
if (m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()) {
|
||||
m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->registerSubstitutionTexture(convStringToWstring(achT) + L"sub", b.data, b.length);
|
||||
m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->ShowAchievementToast(achievementName, achievementDescription, achT + "sub");
|
||||
}
|
||||
toastOn = true;
|
||||
}
|
||||
|
||||
|
||||
void UIController::ClearPressStart()
|
||||
{
|
||||
m_iPressStartQuadrantsMask = 0;
|
||||
|
||||
@@ -18,6 +18,8 @@ class UIController : public IUIController
|
||||
public:
|
||||
static int64_t iggyAllocCount;
|
||||
|
||||
bool toastOn = false;
|
||||
|
||||
// MGH - added to prevent crash loading Iggy movies while the skins were being reloaded
|
||||
static CRITICAL_SECTION ms_reloadSkinCS;
|
||||
static bool ms_bReloadSkinCSInitialised;
|
||||
@@ -100,6 +102,8 @@ private:
|
||||
eLibrary_HUD,
|
||||
eLibrary_Tooltips,
|
||||
eLibrary_Default,
|
||||
eLibrary_LCDefault,
|
||||
eLibrary_LCInGame,
|
||||
|
||||
#if defined(_WINDOWS64)
|
||||
// Non-HD skin libraries needed by 720p/480p scene SWFs.
|
||||
@@ -199,6 +203,8 @@ protected:
|
||||
UIGroup *m_groups[eUIGroup_COUNT];
|
||||
|
||||
public:
|
||||
auto& getGroups() { return m_groups; }
|
||||
|
||||
void showComponent(int iPad, EUIScene scene, EUILayer layer, EUIGroup group, bool show)
|
||||
{
|
||||
m_groups[group]->showComponent(iPad, scene, layer, show);
|
||||
@@ -379,6 +385,7 @@ public:
|
||||
virtual bool PressStartPlaying(unsigned int iPad);
|
||||
virtual void ShowPressStart(unsigned int iPad);
|
||||
virtual void HidePressStart();
|
||||
void ShowAchievementToast(string achievementName, string achievementDescription, byteArray b, string achT = "");
|
||||
void ClearPressStart();
|
||||
|
||||
virtual C4JStorage::EMessageResult RequestAlertMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=nullptr,LPVOID lpParam=nullptr, WCHAR *pwchFormatString=nullptr);
|
||||
|
||||
@@ -98,6 +98,7 @@ enum EUIScene
|
||||
eUIScene_BeaconMenu,
|
||||
eUIScene_HorseMenu,
|
||||
eUIScene_FireworksMenu,
|
||||
eUIScene_AchievementsMenu,
|
||||
|
||||
#ifdef _XBOX
|
||||
// eUIScene_TransferToXboxOne,
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "UI.h"
|
||||
#include "UILayer.h"
|
||||
#include "UIScene.h"
|
||||
#include "UIScene_AchievementsMenu.h"
|
||||
|
||||
UILayer::UILayer(UIGroup *parent)
|
||||
{
|
||||
@@ -266,6 +267,9 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
|
||||
case eUIScene_HelpAndOptionsMenu:
|
||||
newScene = new UIScene_HelpAndOptionsMenu(iPad, initData, this);
|
||||
break;
|
||||
case eUIScene_AchievementsMenu:
|
||||
newScene = new UIScene_AchievementsMenu(iPad, initData, this);
|
||||
break;
|
||||
case eUIScene_SettingsMenu:
|
||||
newScene = new UIScene_SettingsMenu(iPad, initData, this);
|
||||
break;
|
||||
|
||||
@@ -757,7 +757,7 @@ void UIScene::setVisible(bool visible)
|
||||
|
||||
void UIScene::customDraw(IggyCustomDrawCallbackRegion *region)
|
||||
{
|
||||
app.DebugPrintf("Handling custom draw for scene with no override!\n");
|
||||
//app.DebugPrintf("Handling custom draw for scene with no override!\n");
|
||||
}
|
||||
|
||||
void UIScene::customDrawSlotControl(IggyCustomDrawCallbackRegion *region, int iPad, shared_ptr<ItemInstance> item, float fAlpha, bool isFoil, bool bDecorations)
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
#include "UIScene_AchievementsMenu.h"
|
||||
#include "UI.h"
|
||||
#include "UILayer.h"
|
||||
#include "../Minecraft.World/HtmlString.h"
|
||||
#include "../Minecraft.World/Achievements.h"
|
||||
#include "../Minecraft.World/Achievement.h"
|
||||
#include "UISplitScreenHelpers.h"
|
||||
#include "StatsCounter.h"
|
||||
#include "MultiPlayerLocalPlayer.h"
|
||||
#include "Windows64/KeyboardMouseInput.h"
|
||||
extern HWND g_hWnd;
|
||||
UIScene_AchievementsMenu::UIScene_AchievementsMenu(int iPad, void* _initData, UILayer* parentLayer) : UIScene(iPad, parentLayer)
|
||||
{
|
||||
// Setup all the Iggy references we need for this scene
|
||||
initialiseMovie();
|
||||
|
||||
/*RECT rc;
|
||||
GetClientRect(g_hWnd, &rc);
|
||||
POINT center;
|
||||
center.x = rc.left;
|
||||
center.y = rc.top;
|
||||
ClientToScreen(g_hWnd, ¢er);
|
||||
SetCursorPos(center.x, center.y);*/
|
||||
m_labelAchievements.init(app.GetString(IDS_ACHIEVEMENTS));
|
||||
//m_labelDesc.init(L"");
|
||||
m_labelName.init(L"");
|
||||
m_achievementsList.init(0);
|
||||
for (int i = 0; i < Achievements::achievements->size(); i++) { //Achievements::achievements->size()
|
||||
std::wstring path;
|
||||
if (app.hasArchiveFile(L"Graphics\\TexturePackIcon.png"))
|
||||
{
|
||||
std::wstring iconStr(Achievements::achievements->at(i)->iconInt.begin(),
|
||||
Achievements::achievements->at(i)->iconInt.end());
|
||||
path = L"Graphics\\Achievements\\TROP" +
|
||||
(iconStr.empty() ? L"000" : iconStr) +
|
||||
L".png";
|
||||
byteArray ba = app.getArchiveFile(path);
|
||||
registerSubstitutionTexture(path, ba.data, ba.length);
|
||||
}
|
||||
std::string result = "Graphics\\Achievements\\" "TROP" + Achievements::achievements->at(i)->iconInt + ".png"; //media\\
|
||||
|
||||
m_achievementsList.addnewItem(i+1, path);
|
||||
int newPad = 0;
|
||||
if (Minecraft::GetInstance()->player != nullptr) {
|
||||
newPad = Minecraft::GetInstance()->player->GetXboxPad();
|
||||
}
|
||||
|
||||
if (Minecraft::GetInstance()->stats[newPad]->hasTaken(Achievements::achievements->at(i)))
|
||||
{
|
||||
m_achievementsList.EnableButton(i, true);
|
||||
}
|
||||
else {
|
||||
m_achievementsList.EnableButton(i, false);
|
||||
}
|
||||
}
|
||||
m_funcSetDesc = registerFastName(L"SetAchievementDescription");
|
||||
m_achievementsList.setCurrentSelection(Minecraft::GetInstance()->achID + 1);
|
||||
m_achievementsList.m_iCurrentSelection = Minecraft::GetInstance()->achID + 1;
|
||||
}
|
||||
void UIScene_AchievementsMenu::handleDestroy()
|
||||
{
|
||||
m_parentLayer->showComponent(m_iPad, eUIComponent_MenuBackground, false);
|
||||
}
|
||||
void UIScene_AchievementsMenu::SetAchievementDescription(wstring desc) {
|
||||
wstring desc2 = L"";
|
||||
if (desc != L"") {
|
||||
HtmlString test = HtmlString(desc, eHTMLColor_White);
|
||||
vector<HtmlString>* lines = new vector<HtmlString>();
|
||||
lines->push_back(test);
|
||||
desc2 = HtmlString::Compose(lines);
|
||||
}
|
||||
IggyDataValue result;
|
||||
IggyDataValue value[1];
|
||||
IggyStringUTF16 stringVal1;
|
||||
value[0].type = IGGY_DATATYPE_string_UTF16;
|
||||
stringVal1.string = (IggyUTF16*)desc2.c_str();
|
||||
stringVal1.length = desc2.length();
|
||||
value[0].string16 = stringVal1;
|
||||
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcSetDesc, 1, value);
|
||||
}
|
||||
wstring UIScene_AchievementsMenu::getMoviePath()
|
||||
{
|
||||
if (app.GetLocalPlayerCount() > 1)
|
||||
{
|
||||
return L"AchievementsMenu";
|
||||
}
|
||||
else
|
||||
{
|
||||
return L"AchievementsMenu";
|
||||
}
|
||||
}
|
||||
void UIScene_AchievementsMenu::updateComponents()
|
||||
{
|
||||
bool bNotInGame = (Minecraft::GetInstance()->level == nullptr);
|
||||
if (!bNotInGame)
|
||||
{
|
||||
m_parentLayer->showComponent(m_iPad, eUIComponent_MenuBackground, true);
|
||||
}
|
||||
m_parentLayer->showComponent(m_iPad, eUIComponent_Logo, false);
|
||||
}
|
||||
void UIScene_AchievementsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool& handled)
|
||||
{
|
||||
ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
|
||||
switch (key)
|
||||
{
|
||||
case ACTION_MENU_CANCEL:
|
||||
ui.NavigateBack(iPad);
|
||||
break;
|
||||
case ACTION_MENU_Y:
|
||||
if (pressed) {
|
||||
showDescription = !showDescription;
|
||||
if (showDescription) {
|
||||
SetAchievementDescription(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->descID));
|
||||
}
|
||||
else {
|
||||
SetAchievementDescription(L"");
|
||||
}
|
||||
}
|
||||
sendInputToMovie(key, repeat, pressed, released);
|
||||
handled = true;
|
||||
break;
|
||||
case ACTION_MENU_UP:
|
||||
if (pressed) {
|
||||
if (m_achievementsList.m_iCurrentSelection > 10) {
|
||||
m_achievementsList.m_iCurrentSelection -= 10;
|
||||
}
|
||||
}
|
||||
sendInputToMovie(key, repeat, pressed, released);
|
||||
handled = true;
|
||||
break;
|
||||
case ACTION_MENU_DOWN:
|
||||
if (pressed) {
|
||||
if (m_achievementsList.m_iCurrentSelection < Achievements::achievements->size() - 10) {
|
||||
m_achievementsList.m_iCurrentSelection += 10;
|
||||
}
|
||||
}
|
||||
sendInputToMovie(key, repeat, pressed, released);
|
||||
handled = true;
|
||||
break;
|
||||
case ACTION_MENU_LEFT:
|
||||
if (pressed) {
|
||||
if (m_achievementsList.m_iCurrentSelection > 1) {
|
||||
m_achievementsList.m_iCurrentSelection -= 1;
|
||||
}
|
||||
}
|
||||
sendInputToMovie(key, repeat, pressed, released);
|
||||
handled = true;
|
||||
break;
|
||||
case ACTION_MENU_RIGHT:
|
||||
if (pressed) {
|
||||
if (m_achievementsList.m_iCurrentSelection < Achievements::achievements->size()) {
|
||||
m_achievementsList.m_iCurrentSelection += 1;
|
||||
}
|
||||
}
|
||||
sendInputToMovie(key, repeat, pressed, released);
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
//m_achievementsList.updateChildFocus(static_cast<int>(childId));
|
||||
};
|
||||
void UIScene_AchievementsMenu::getMouseToSWFScale(float& scaleX, float& scaleY)
|
||||
{
|
||||
extern HWND g_hWnd;
|
||||
RECT rc;
|
||||
GetClientRect(g_hWnd, &rc);
|
||||
int winW = rc.right - rc.left;
|
||||
int winH = rc.bottom - rc.top;
|
||||
if (winW <= 0 || winH <= 0) { scaleX = 1.0f; scaleY = 1.0f; return; }
|
||||
S32 renderW, renderH;
|
||||
C4JRender::eViewportType vp = GetParentLayer()->getViewport();
|
||||
ui.getRenderDimensions(vp, renderW, renderH);
|
||||
if (vp != C4JRender::VIEWPORT_TYPE_FULLSCREEN)
|
||||
Fit16x9(renderW, renderH);
|
||||
float screenW = (float)ui.getScreenWidth();
|
||||
float screenH = (float)ui.getScreenHeight();
|
||||
scaleX = static_cast<float>(m_movieWidth) * screenW / (static_cast<float>(renderW) * static_cast<float>(winW));
|
||||
scaleY = static_cast<float>(m_movieHeight) * screenH / (static_cast<float>(renderH) * static_cast<float>(winH));
|
||||
}
|
||||
void UIScene_AchievementsMenu::tick()
|
||||
{
|
||||
UIScene::tick();
|
||||
//ShowCursor(FALSE);
|
||||
//m_cursorPath1.setVisible(g_KBMInput.IsKBMActive());
|
||||
//g_KBMInput.SetMouseGrabbed(false);
|
||||
|
||||
if (m_achievementsList.m_iCurrentSelection != selection && m_achievementsList.m_iCurrentSelection != 0) {
|
||||
m_achievementsList.setCurrentSelection(m_achievementsList.m_iCurrentSelection - 1);
|
||||
m_labelName.setLabel(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->nameID));
|
||||
if (showDescription) {
|
||||
SetAchievementDescription(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->descID));
|
||||
}
|
||||
else {
|
||||
SetAchievementDescription(L"");
|
||||
}
|
||||
}
|
||||
// Apply mouse delta
|
||||
/*int deltaX = g_KBMInput.GetMouseDeltaX();
|
||||
int deltaY = g_KBMInput.GetMouseDeltaY();
|
||||
if (deltaX != 0 || deltaY != 0)
|
||||
{
|
||||
float scaleX, scaleY;
|
||||
getMouseToSWFScale(scaleX, scaleY);
|
||||
m_pointerPos.x += static_cast<float>(deltaX) * scaleX / 2;
|
||||
m_pointerPos.y += static_cast<float>(deltaY) * scaleY / 2;
|
||||
if (m_pointerPos.x < 0.0f) m_pointerPos.x = 0.0f;
|
||||
if (m_pointerPos.x > static_cast<float>(m_movieWidth)) m_pointerPos.x = static_cast<float>(m_movieWidth);
|
||||
if (m_pointerPos.y < 0.0f) m_pointerPos.y = 0.0f;
|
||||
if (m_pointerPos.y > static_cast<float>(m_movieHeight)) m_pointerPos.y = static_cast<float>(m_movieHeight);
|
||||
}
|
||||
IggyEvent mouseEvent;
|
||||
S32 width, height;
|
||||
m_parentLayer->getRenderDimensions(width, height);
|
||||
S32 x = static_cast<S32>(m_pointerPos.x * (static_cast<F32>(width) / static_cast<F32>(m_movieWidth)));
|
||||
aX = x;
|
||||
S32 y = static_cast<S32>(m_pointerPos.y * (static_cast<F32>(height) / static_cast<F32>(m_movieHeight)));
|
||||
aY = y;
|
||||
IggyMakeEventMouseMove(&mouseEvent, x, y);
|
||||
IggyEventResult result;
|
||||
IggyPlayerDispatchEventRS(getMovie(), &mouseEvent, &result);*/
|
||||
selection = m_achievementsList.m_iCurrentSelection;
|
||||
}
|
||||
void UIScene_AchievementsMenu::updateTooltips()
|
||||
{
|
||||
ui.SetTooltips(m_iPad, -1, IDS_TOOLTIPS_CANCEL, -1, IDS_TOOLTIPS_SHOW_DESCRIPTION);
|
||||
}
|
||||
void UIScene_AchievementsMenu::handleFocusChange(F64 controlId, F64 childId)
|
||||
{
|
||||
switch (static_cast<int>(controlId))
|
||||
{
|
||||
case 0:
|
||||
m_achievementsList.updateChildFocus(static_cast<int>(childId));
|
||||
//m_achievementsList.setCurrentSelection(static_cast<int>(childId));
|
||||
//m_labelName.setLabel(app.GetString(Achievements::achievements->at(static_cast<int>(childId) - 1)->nameID));
|
||||
//SetAchievementDescription(app.GetString(Achievements::achievements->at(static_cast<int>(childId) - 1)->descID));
|
||||
|
||||
//m_labelName.setLabel(app.GetString(IDS_ACHIEVEMENTS);
|
||||
break;
|
||||
};
|
||||
updateTooltips();
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include "Common/UI/UIScene.h"
|
||||
#include "Common/UI/UIControl_Button.h"
|
||||
#include "Common/UI/UIControl_Cursor.h"
|
||||
#include "UIControl_AchievementsList.h"
|
||||
#include "Common/UI/UIControl_Label.h"
|
||||
class UIScene_AchievementsMenu : public UIScene
|
||||
{
|
||||
private:
|
||||
enum EControls
|
||||
{
|
||||
eControl_AchievementsLabel,
|
||||
eControl_AchievementsName,
|
||||
eControl_AchievementsDesc,
|
||||
eControl_AchievementsListContainer
|
||||
};
|
||||
UIControl m_controlMainPanel;
|
||||
UIControl_Label m_labelAchievements, m_labelName, m_labelDesc;
|
||||
UIControl_Cursor m_cursorPath1;
|
||||
vector<UIControl_Button*> m_AchButton;
|
||||
UIControl_AchievementsList m_achievementsList;
|
||||
IggyName m_funcSetDesc;
|
||||
|
||||
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
|
||||
UI_MAP_ELEMENT(m_labelAchievements, "AcheivementsLabel")
|
||||
UI_MAP_ELEMENT(m_labelName, "AchievementName")
|
||||
UI_MAP_ELEMENT(m_labelDesc, "AchievementDescription")
|
||||
//UI_MAP_ELEMENT(m_achievementsList, "AchievementsList")
|
||||
UI_MAP_ELEMENT(m_controlMainPanel, "AchievementsListContainer")
|
||||
UI_MAP_NAME(m_funcSetDesc, L"SetAchievementDescription")
|
||||
UI_BEGIN_MAP_CHILD_ELEMENTS(m_controlMainPanel)
|
||||
UI_MAP_ELEMENT(m_achievementsList, "AchievementsList")
|
||||
UI_END_MAP_CHILD_ELEMENTS()
|
||||
UI_END_MAP_ELEMENTS_AND_NAMES()
|
||||
bool showDescription = false;
|
||||
|
||||
public:
|
||||
struct SceneMousePos
|
||||
{
|
||||
F32 x;
|
||||
F32 y;
|
||||
};
|
||||
int deltaX;
|
||||
int deltaY;
|
||||
int aX;
|
||||
int aY;
|
||||
UIVec2D m_pointerPos;
|
||||
void getMouseToSWFScale(float& scaleX, float& scaleY);
|
||||
UIScene_AchievementsMenu(int iPad, void* initData, UILayer* parentLayer);
|
||||
SceneMousePos GetSceneMousePosition(UIScene* pScene, int rawMouseX, int rawMouseY);
|
||||
virtual void handleDestroy();
|
||||
int selection = 0;
|
||||
void SetAchievementDescription(wstring desc);
|
||||
virtual void tick();
|
||||
virtual EUIScene getSceneType() { return eUIScene_AchievementsMenu; }
|
||||
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool& handled);
|
||||
virtual void handleFocusChange(F64 controlId, F64 childId);
|
||||
virtual void updateComponents();
|
||||
virtual void updateTooltips();
|
||||
protected:
|
||||
virtual wstring getMoviePath();
|
||||
};
|
||||
@@ -2021,6 +2021,7 @@ void UIScene_MainMenu::RunAchievements(int iPad)
|
||||
XShowAchievementsUI( iPad );
|
||||
}
|
||||
#endif
|
||||
ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
|
||||
}
|
||||
|
||||
void UIScene_MainMenu::RunHelpAndOptions(int iPad)
|
||||
|
||||
@@ -619,11 +619,11 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
|
||||
Windows::Xbox::ApplicationModel::Help::Show(user);
|
||||
}
|
||||
break;
|
||||
#elif TO_BE_IMPLEMENTED
|
||||
#endif
|
||||
case BUTTON_PAUSE_ACHIEVEMENTS:
|
||||
|
||||
// guests can't look at achievements
|
||||
if(ProfileManager.IsGuest(pNotifyPressData->UserIndex))
|
||||
/*if(ProfileManager.IsGuest(pNotifyPressData->UserIndex))
|
||||
{
|
||||
UINT uiIDA[1];
|
||||
uiIDA[0]=IDS_OK;
|
||||
@@ -633,8 +633,9 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
|
||||
{
|
||||
XShowAchievementsUI( pNotifyPressData->UserIndex );
|
||||
}
|
||||
}*/
|
||||
ui.NavigateToScene(m_iPad, eUIScene_AchievementsMenu);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case BUTTON_PAUSE_HELPANDOPTIONS:
|
||||
ui.NavigateToScene(m_iPad,eUIScene_HelpAndOptionsMenu);
|
||||
@@ -992,6 +993,7 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::
|
||||
ProfileManager.DisplayFullVersionPurchase(false,pMinecraft->player->GetXboxPad(),eSen_UpsellID_Full_Version_Of_Game);
|
||||
}
|
||||
}
|
||||
pMinecraft->forceStatsSave(pMinecraft->player->GetXboxPad());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "FurnaceScreen.h"
|
||||
#include "TrapScreen.h"
|
||||
|
||||
#include "../Minecraft.Client/Common/UI/UIScene.h"
|
||||
#include "MultiPlayerLocalPlayer.h"
|
||||
#include "CreativeMode.h"
|
||||
#include "GameRenderer.h"
|
||||
@@ -783,6 +784,16 @@ void LocalPlayer::displayClientMessage(int messageId)
|
||||
minecraft->gui->displayClientMessage(messageId, GetXboxPad());
|
||||
}
|
||||
|
||||
// Helper to convert LPCWSTR -> std::string (UTF-8)
|
||||
static std::string WideToUtf8(LPCWSTR wide)
|
||||
{
|
||||
if (!wide) return {};
|
||||
int size = WideCharToMultiByte(CP_UTF8, 0, wide, -1, nullptr, 0, nullptr, nullptr);
|
||||
std::string result(size - 1, '\0');
|
||||
WideCharToMultiByte(CP_UTF8, 0, wide, -1, result.data(), size, nullptr, nullptr);
|
||||
return result;
|
||||
}
|
||||
|
||||
void LocalPlayer::awardStat(Stat *stat, byteArray param)
|
||||
{
|
||||
#ifdef _DURANGO
|
||||
@@ -805,6 +816,28 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
|
||||
if (stat->isAchievement())
|
||||
{
|
||||
Achievement *ach = static_cast<Achievement *>(stat);
|
||||
/*ui.ShowAchievementToast(
|
||||
WideToUtf8(app.GetString(ach->nameID)),
|
||||
WideToUtf8(app.GetString(IDS_ACHIEVEMENT_VIEW))
|
||||
);*/
|
||||
std::wstring iconStr(ach->iconInt.begin(),
|
||||
ach->iconInt.end());
|
||||
wstring path = L"Graphics\\Achievements\\TROP" +
|
||||
(iconStr.empty() ? L"000" : iconStr) +
|
||||
L".png";
|
||||
byteArray ba = app.getArchiveFile(path);
|
||||
//auto t = ui.GetTopScene(0);
|
||||
//t->registerSubstitutionTexture(path, ba.data, ba.length);
|
||||
if (!minecraft->stats[m_iPad]->hasTaken(ach))
|
||||
{
|
||||
ui.ShowAchievementToast(
|
||||
WideToUtf8(app.GetString(ach->nameID)),
|
||||
WideToUtf8(app.FormatHTMLString(0, app.GetString(IDS_ACHIEVEMENT_VIEW), 0xFFFFFFFF, true).c_str()), ba,
|
||||
WideToUtf8(path.c_str())
|
||||
);
|
||||
minecraft->achID = ach->getAchievementID();
|
||||
}
|
||||
//app.FormatHTMLString(0, app.GetString(IDS_ACHIEVEMENT_VIEW));
|
||||
// 4J-PB - changed to attempt to award everytime - the award may need a storage device, so needs a primary player, and the player may not have been a primary player when they first 'got' the award
|
||||
// so let the award manager figure it out
|
||||
//if (!minecraft->stats[m_iPad]->hasTaken(ach))
|
||||
@@ -941,7 +974,6 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
|
||||
// AWARD : Porkchop, cook and eat a porkchop.
|
||||
{
|
||||
@@ -1101,7 +1133,6 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool LocalPlayer::isSolidBlock(int x, int y, int z)
|
||||
|
||||
@@ -53,6 +53,7 @@ public:
|
||||
|
||||
int m_iScreenSection; // assuming 4player splitscreen for now, or -1 for single player
|
||||
uint64_t ullButtonsPressed; // Stores the button presses, since the inputmanager can be ticked faster than the minecraft
|
||||
uint64_t ullButtonsDown; // Stores the button presses, since the inputmanager can be ticked faster than the minecraft
|
||||
// player tick, and a button press and release combo can be missed in the minecraft::tick
|
||||
|
||||
uint64_t ullDpad_last;
|
||||
@@ -62,7 +63,7 @@ public:
|
||||
// 4J-PB - moved these in from the minecraft structure, since they are per player things for splitscreen
|
||||
//int ticks;
|
||||
int missTime;
|
||||
int lastClickTick[2];
|
||||
int lastClickTick[3];
|
||||
bool isRaining ;
|
||||
int m_iThirdPersonView;
|
||||
|
||||
|
||||
@@ -71,11 +71,14 @@
|
||||
#endif
|
||||
#include "Common/UI/IUIScene_CreativeMenu.h"
|
||||
#include "Common/UI/UIFontData.h"
|
||||
#include "Common/UI/UIComponent_PressStartToPlay.h"
|
||||
#include "DLCTexturePack.h"
|
||||
|
||||
#ifdef __ORBIS__
|
||||
#include "Orbis/Network/PsPlusUpsellWrapper_Orbis.h"
|
||||
#endif
|
||||
// Leaderboards inclusion for the ticker thing
|
||||
#include "Common/Leaderboards/LeaderboardManager.h"
|
||||
|
||||
// #define DISABLE_SPU_CODE
|
||||
// 4J Turning this on will change the graph at the bottom of the debug overlay to show the number of packets of each type added per fram
|
||||
@@ -1438,6 +1441,7 @@ void Minecraft::run_middle()
|
||||
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_USE)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_USE;
|
||||
|
||||
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_INVENTORY)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_INVENTORY;
|
||||
if(InputManager.ButtonDown(i, MINECRAFT_ACTION_INVENTORY)) localplayers[i]->ullButtonsDown|=1LL<<MINECRAFT_ACTION_INVENTORY;
|
||||
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_ACTION)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_ACTION;
|
||||
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_CRAFTING)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_CRAFTING;
|
||||
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_PAUSEMENU))
|
||||
@@ -2293,6 +2297,8 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
|
||||
|
||||
//4J-PB - only tick this player's stats
|
||||
stats[iPad]->tick(iPad);
|
||||
if (iPad == ProfileManager.GetPrimaryPad())
|
||||
LeaderboardManager::Instance()->Tick();
|
||||
|
||||
// Tick the opacity timer (to display the interface at default opacity for a certain time if the user has been navigating it)
|
||||
app.TickOpacityTimer(iPad);
|
||||
@@ -3621,16 +3627,17 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
|
||||
#else
|
||||
bool useHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_USE);
|
||||
#endif
|
||||
bool achHeld;
|
||||
if( player->isUsingItem() )
|
||||
{
|
||||
if(!useHeld) gameMode->releaseUsingItem(player);
|
||||
}
|
||||
else if( gameMode->isInputAllowed(MINECRAFT_ACTION_USE) )
|
||||
else if (gameMode->isInputAllowed(MINECRAFT_ACTION_USE))
|
||||
{
|
||||
if( player->abilities.instabuild )
|
||||
{
|
||||
// 4J - attempt to handle click in special creative mode fashion if possible (used for placing blocks at regular intervals)
|
||||
bool didClick = player->creativeModeHandleMouseClick(1, useHeld );
|
||||
bool didClick = player->creativeModeHandleMouseClick(1, useHeld);
|
||||
// If this handler has put us in lastClick_oldRepeat mode then it is because we aren't placing blocks - behave largely as the code used to
|
||||
if( player->lastClickState == LocalPlayer::lastClick_oldRepeat )
|
||||
{
|
||||
@@ -3678,6 +3685,64 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
|
||||
player->lastClickTick[1] = 0;
|
||||
}
|
||||
}
|
||||
achHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_INVENTORY) ||
|
||||
(iPad == 0 && g_KBMInput.IsKBMActive() &&
|
||||
g_KBMInput.IsKeyDown(KeyboardMouseInput::KEY_INVENTORY));
|
||||
if (ui.toastOn) {
|
||||
if (achHeld) {
|
||||
// Record when the hold started
|
||||
if (player->lastClickTick[2] == 0) {
|
||||
player->lastClickTick[2] = ticks;
|
||||
}
|
||||
// Check if held for 1 second
|
||||
bool heldLongEnough = (ticks - player->lastClickTick[2]) >= (timer->ticksPerSecond);
|
||||
if (heldLongEnough) {
|
||||
ui.PlayUISFX(eSFX_Press);
|
||||
ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
|
||||
ui.getGroups()[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->handleTimerComplete(1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// If let go during period, open inventory
|
||||
if (player->lastClickTick[2] != 0) {
|
||||
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
|
||||
if (!player->isRiding())
|
||||
{
|
||||
ui.PlayUISFX(eSFX_Press);
|
||||
}
|
||||
if (gameMode->isServerControlledInventory())
|
||||
{
|
||||
player->sendOpenInventory();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.LoadInventoryMenu(iPad, player);
|
||||
}
|
||||
}
|
||||
// Reset when button is released
|
||||
player->lastClickTick[2] = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Just open inventory if the toast is not open
|
||||
if ((player->ullButtonsPressed & (1LL << MINECRAFT_ACTION_INVENTORY)) && gameMode->isInputAllowed(MINECRAFT_ACTION_INVENTORY))
|
||||
{
|
||||
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
|
||||
if (!player->isRiding())
|
||||
{
|
||||
ui.PlayUISFX(eSFX_Press);
|
||||
}
|
||||
if (gameMode->isServerControlledInventory())
|
||||
{
|
||||
player->sendOpenInventory();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.LoadInventoryMenu(iPad, player);
|
||||
}
|
||||
}
|
||||
player->lastClickTick[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(app.DebugSettingsOn())
|
||||
@@ -3750,19 +3815,33 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
|
||||
|
||||
if((player->ullButtonsPressed&(1LL<<MINECRAFT_ACTION_INVENTORY)) && gameMode->isInputAllowed(MINECRAFT_ACTION_INVENTORY))
|
||||
{
|
||||
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
|
||||
if (!player->isRiding())
|
||||
{
|
||||
ui.PlayUISFX(eSFX_Press);
|
||||
if (achHeld) {
|
||||
|
||||
//ui.PlayUISFX(eSFX_Press);
|
||||
//ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
|
||||
}
|
||||
else {
|
||||
/*shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
|
||||
if (!player->isRiding())
|
||||
{
|
||||
ui.PlayUISFX(eSFX_Press);
|
||||
}
|
||||
|
||||
if(gameMode->isServerControlledInventory())
|
||||
if(gameMode->isServerControlledInventory())
|
||||
{
|
||||
player->sendOpenInventory();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.LoadInventoryMenu(iPad,player);
|
||||
if (gameMode->isServerControlledInventory())
|
||||
{
|
||||
player->sendOpenInventory();
|
||||
}
|
||||
else
|
||||
{
|
||||
app.LoadInventoryMenu(iPad, player);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,8 @@ public:
|
||||
Level *oldLevel; // 4J Stu added to keep a handle on an old level so we can delete it
|
||||
//HANDLE m_hPlayerRespawned; // 4J Added so we can wait in menus until it is done (for async in multiplayer)
|
||||
public:
|
||||
|
||||
bool inventoryWasHeld = false;
|
||||
int achID = 0;
|
||||
MultiPlayerLevel *level;
|
||||
LevelRenderer *levelRenderer;
|
||||
shared_ptr<MultiplayerLocalPlayer> player;
|
||||
|
||||
@@ -211,6 +211,7 @@ void StatsCounter::save(int player, bool force)
|
||||
|
||||
//Check we're going to have enough room to store all possible stats
|
||||
unsigned int uiTotalStatsSize = (Stats::all->size() * 4 * sizeof(unsigned short)) - (Achievements::achievements->size() * 3 * sizeof(unsigned short)) + (LARGE_STATS_COUNT*4*(sizeof(unsigned int)-sizeof(unsigned short)));
|
||||
//Do change this back and fix it.
|
||||
assert( uiTotalStatsSize <= (CConsoleMinecraftApp::GAME_DEFINED_PROFILE_DATA_BYTES-sizeof(GAME_SETTINGS)) );
|
||||
|
||||
//Retrieve the data pointer from the profile
|
||||
|
||||
@@ -89,9 +89,9 @@ public:
|
||||
#ifdef _DEBUG
|
||||
void WipeLeaderboards();
|
||||
#endif
|
||||
bool isLargeStat(Stat* stat);
|
||||
|
||||
private:
|
||||
bool isLargeStat(Stat* stat);
|
||||
void dumpStatsToTTY();
|
||||
|
||||
#ifdef _XBOX
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
|
||||
#include "../Network/json.hpp"
|
||||
using json = nlohmann::json;
|
||||
@@ -168,6 +169,31 @@ bool WindowsLeaderboardManager::WriteStats(unsigned int viewCount, ViewIn views)
|
||||
return false; // Since WriteStats is useless we just do this, exact same thing is done in DurangoLeaderboardManager
|
||||
}
|
||||
|
||||
// ByteBukkit: Tick function
|
||||
void WindowsLeaderboardManager::Tick()
|
||||
{
|
||||
if (++m_tickCount < 1000)
|
||||
return;
|
||||
|
||||
m_tickCount = 0;
|
||||
|
||||
std::thread([this]()
|
||||
{
|
||||
static const EStatsType types[] = {
|
||||
eStatsType_Travelling,
|
||||
eStatsType_Mining,
|
||||
eStatsType_Farming,
|
||||
eStatsType_Kills,
|
||||
};
|
||||
|
||||
for (EStatsType t : types)
|
||||
{
|
||||
for (int diff = 0; diff <= 3; ++diff)
|
||||
SendStats(t, diff);
|
||||
}
|
||||
}).detach();
|
||||
}
|
||||
|
||||
bool WindowsLeaderboardManager::SendStats(EStatsType type, int diff)
|
||||
{
|
||||
if (!Windows64Launcher::IsInOfflineMode || Windows64Minecraft::IsOfflineMode)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
class WindowsLeaderboardManager : public LeaderboardManager
|
||||
{
|
||||
public:
|
||||
virtual void Tick() override {}
|
||||
virtual void Tick() override;
|
||||
virtual bool OpenSession() override { return true; }
|
||||
virtual void CloseSession() override {}
|
||||
virtual void DeleteSession() override {}
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
virtual bool isIdle() override { return true; }
|
||||
|
||||
private:
|
||||
int m_tickCount = 0;
|
||||
bool ReadNetworkStats(
|
||||
LeaderboardReadListener* callback,
|
||||
int difficulty,
|
||||
|
||||
@@ -1574,7 +1574,7 @@ void StartGame(Win64LaunchOptions launchOptions, int nCmdShow) {
|
||||
|
||||
if (!g_KBMInput.IsMouseGrabbed())
|
||||
{
|
||||
if (!g_KBMInput.IsKBMActive())
|
||||
if (!g_KBMInput.IsKBMActive() && ui.FindScene(eUIScene_AchievementsMenu) == nullptr)
|
||||
g_KBMInput.SetCursorHiddenForUI(true);
|
||||
else if (!g_KBMInput.IsScreenCursorHidden())
|
||||
g_KBMInput.SetCursorHiddenForUI(false);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</data>
|
||||
|
||||
<data name="IDS_GAMENAME">
|
||||
<value>Minecraft: PlayStation®3 Edition</value>
|
||||
<value>Minecraft: Legacy Console Edition</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_OPTIONSFILE">
|
||||
@@ -32,23 +32,23 @@
|
||||
</data>
|
||||
|
||||
<data name="IDS_CHAT_RESTRICTION_UGC">
|
||||
<value>Online service is disabled on your Sony Entertainment Network account due to chat restrictions.</value>
|
||||
<value>Online service is disabled on your LCE Online account due to chat restrictions.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_CONTENT_RESTRICTION">
|
||||
<value>Online service is disabled on your Sony Entertainment Network account due to parental control settings.</value>
|
||||
<value>Online service is disabled on your LCE Online account due to parental control settings.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ONLINE_SERVICE_TITLE">
|
||||
<value>Online Service</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ERROR_PSN_SIGN_OUT">
|
||||
<value>You have been signed out from the "PSN". Online features of the game will not be available until you sign back into the "PSN".</value>
|
||||
<data name="IDS_ERROR_LCEN_SIGN_OUT">
|
||||
<value>You have been signed out from the "LCEN". Online features of the game will not be available until you sign back into the "LCEN".</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ERROR_PSN_SIGN_OUT_EXIT">
|
||||
<value>You have been signed out from the "PSN". Online features of the game will not be available until you sign back into the "PSN". Exiting to Main Menu.</value>
|
||||
<data name="IDS_ERROR_LCEN_SIGN_OUT_EXIT">
|
||||
<value>You have been signed out from the "LCEN". Online features of the game will not be available until you sign back into the "LCEN". Exiting to Main Menu.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_PLAYER_LIST_TITLE">
|
||||
@@ -104,7 +104,7 @@
|
||||
</data>
|
||||
|
||||
<data name="IDS_CONTENT_RESTRICTION_MULTIPLAYER">
|
||||
<value>Online service is disabled on your Sony Entertainment Network account due to parental control settings for one of your local players.</value>
|
||||
<value>Online service is disabled on your LCE Online account due to parental control settings for one of your local players.</value>
|
||||
</data>
|
||||
<data name="IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE">
|
||||
<value>Online features are disabled due to a game update being available.</value>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<value>Ausblenden</value>
|
||||
</data>
|
||||
<data name="IDS_GAMENAME">
|
||||
<value>Minecraft: PlayStation®3 Edition</value>
|
||||
<value>Minecraft: Legacy Console Edition</value>
|
||||
</data>
|
||||
<data name="IDS_OPTIONSFILE">
|
||||
<value>Optionen</value>
|
||||
@@ -25,19 +25,19 @@
|
||||
<value>Ein Netzwerkfehler ist aufgetreten. Zurück zum Hauptmenü.</value>
|
||||
</data>
|
||||
<data name="IDS_CHAT_RESTRICTION_UGC">
|
||||
<value>Online-Dienste sind aufgrund von Chat-Beschränkungen deines Sony Entertainment Network-Kontos deaktiviert.</value>
|
||||
<value>Online-Dienste sind aufgrund von Chat-Beschränkungen deines LCE Online-Kontos deaktiviert.</value>
|
||||
</data>
|
||||
<data name="IDS_CONTENT_RESTRICTION">
|
||||
<value>Online-Dienste sind aufgrund von Kindersicherungseinstellungen deines Sony Entertainment Network-Kontos deaktiviert.</value>
|
||||
<value>Online-Dienste sind aufgrund von Kindersicherungseinstellungen deines LCE Online-Kontos deaktiviert.</value>
|
||||
</data>
|
||||
<data name="IDS_ONLINE_SERVICE_TITLE">
|
||||
<value>Online-Dienste</value>
|
||||
</data>
|
||||
<data name="IDS_ERROR_PSN_SIGN_OUT">
|
||||
<value>Du wurdest von "PSN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "PSN" angemeldet hast.</value>
|
||||
<data name="IDS_ERROR_LCEN_SIGN_OUT">
|
||||
<value>Du wurdest von "LCEN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "LCEN" angemeldet hast.</value>
|
||||
</data>
|
||||
<data name="IDS_ERROR_PSN_SIGN_OUT_EXIT">
|
||||
<value>Du wurdest von "PSN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "PSN" angemeldet hast. Zurück zum Hauptmenü.</value>
|
||||
<data name="IDS_ERROR_LCEN_SIGN_OUT_EXIT">
|
||||
<value>Du wurdest von "LCEN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "LCEN" angemeldet hast. Zurück zum Hauptmenü.</value>
|
||||
</data>
|
||||
<data name="IDS_PLAYER_LIST_TITLE">
|
||||
<value>Benutzer als Spieler %d auswählen (oder abbrechen, um als Gast zu spielen).</value>
|
||||
@@ -73,7 +73,7 @@
|
||||
<value>Die Verbindung zu deinem Controller wurde getrennt. Bitte schließe den Controller an.</value>
|
||||
</data>
|
||||
<data name="IDS_CONTENT_RESTRICTION_MULTIPLAYER">
|
||||
<value>Online-Dienste sind für dein Sony Entertainment Network-Konto aufgrund von Kindersicherungseinstellungen für einen deiner lokalen Spieler deaktiviert.</value>
|
||||
<value>Online-Dienste sind für dein LCE Online-Konto aufgrund von Kindersicherungseinstellungen für einen deiner lokalen Spieler deaktiviert.</value>
|
||||
</data>
|
||||
<data name="IDS_NO_DLCCATEGORIES">
|
||||
<value>Für diesen Titel sind momentan keine herunterladbaren Inhalte im Angebot.</value>
|
||||
|
||||
@@ -5834,4 +5834,359 @@ Alle Endertruhen in einer Welt sind miteinander verbunden. Gegenstände, die in
|
||||
<data name="IDS_PROGRESS_NEW_WORLD_SEED">
|
||||
<value>Seed für den Weltengenerator finden</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_NAME_TAKING_INVENTORY">
|
||||
<value>Inventur</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_TAKING_INVENTORY">
|
||||
<value>Öffne dein Inventar.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_GETTING_WOOD">
|
||||
<value>Dreimal auf Holz geklopft</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_GETTING_WOOD">
|
||||
<value>Schlage gegen einen Baum, bis ein Holzblock herausspringt.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_BENCHMARKING">
|
||||
<value>Fortgeschrittenes Handwerk</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_BENCHMARKING">
|
||||
<value>Stell aus vier Holzbrettern eine Werkbank her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_MINE">
|
||||
<value>Glück Auf!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_MINE">
|
||||
<value>Stell aus Holz und Stöcken eine Spitzhacke her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_HOT_TOPIC">
|
||||
<value>Heiße Angelegenheit</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_HOT_TOPIC">
|
||||
<value>Stell aus acht Bruchstein-Blöcken einen Ofen her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE">
|
||||
<value>Schmiedekunst</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE">
|
||||
<value>Schmilz einen Eisenbarren.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_FARM">
|
||||
<value>Fang an zu ackern!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_FARM">
|
||||
<value>Stell aus Holz und Stöcken eine Hacke her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_BAKE_BREAD">
|
||||
<value>Bäcker</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_BAKE_BREAD">
|
||||
<value>Backe ein Brot aus Weizen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_THE_LIE">
|
||||
<value>Die Lüge</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_LIE">
|
||||
<value>Backe einen Kuchen aus Weizen, Zucker, Milch und Eiern!</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE">
|
||||
<value>Technischer Fortschritt</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE">
|
||||
<value>Stell eine bessere Spitzhacke her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_DELICIOUS_FISH">
|
||||
<value>Köstlicher Fisch</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_DELICIOUS_FISH">
|
||||
<value>Fange und brate einen Fisch!</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ON_A_RAIL">
|
||||
<value>Bahn frei!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ON_A_RAIL">
|
||||
<value>Reise in einer Lore von deinem Ausgangspunkt aus mindestens 500 m immer in eine Richtung.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_STRIKE">
|
||||
<value>Zu den Waffen!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_STRIKE">
|
||||
<value>Stell aus Holz und Stöcken ein Schwert her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_MONSTER_HUNTER">
|
||||
<value>Monsterjäger</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_MONSTER_HUNTER">
|
||||
<value>Greif ein Monster an und töte es.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_COW_TIPPER">
|
||||
<value>Kuhschubser</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_COW_TIPPER">
|
||||
<value>Gewinne Leder.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_WHEN_PIGS_FLY">
|
||||
<value>Wenn Schweine fliegen</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_WHEN_PIGS_FLY">
|
||||
<value>Reite ein Schwein mit einem Sattel, und füg ihm dann während des Reitens Schaden durch Fallen zu.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK">
|
||||
<value>Alphawolf</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK">
|
||||
<value>Freunde dich mit fünf Wölfen an.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_MOAR_TOOLS">
|
||||
<value>Bestens ausgerüstet</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_MOAR_TOOLS">
|
||||
<value>Stell ein Exemplar von jedem Werkzeug her (1 Spitzhacke, 1 Spaten, 1 Axt und 1 Hacke.).</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS">
|
||||
<value>Feuer frei</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS">
|
||||
<value>Baue einen Spender.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_INTO_THE_NETHER">
|
||||
<value>In den Nether</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_INTO_THE_NETHER">
|
||||
<value>Stell ein Netherportal her.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_EAT_PORKCHOP">
|
||||
<value>Schweinefleisch</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_EAT_PORKCHOP">
|
||||
<value>Koche und iss ein Stück Schweinefleisch.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_PLAY_100_DAYS">
|
||||
<value>Wie die Zeit vergeht</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_PLAY_100_DAYS">
|
||||
<value>Spiele 100 Tage lang.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER">
|
||||
<value>Bogenschütze</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER">
|
||||
<value>Töte einen Creeper mit Pfeilen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_SNIPESKELETON">
|
||||
<value>Scharfschützenduell</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_SNIPESKELETON">
|
||||
<value>Töte ein Skelett mit einem Pfeil aus über 50 Meter Entfernung.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_DIAMONDS">
|
||||
<value>DIAMANTEN!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_DIAMONDS">
|
||||
<value>Beschaffe mithilfe deiner Eisenwerkzeuge Diamanten.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_GHAST">
|
||||
<value>Zurück zum Absender</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_GHAST">
|
||||
<value>Zerstöre einen Ghast mit einem Feuerball.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_BLAZEROD">
|
||||
<value>Spiel mit dem Feuer</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_BLAZEROD">
|
||||
<value>Erleichtere eine Lohe um ihre Rute.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_POTION">
|
||||
<value>Alchemie</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_POTION">
|
||||
<value>Braue einen Trank.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_THE_END">
|
||||
<value>Das Ende?</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_END">
|
||||
<value>Betritt ein Endportal.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_WINGAME">
|
||||
<value>Das Ende.</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_WINGAME">
|
||||
<value>Töte den Enderdrachen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ENCHANTMENTS">
|
||||
<value>Zauberer</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ENCHANTMENTS">
|
||||
<value>Baue einen Zaubertisch.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_OVERKILL">
|
||||
<value>Meister des Kampfes</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_OVERKILL">
|
||||
<value>Verursache mit einem Schlag neun Herzen Schaden.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_BOOKCASE">
|
||||
<value>Bibliothekar</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_BOOKCASE">
|
||||
<value>Baue Bücherregale, um deinen Zaubertisch zu verbessern.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ADVENTURING_TIME">
|
||||
<value>Abenteurerzeit</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ADVENTURING_TIME">
|
||||
<value>Entdecke 17 der 40 verschiedenen Biome.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_REPOPULATION">
|
||||
<value>Nachzucht</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_REPOPULATION">
|
||||
<value>Züchte zwei Kühe mit Weizen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU">
|
||||
<value>Diamanten für dich!</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU">
|
||||
<value>Mit Diamanten nach einem anderen Spieler geworfen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_THE_HAGGLER">
|
||||
<value>Der Feilscher</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_HAGGLER">
|
||||
<value>30 Smaragde abgebaut oder gekauft.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_POT_PLANTER">
|
||||
<value>Topfbepflanzer</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_POT_PLANTER">
|
||||
<value>Stell einen Blumentopf her und platziere ihn.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ITS_A_SIGN">
|
||||
<value>Schilderwald</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ITS_A_SIGN">
|
||||
<value>Ein Schild hergestellt und platziert.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_IRON_BELLY">
|
||||
<value>Starker Magen</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_IRON_BELLY">
|
||||
<value>Halte den Hungertod mit verrottetem Fleisch auf.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY">
|
||||
<value>Scher dich zum Schaf</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY">
|
||||
<value>Eine Schere verwendet, um Wolle von einem Schaf zu erhalten.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_RAINBOW_COLLECTION">
|
||||
<value>Regenbogensammlung</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_RAINBOW_COLLECTION">
|
||||
<value>Sammle Wolle in allen 16 Farben.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_STAYING_FROSTY">
|
||||
<value>Cool bleiben</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_STAYING_FROSTY">
|
||||
<value>Schwimme in Lava, während du den Feuerwiderstand-Effekt hast.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE">
|
||||
<value>Bruchsteinreich</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE">
|
||||
<value>Baue 1.728 Bruchsteine ab und lege sie in eine Truhe.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_RENEWABLE_ENERGY">
|
||||
<value>Erneuerbare Energie</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_RENEWABLE_ENERGY">
|
||||
<value>Verkohle Baumstämme mit Holzkohle, um mehr Holzkohle herzustellen.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS">
|
||||
<value>Musik in meinen Ohren</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS">
|
||||
<value>Spiele eine Schallplatte in einem Plattenspieler ab.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_BODYGUARD">
|
||||
<value>Leibwächter</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_BODYGUARD">
|
||||
<value>Erschaffe einen Eisengolem.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_IRON_MAN">
|
||||
<value>Eisenmann</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_IRON_MAN">
|
||||
<value>Trage eine komplette Eisenrüstung.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR">
|
||||
<value>Zombie-Doktor</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR">
|
||||
<value>Heile einen Zombie-Dorfbewohner.</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_LION_TAMER">
|
||||
<value>Löwenbändiger</value>
|
||||
</data>
|
||||
<data name="IDS_ACHIEVE_DESC_LION_TAMER">
|
||||
<value>Zähme einen Ozelot.</value>
|
||||
</data>
|
||||
<data name="IDS_WINDOWS_EXIT">
|
||||
<value>Minecraft verlassen</value>
|
||||
</data>
|
||||
<data name="IDS_LANGUAGE_SELECTOR">
|
||||
<value>Sprachen</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<data name="IDS_LANG_SYSTEM"> <value>Systemsprache</value> </data>
|
||||
<data name="IDS_LANG_ENGLISH"> <value>Englisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_GERMAN"> <value>Deutsch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_SPANISH"> <value>Spanisch</value> </data>
|
||||
<data name="IDS_LANG_SPANISH_SPAIN"> <value>Spanisch (Spanien)</value> </data>
|
||||
<data name="IDS_LANG_SPANISH_LATIN_AMERICA"> <value>Spanisch (Lateinamerika)</value> </data>
|
||||
|
||||
<data name="IDS_LANG_FRENCH"> <value>Französisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_ITALIAN"> <value>Italienisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_PORTUGUESE"> <value>Portugiesisch</value> </data>
|
||||
<data name="IDS_LANG_PORTUGUESE_PORTUGAL"> <value>Portugiesisch (Portugal)</value> </data>
|
||||
<data name="IDS_LANG_PORTUGUESE_BRAZIL"> <value>Portugiesisch (Brasilien)</value> </data>
|
||||
|
||||
<data name="IDS_LANG_JAPANESE"> <value>Japanisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_KOREAN"> <value>Koreanisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_CHINESE_TRADITIONAL"> <value>Chinesisch (Traditionell)</value> </data>
|
||||
<data name="IDS_LANG_CHINESE_SIMPLIFIED"> <value>Chinesisch (Vereinfacht)</value> </data>
|
||||
|
||||
<data name="IDS_LANG_DANISH"> <value>Dänisch</value> </data>
|
||||
<data name="IDS_LANG_FINISH"> <value>Finnisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_DUTCH"> <value>Niederländisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_POLISH"> <value>Polnisch</value> </data>
|
||||
<data name="IDS_LANG_RUSSIAN"> <value>Russisch</value> </data>
|
||||
<data name="IDS_LANG_SWEDISH"> <value>Schwedisch</value> </data>
|
||||
<data name="IDS_LANG_NORWEGIAN"> <value>Norwegisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_GREEK"> <value>Griechisch</value> </data>
|
||||
|
||||
<data name="IDS_LANG_TURKISH"> <value>Türkisch</value> </data>
|
||||
</root>
|
||||
@@ -8814,4 +8814,106 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc
|
||||
<data name="IDS_WINDOWS_EXIT">
|
||||
<value>Exit Minecraft</value>
|
||||
</data>
|
||||
|
||||
<data name="IDS_ACHIEVE_NAME_TAKING_INVENTORY"><value>Taking Inventory</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_TAKING_INVENTORY"><value>Open your inventory.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_GETTING_WOOD"><value>Getting Wood</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_GETTING_WOOD"><value>Punch a tree until a block of wood pops out.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_BENCHMARKING"><value>Benchmarking</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_BENCHMARKING"><value>Craft a Workbench with four blocks of Wooden Planks.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_MINE"><value>Time to Mine!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_MINE"><value>Use Planks and Sticks to make a Pickaxe.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_HOT_TOPIC"><value>Hot Topic</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_HOT_TOPIC"><value>Construct a Furnace out of eight Cobblestone blocks.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE"><value>Acquire Hardware</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE"><value>Smelt an Iron Ingot.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_FARM"><value>Time to Farm!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_FARM"><value>Make a Hoe.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_BAKE_BREAD"><value>Bake Bread</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_BAKE_BREAD"><value>Turn Wheat into Bread.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_THE_LIE"><value>The Lie</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_LIE"><value>Bake a Cake using: Wheat, Sugar, Milk and Eggs.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE"><value>Getting an Upgrade</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE"><value>Construct a better pickaxe.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_DELICIOUS_FISH"><value>Delicious Fish</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_DELICIOUS_FISH"><value>Catch and cook Fish!</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ON_A_RAIL"><value>On A Rail</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ON_A_RAIL"><value>Travel by Minecart to a point at least 500m in a single direction from where you started.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_TIME_TO_STRIKE"><value>Time to Strike!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_TIME_TO_STRIKE"><value>Use Planks and Sticks to make a Sword.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_MONSTER_HUNTER"><value>Monster Hunter</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_MONSTER_HUNTER"><value>Attack and destroy a monster.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_COW_TIPPER"><value>Cow Tipper</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_COW_TIPPER"><value>Harvest some leather.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_WHEN_PIGS_FLY"><value>When Pigs Fly</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_WHEN_PIGS_FLY"><value>Use a Saddle to ride a Pig, and then have the Pig get hurt from fall damage while riding it.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK"><value>Leader of the Pack</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK"><value>Befriend five Wolves.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_MOAR_TOOLS"><value>MOAR Tools</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_MOAR_TOOLS"><value>Construct one type of each tool.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS"><value>Dispense With This</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS"><value>Construct a dispenser.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_INTO_THE_NETHER"><value>Into The Nether</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_INTO_THE_NETHER"><value>Construct a Nether Portal.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_EAT_PORKCHOP"><value>Pork Chop</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_EAT_PORKCHOP"><value>Cook and eat a Pork Chop.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_PLAY_100_DAYS"><value>Passing the Time</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_PLAY_100_DAYS"><value>Play for 100 days.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER"><value>Archer</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER"><value>Kill a Creeper with Arrows.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_SNIPESKELETON"><value>Sniper Duel</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_SNIPESKELETON"><value>Kill a Skeleton with an Arrow from more than 50 meters.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_DIAMONDS"><value>DIAMONDS!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_DIAMONDS"><value>Acquire diamonds with your iron tools.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_GHAST"><value>Return to Sender</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_GHAST"><value>Destroy a Ghast with a Fireball.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_BLAZEROD"><value>Into Fire</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_BLAZEROD"><value>Relieve a Blaze of its rod.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_POTION"><value>Local Brewery</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_POTION"><value>Brew a potion.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_THE_END"><value>The End?</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_END"><value>Enter an End Portal.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_WINGAME"><value>The End.</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_WINGAME"><value>Kill the Enderdragon.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ENCHANTMENTS"><value>Enchanter</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ENCHANTMENTS"><value>Construct an Enchantment Table.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_OVERKILL"><value>Overkill</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_OVERKILL"><value>Deal nine hearts of damage in a single hit.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_BOOKCASE"><value>Librarian</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_BOOKCASE"><value>Build some Bookshelves to improve your Enchantment Table.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ADVENTURING_TIME"><value>Adventuring Time</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ADVENTURING_TIME"><value>Discover all biomes.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_REPOPULATION"><value>Repopulation</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_REPOPULATION"><value>Breed two Cows with Wheat.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU"><value>Diamonds to you!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU"><value>Throw diamonds to another player.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_THE_HAGGLER"><value>The Haggler</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_THE_HAGGLER"><value>Mine or purchase 30 Emeralds.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_POT_PLANTER"><value>Pot Planter</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_POT_PLANTER"><value>Craft and place a Flower pot.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ITS_A_SIGN"><value>It's a Sign!</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ITS_A_SIGN"><value>Craft and place a sign.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_IRON_BELLY"><value>Iron Belly</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_IRON_BELLY"><value>Stop starvation using rotten flesh.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY"><value>Have a Shearful Day</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY"><value>Use Shears to obtain Wool from a Sheep.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_RAINBOW_COLLECTION"><value>Rainbow Collection</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_RAINBOW_COLLECTION"><value>Gather all 16 colors of Wool.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_STAYING_FROSTY"><value>Stayin' Frosty</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_STAYING_FROSTY"><value>Swim in Lava while having the Fire Resistance effect.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE"><value>Chestful of Cobblestone</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE"><value>Mine 1,728 Cobblestone and place it in a Chest.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_RENEWABLE_ENERGY"><value>Renewable Energy</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_RENEWABLE_ENERGY"><value>Smelt Wood Trunks using Charcoal to make more Charcoal.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS"><value>Music to my Ears</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS"><value>Play a Music Disc in a Jukebox.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_BODYGUARD"><value>Body Guard</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_BODYGUARD"><value>Create an Iron Golem.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_IRON_MAN"><value>Iron Man</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_IRON_MAN"><value>Wear a full suit of Iron Armor.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR"><value>Zombie Doctor</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR"><value>Cure a Zombie Villager.</value></data>
|
||||
<data name="IDS_ACHIEVE_NAME_LION_TAMER"><value>Lion Tamer</value></data>
|
||||
<data name="IDS_ACHIEVE_DESC_LION_TAMER"><value>Tame an ocelot.</value></data>
|
||||
<data name="IDS_ACHIEVEMENT_VIEW"><value>Hold {*CONTROLLER_VK_Y*} to view</value></data>
|
||||
</root>
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
// Auto-generated by StringTable builder — do not edit manually.
|
||||
// Source language: en-US
|
||||
// Total strings: 2287
|
||||
// Total strings: 2388
|
||||
|
||||
#define IDS_NULL 0
|
||||
#define IDS_OK 1
|
||||
@@ -67,8 +67,8 @@
|
||||
#define IDS_CHAT_RESTRICTION_UGC 61
|
||||
#define IDS_CONTENT_RESTRICTION 62
|
||||
#define IDS_ONLINE_SERVICE_TITLE 63
|
||||
#define IDS_ERROR_PSN_SIGN_OUT 64
|
||||
#define IDS_ERROR_PSN_SIGN_OUT_EXIT 65
|
||||
#define IDS_ERROR_LCEN_SIGN_OUT 64
|
||||
#define IDS_ERROR_LCEN_SIGN_OUT_EXIT 65
|
||||
#define IDS_PLAYER_LIST_TITLE 66
|
||||
#define IDS_DLC_PRICE_FREE 67
|
||||
#define IDS_CORRUPT_OPTIONS 68
|
||||
@@ -2166,127 +2166,228 @@
|
||||
#define IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN 2160
|
||||
#define IDS_TOOLTIPS_CURE 2161
|
||||
#define IDS_WINDOWS_EXIT 2162
|
||||
#define IDS_LANG_SYSTEM 2163
|
||||
#define IDS_LANG_ENGLISH 2164
|
||||
#define IDS_LANG_GERMAN 2165
|
||||
#define IDS_LANG_SPANISH 2166
|
||||
#define IDS_LANG_SPANISH_SPAIN 2167
|
||||
#define IDS_LANG_SPANISH_LATIN_AMERICA 2168
|
||||
#define IDS_LANG_FRENCH 2169
|
||||
#define IDS_LANG_ITALIAN 2170
|
||||
#define IDS_LANG_PORTUGUESE 2171
|
||||
#define IDS_LANG_PORTUGUESE_PORTUGAL 2172
|
||||
#define IDS_LANG_PORTUGUESE_BRAZIL 2173
|
||||
#define IDS_LANG_JAPANESE 2174
|
||||
#define IDS_LANG_KOREAN 2175
|
||||
#define IDS_LANG_CHINESE_TRADITIONAL 2176
|
||||
#define IDS_LANG_CHINESE_SIMPLIFIED 2177
|
||||
#define IDS_LANG_DANISH 2178
|
||||
#define IDS_LANG_FINISH 2179
|
||||
#define IDS_LANG_DUTCH 2180
|
||||
#define IDS_LANG_POLISH 2181
|
||||
#define IDS_LANG_RUSSIAN 2182
|
||||
#define IDS_LANG_SWEDISH 2183
|
||||
#define IDS_LANG_NORWEGIAN 2184
|
||||
#define IDS_LANG_GREEK 2185
|
||||
#define IDS_LANG_TURKISH 2186
|
||||
#define IDS_LEADERBOARD_KILLS_EASY 2187
|
||||
#define IDS_LEADERBOARD_KILLS_NORMAL 2188
|
||||
#define IDS_LEADERBOARD_KILLS_HARD 2189
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2190
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2191
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2192
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2193
|
||||
#define IDS_LEADERBOARD_FARMING_PEACEFUL 2194
|
||||
#define IDS_LEADERBOARD_FARMING_EASY 2195
|
||||
#define IDS_LEADERBOARD_FARMING_NORMAL 2196
|
||||
#define IDS_LEADERBOARD_FARMING_HARD 2197
|
||||
#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2198
|
||||
#define IDS_LEADERBOARD_TRAVELLING_EASY 2199
|
||||
#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2200
|
||||
#define IDS_LEADERBOARD_TRAVELLING_HARD 2201
|
||||
#define IDS_TIPS_GAMETIP_0 2202
|
||||
#define IDS_TIPS_GAMETIP_1 2203
|
||||
#define IDS_TIPS_GAMETIP_48 2204
|
||||
#define IDS_TIPS_GAMETIP_44 2205
|
||||
#define IDS_TIPS_GAMETIP_45 2206
|
||||
#define IDS_TIPS_TRIVIA_4 2207
|
||||
#define IDS_TIPS_TRIVIA_17 2208
|
||||
#define IDS_HOW_TO_PLAY_MULTIPLAYER 2209
|
||||
#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2210
|
||||
#define IDS_HOW_TO_PLAY_CREATIVE 2211
|
||||
#define IDS_TUTORIAL_TASK_FLY 2212
|
||||
#define IDS_TOOLTIPS_SELECTDEVICE 2213
|
||||
#define IDS_TOOLTIPS_CHANGEDEVICE 2214
|
||||
#define IDS_TOOLTIPS_VIEW_GAMERCARD 2215
|
||||
#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2216
|
||||
#define IDS_TOOLTIPS_INVITE_PARTY 2217
|
||||
#define IDS_CONFIRM_START_CREATIVE 2218
|
||||
#define IDS_CONFIRM_START_SAVEDINCREATIVE 2219
|
||||
#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2220
|
||||
#define IDS_CONFIRM_START_HOST_PRIVILEGES 2221
|
||||
#define IDS_CONNECTION_LOST_LIVE 2222
|
||||
#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2223
|
||||
#define IDS_AWARD_AVATAR1 2224
|
||||
#define IDS_AWARD_AVATAR2 2225
|
||||
#define IDS_AWARD_AVATAR3 2226
|
||||
#define IDS_AWARD_THEME 2227
|
||||
#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2228
|
||||
#define IDS_UNLOCK_AVATAR_TEXT 2229
|
||||
#define IDS_UNLOCK_GAMERPIC_TEXT 2230
|
||||
#define IDS_UNLOCK_THEME_TEXT 2231
|
||||
#define IDS_UNLOCK_ACCEPT_INVITE 2232
|
||||
#define IDS_UNLOCK_GUEST_TEXT 2233
|
||||
#define IDS_LEADERBOARD_GAMERTAG 2234
|
||||
#define IDS_GROUPNAME_POTIONS_480 2235
|
||||
#define IDS_RETURNEDTOTITLESCREEN_TEXT 2236
|
||||
#define IDS_TRIALOVER_TEXT 2237
|
||||
#define IDS_FATAL_ERROR_TEXT 2238
|
||||
#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2239
|
||||
#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2240
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2241
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2242
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2243
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2244
|
||||
#define IDS_SAVE_ICON_MESSAGE 2245
|
||||
#define IDS_GAMEOPTION_HOST_PRIVILEGES 2246
|
||||
#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2247
|
||||
#define IDS_ACHIEVEMENTS 2248
|
||||
#define IDS_LABEL_GAMERTAGS 2249
|
||||
#define IDS_IN_GAME_GAMERTAGS 2250
|
||||
#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2251
|
||||
#define IDS_TITLE_UPDATE_NAME 2252
|
||||
#define IDS_PLATFORM_NAME 2253
|
||||
#define IDS_BACK_BUTTON 2254
|
||||
#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2255
|
||||
#define IDS_KICK_PLAYER_DESCRIPTION 2256
|
||||
#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2257
|
||||
#define IDS_WORLD_SIZE_TITLE_SMALL 2258
|
||||
#define IDS_WORLD_SIZE_TITLE_MEDIUM 2259
|
||||
#define IDS_WORLD_SIZE_TITLE_LARGE 2260
|
||||
#define IDS_WORLD_SIZE_TITLE_CLASSIC 2261
|
||||
#define IDS_WORLD_SIZE 2262
|
||||
#define IDS_GAMEOPTION_WORLD_SIZE 2263
|
||||
#define IDS_DISABLE_SAVING 2264
|
||||
#define IDS_GAMEOPTION_DISABLE_SAVING 2265
|
||||
#define IDS_RICHPRESENCE_GAMESTATE 2266
|
||||
#define IDS_RICHPRESENCE_IDLE 2267
|
||||
#define IDS_RICHPRESENCE_MENUS 2268
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER 2269
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2270
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2271
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2272
|
||||
#define IDS_RICHPRESENCESTATE_BLANK 2273
|
||||
#define IDS_RICHPRESENCESTATE_RIDING_PIG 2274
|
||||
#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2275
|
||||
#define IDS_RICHPRESENCESTATE_BOATING 2276
|
||||
#define IDS_RICHPRESENCESTATE_FISHING 2277
|
||||
#define IDS_RICHPRESENCESTATE_CRAFTING 2278
|
||||
#define IDS_RICHPRESENCESTATE_FORGING 2279
|
||||
#define IDS_RICHPRESENCESTATE_NETHER 2280
|
||||
#define IDS_RICHPRESENCESTATE_CD 2281
|
||||
#define IDS_RICHPRESENCESTATE_MAP 2282
|
||||
#define IDS_RICHPRESENCESTATE_ENCHANTING 2283
|
||||
#define IDS_RICHPRESENCESTATE_BREWING 2284
|
||||
#define IDS_RICHPRESENCESTATE_ANVIL 2285
|
||||
#define IDS_RICHPRESENCESTATE_TRADING 2286
|
||||
#define IDS_ACHIEVE_NAME_TAKING_INVENTORY 2163
|
||||
#define IDS_ACHIEVE_DESC_TAKING_INVENTORY 2164
|
||||
#define IDS_ACHIEVE_NAME_GETTING_WOOD 2165
|
||||
#define IDS_ACHIEVE_DESC_GETTING_WOOD 2166
|
||||
#define IDS_ACHIEVE_NAME_BENCHMARKING 2167
|
||||
#define IDS_ACHIEVE_DESC_BENCHMARKING 2168
|
||||
#define IDS_ACHIEVE_NAME_TIME_TO_MINE 2169
|
||||
#define IDS_ACHIEVE_DESC_TIME_TO_MINE 2170
|
||||
#define IDS_ACHIEVE_NAME_HOT_TOPIC 2171
|
||||
#define IDS_ACHIEVE_DESC_HOT_TOPIC 2172
|
||||
#define IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE 2173
|
||||
#define IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE 2174
|
||||
#define IDS_ACHIEVE_NAME_TIME_TO_FARM 2175
|
||||
#define IDS_ACHIEVE_DESC_TIME_TO_FARM 2176
|
||||
#define IDS_ACHIEVE_NAME_BAKE_BREAD 2177
|
||||
#define IDS_ACHIEVE_DESC_BAKE_BREAD 2178
|
||||
#define IDS_ACHIEVE_NAME_THE_LIE 2179
|
||||
#define IDS_ACHIEVE_DESC_THE_LIE 2180
|
||||
#define IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE 2181
|
||||
#define IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE 2182
|
||||
#define IDS_ACHIEVE_NAME_DELICIOUS_FISH 2183
|
||||
#define IDS_ACHIEVE_DESC_DELICIOUS_FISH 2184
|
||||
#define IDS_ACHIEVE_NAME_ON_A_RAIL 2185
|
||||
#define IDS_ACHIEVE_DESC_ON_A_RAIL 2186
|
||||
#define IDS_ACHIEVE_NAME_TIME_TO_STRIKE 2187
|
||||
#define IDS_ACHIEVE_DESC_TIME_TO_STRIKE 2188
|
||||
#define IDS_ACHIEVE_NAME_MONSTER_HUNTER 2189
|
||||
#define IDS_ACHIEVE_DESC_MONSTER_HUNTER 2190
|
||||
#define IDS_ACHIEVE_NAME_COW_TIPPER 2191
|
||||
#define IDS_ACHIEVE_DESC_COW_TIPPER 2192
|
||||
#define IDS_ACHIEVE_NAME_WHEN_PIGS_FLY 2193
|
||||
#define IDS_ACHIEVE_DESC_WHEN_PIGS_FLY 2194
|
||||
#define IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK 2195
|
||||
#define IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK 2196
|
||||
#define IDS_ACHIEVE_NAME_MOAR_TOOLS 2197
|
||||
#define IDS_ACHIEVE_DESC_MOAR_TOOLS 2198
|
||||
#define IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS 2199
|
||||
#define IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS 2200
|
||||
#define IDS_ACHIEVE_NAME_INTO_THE_NETHER 2201
|
||||
#define IDS_ACHIEVE_DESC_INTO_THE_NETHER 2202
|
||||
#define IDS_ACHIEVE_NAME_EAT_PORKCHOP 2203
|
||||
#define IDS_ACHIEVE_DESC_EAT_PORKCHOP 2204
|
||||
#define IDS_ACHIEVE_NAME_PLAY_100_DAYS 2205
|
||||
#define IDS_ACHIEVE_DESC_PLAY_100_DAYS 2206
|
||||
#define IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER 2207
|
||||
#define IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER 2208
|
||||
#define IDS_ACHIEVE_NAME_SNIPESKELETON 2209
|
||||
#define IDS_ACHIEVE_DESC_SNIPESKELETON 2210
|
||||
#define IDS_ACHIEVE_NAME_DIAMONDS 2211
|
||||
#define IDS_ACHIEVE_DESC_DIAMONDS 2212
|
||||
#define IDS_ACHIEVE_NAME_GHAST 2213
|
||||
#define IDS_ACHIEVE_DESC_GHAST 2214
|
||||
#define IDS_ACHIEVE_NAME_BLAZEROD 2215
|
||||
#define IDS_ACHIEVE_DESC_BLAZEROD 2216
|
||||
#define IDS_ACHIEVE_NAME_POTION 2217
|
||||
#define IDS_ACHIEVE_DESC_POTION 2218
|
||||
#define IDS_ACHIEVE_NAME_THE_END 2219
|
||||
#define IDS_ACHIEVE_DESC_THE_END 2220
|
||||
#define IDS_ACHIEVE_NAME_WINGAME 2221
|
||||
#define IDS_ACHIEVE_DESC_WINGAME 2222
|
||||
#define IDS_ACHIEVE_NAME_ENCHANTMENTS 2223
|
||||
#define IDS_ACHIEVE_DESC_ENCHANTMENTS 2224
|
||||
#define IDS_ACHIEVE_NAME_OVERKILL 2225
|
||||
#define IDS_ACHIEVE_DESC_OVERKILL 2226
|
||||
#define IDS_ACHIEVE_NAME_BOOKCASE 2227
|
||||
#define IDS_ACHIEVE_DESC_BOOKCASE 2228
|
||||
#define IDS_ACHIEVE_NAME_ADVENTURING_TIME 2229
|
||||
#define IDS_ACHIEVE_DESC_ADVENTURING_TIME 2230
|
||||
#define IDS_ACHIEVE_NAME_REPOPULATION 2231
|
||||
#define IDS_ACHIEVE_DESC_REPOPULATION 2232
|
||||
#define IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU 2233
|
||||
#define IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU 2234
|
||||
#define IDS_ACHIEVE_NAME_THE_HAGGLER 2235
|
||||
#define IDS_ACHIEVE_DESC_THE_HAGGLER 2236
|
||||
#define IDS_ACHIEVE_NAME_POT_PLANTER 2237
|
||||
#define IDS_ACHIEVE_DESC_POT_PLANTER 2238
|
||||
#define IDS_ACHIEVE_NAME_ITS_A_SIGN 2239
|
||||
#define IDS_ACHIEVE_DESC_ITS_A_SIGN 2240
|
||||
#define IDS_ACHIEVE_NAME_IRON_BELLY 2241
|
||||
#define IDS_ACHIEVE_DESC_IRON_BELLY 2242
|
||||
#define IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY 2243
|
||||
#define IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY 2244
|
||||
#define IDS_ACHIEVE_NAME_RAINBOW_COLLECTION 2245
|
||||
#define IDS_ACHIEVE_DESC_RAINBOW_COLLECTION 2246
|
||||
#define IDS_ACHIEVE_NAME_STAYING_FROSTY 2247
|
||||
#define IDS_ACHIEVE_DESC_STAYING_FROSTY 2248
|
||||
#define IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE 2249
|
||||
#define IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE 2250
|
||||
#define IDS_ACHIEVE_NAME_RENEWABLE_ENERGY 2251
|
||||
#define IDS_ACHIEVE_DESC_RENEWABLE_ENERGY 2252
|
||||
#define IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS 2253
|
||||
#define IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS 2254
|
||||
#define IDS_ACHIEVE_NAME_BODYGUARD 2255
|
||||
#define IDS_ACHIEVE_DESC_BODYGUARD 2256
|
||||
#define IDS_ACHIEVE_NAME_IRON_MAN 2257
|
||||
#define IDS_ACHIEVE_DESC_IRON_MAN 2258
|
||||
#define IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR 2259
|
||||
#define IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR 2260
|
||||
#define IDS_ACHIEVE_NAME_LION_TAMER 2261
|
||||
#define IDS_ACHIEVE_DESC_LION_TAMER 2262
|
||||
#define IDS_ACHIEVEMENT_VIEW 2263
|
||||
#define IDS_LANG_SYSTEM 2264
|
||||
#define IDS_LANG_ENGLISH 2265
|
||||
#define IDS_LANG_GERMAN 2266
|
||||
#define IDS_LANG_SPANISH 2267
|
||||
#define IDS_LANG_SPANISH_SPAIN 2268
|
||||
#define IDS_LANG_SPANISH_LATIN_AMERICA 2269
|
||||
#define IDS_LANG_FRENCH 2270
|
||||
#define IDS_LANG_ITALIAN 2271
|
||||
#define IDS_LANG_PORTUGUESE 2272
|
||||
#define IDS_LANG_PORTUGUESE_PORTUGAL 2273
|
||||
#define IDS_LANG_PORTUGUESE_BRAZIL 2274
|
||||
#define IDS_LANG_JAPANESE 2275
|
||||
#define IDS_LANG_KOREAN 2276
|
||||
#define IDS_LANG_CHINESE_TRADITIONAL 2277
|
||||
#define IDS_LANG_CHINESE_SIMPLIFIED 2278
|
||||
#define IDS_LANG_DANISH 2279
|
||||
#define IDS_LANG_FINISH 2280
|
||||
#define IDS_LANG_DUTCH 2281
|
||||
#define IDS_LANG_POLISH 2282
|
||||
#define IDS_LANG_RUSSIAN 2283
|
||||
#define IDS_LANG_SWEDISH 2284
|
||||
#define IDS_LANG_NORWEGIAN 2285
|
||||
#define IDS_LANG_GREEK 2286
|
||||
#define IDS_LANG_TURKISH 2287
|
||||
#define IDS_LEADERBOARD_KILLS_EASY 2288
|
||||
#define IDS_LEADERBOARD_KILLS_NORMAL 2289
|
||||
#define IDS_LEADERBOARD_KILLS_HARD 2290
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2291
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2292
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2293
|
||||
#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2294
|
||||
#define IDS_LEADERBOARD_FARMING_PEACEFUL 2295
|
||||
#define IDS_LEADERBOARD_FARMING_EASY 2296
|
||||
#define IDS_LEADERBOARD_FARMING_NORMAL 2297
|
||||
#define IDS_LEADERBOARD_FARMING_HARD 2298
|
||||
#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2299
|
||||
#define IDS_LEADERBOARD_TRAVELLING_EASY 2300
|
||||
#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2301
|
||||
#define IDS_LEADERBOARD_TRAVELLING_HARD 2302
|
||||
#define IDS_TIPS_GAMETIP_0 2303
|
||||
#define IDS_TIPS_GAMETIP_1 2304
|
||||
#define IDS_TIPS_GAMETIP_48 2305
|
||||
#define IDS_TIPS_GAMETIP_44 2306
|
||||
#define IDS_TIPS_GAMETIP_45 2307
|
||||
#define IDS_TIPS_TRIVIA_4 2308
|
||||
#define IDS_TIPS_TRIVIA_17 2309
|
||||
#define IDS_HOW_TO_PLAY_MULTIPLAYER 2310
|
||||
#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2311
|
||||
#define IDS_HOW_TO_PLAY_CREATIVE 2312
|
||||
#define IDS_TUTORIAL_TASK_FLY 2313
|
||||
#define IDS_TOOLTIPS_SELECTDEVICE 2314
|
||||
#define IDS_TOOLTIPS_CHANGEDEVICE 2315
|
||||
#define IDS_TOOLTIPS_VIEW_GAMERCARD 2316
|
||||
#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2317
|
||||
#define IDS_TOOLTIPS_INVITE_PARTY 2318
|
||||
#define IDS_CONFIRM_START_CREATIVE 2319
|
||||
#define IDS_CONFIRM_START_SAVEDINCREATIVE 2320
|
||||
#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2321
|
||||
#define IDS_CONFIRM_START_HOST_PRIVILEGES 2322
|
||||
#define IDS_CONNECTION_LOST_LIVE 2323
|
||||
#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2324
|
||||
#define IDS_AWARD_AVATAR1 2325
|
||||
#define IDS_AWARD_AVATAR2 2326
|
||||
#define IDS_AWARD_AVATAR3 2327
|
||||
#define IDS_AWARD_THEME 2328
|
||||
#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2329
|
||||
#define IDS_UNLOCK_AVATAR_TEXT 2330
|
||||
#define IDS_UNLOCK_GAMERPIC_TEXT 2331
|
||||
#define IDS_UNLOCK_THEME_TEXT 2332
|
||||
#define IDS_UNLOCK_ACCEPT_INVITE 2333
|
||||
#define IDS_UNLOCK_GUEST_TEXT 2334
|
||||
#define IDS_LEADERBOARD_GAMERTAG 2335
|
||||
#define IDS_GROUPNAME_POTIONS_480 2336
|
||||
#define IDS_RETURNEDTOTITLESCREEN_TEXT 2337
|
||||
#define IDS_TRIALOVER_TEXT 2338
|
||||
#define IDS_FATAL_ERROR_TEXT 2339
|
||||
#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2340
|
||||
#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2341
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2342
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2343
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2344
|
||||
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2345
|
||||
#define IDS_SAVE_ICON_MESSAGE 2346
|
||||
#define IDS_GAMEOPTION_HOST_PRIVILEGES 2347
|
||||
#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2348
|
||||
#define IDS_ACHIEVEMENTS 2349
|
||||
#define IDS_LABEL_GAMERTAGS 2350
|
||||
#define IDS_IN_GAME_GAMERTAGS 2351
|
||||
#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2352
|
||||
#define IDS_TITLE_UPDATE_NAME 2353
|
||||
#define IDS_PLATFORM_NAME 2354
|
||||
#define IDS_BACK_BUTTON 2355
|
||||
#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2356
|
||||
#define IDS_KICK_PLAYER_DESCRIPTION 2357
|
||||
#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2358
|
||||
#define IDS_WORLD_SIZE_TITLE_SMALL 2359
|
||||
#define IDS_WORLD_SIZE_TITLE_MEDIUM 2360
|
||||
#define IDS_WORLD_SIZE_TITLE_LARGE 2361
|
||||
#define IDS_WORLD_SIZE_TITLE_CLASSIC 2362
|
||||
#define IDS_WORLD_SIZE 2363
|
||||
#define IDS_GAMEOPTION_WORLD_SIZE 2364
|
||||
#define IDS_DISABLE_SAVING 2365
|
||||
#define IDS_GAMEOPTION_DISABLE_SAVING 2366
|
||||
#define IDS_RICHPRESENCE_GAMESTATE 2367
|
||||
#define IDS_RICHPRESENCE_IDLE 2368
|
||||
#define IDS_RICHPRESENCE_MENUS 2369
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER 2370
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2371
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2372
|
||||
#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2373
|
||||
#define IDS_RICHPRESENCESTATE_BLANK 2374
|
||||
#define IDS_RICHPRESENCESTATE_RIDING_PIG 2375
|
||||
#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2376
|
||||
#define IDS_RICHPRESENCESTATE_BOATING 2377
|
||||
#define IDS_RICHPRESENCESTATE_FISHING 2378
|
||||
#define IDS_RICHPRESENCESTATE_CRAFTING 2379
|
||||
#define IDS_RICHPRESENCESTATE_FORGING 2380
|
||||
#define IDS_RICHPRESENCESTATE_NETHER 2381
|
||||
#define IDS_RICHPRESENCESTATE_CD 2382
|
||||
#define IDS_RICHPRESENCESTATE_MAP 2383
|
||||
#define IDS_RICHPRESENCESTATE_ENCHANTING 2384
|
||||
#define IDS_RICHPRESENCESTATE_BREWING 2385
|
||||
#define IDS_RICHPRESENCESTATE_ANVIL 2386
|
||||
#define IDS_RICHPRESENCESTATE_TRADING 2387
|
||||
|
||||
@@ -8,26 +8,34 @@
|
||||
void Achievement::_init()
|
||||
{
|
||||
isGoldenVar = false;
|
||||
|
||||
if (x < Achievements::xMin) Achievements::xMin = x;
|
||||
if (y < Achievements::yMin) Achievements::yMin = y;
|
||||
if (x > Achievements::xMax) Achievements::xMax = x;
|
||||
if (y > Achievements::yMax) Achievements::yMax = y;
|
||||
}
|
||||
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs)
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs, string iconI, int nameID1, int descID1)
|
||||
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon( new ItemInstance(icon) ), x(x), y(y), reqs(reqs)
|
||||
{
|
||||
iconInt = iconI;
|
||||
nameID = nameID1;
|
||||
descID = descID1;
|
||||
}
|
||||
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs)
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs, string iconI, int nameID1, int descID1)
|
||||
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon( new ItemInstance(icon) ), x(x), y(y), reqs(reqs)
|
||||
{
|
||||
iconInt = iconI;
|
||||
nameID = nameID1;
|
||||
descID = descID1;
|
||||
}
|
||||
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs)
|
||||
Achievement::Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs, string iconI, int nameID1, int descID1)
|
||||
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon(icon), x(x), y(y), reqs(reqs)
|
||||
{
|
||||
iconInt = iconI;
|
||||
nameID = nameID1;
|
||||
descID = descID1;
|
||||
}
|
||||
|
||||
Achievement *Achievement::setAwardLocallyOnly()
|
||||
@@ -45,9 +53,7 @@ Achievement *Achievement::setGolden()
|
||||
Achievement *Achievement::postConstruct()
|
||||
{
|
||||
Stat::postConstruct();
|
||||
|
||||
Achievements::achievements->push_back(this);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -79,4 +85,4 @@ bool Achievement::isGolden()
|
||||
int Achievement::getAchievementID()
|
||||
{
|
||||
return id - Achievements::ACHIEVEMENT_OFFSET;
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,9 @@ class Achievement : public Stat
|
||||
public:
|
||||
const int x, y;
|
||||
Achievement *reqs;
|
||||
string iconInt;
|
||||
int nameID;
|
||||
int descID;
|
||||
|
||||
private:
|
||||
const wstring desc;
|
||||
@@ -23,9 +26,9 @@ private:
|
||||
void _init();
|
||||
|
||||
public:
|
||||
Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs);
|
||||
Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs);
|
||||
Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs);
|
||||
Achievement(int id, const wstring& name, int x, int y, Item* icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
|
||||
Achievement(int id, const wstring& name, int x, int y, Tile* icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
|
||||
Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
|
||||
|
||||
Achievement *setAwardLocallyOnly();
|
||||
Achievement *setGolden();
|
||||
|
||||
@@ -53,14 +53,14 @@ Achievement *Achievements::dispenseWithThis = nullptr;
|
||||
Achievement *Achievements::InToTheNether = nullptr;
|
||||
|
||||
// 4J : WESTY : Added other awards.
|
||||
Achievement *Achievements::socialPost = nullptr;
|
||||
//Achievement *Achievements::socialPost = nullptr;
|
||||
Achievement *Achievements::eatPorkChop = nullptr;
|
||||
Achievement *Achievements::play100Days = nullptr;
|
||||
Achievement *Achievements::arrowKillCreeper = nullptr;
|
||||
Achievement *Achievements::mine100Blocks = nullptr;
|
||||
Achievement *Achievements::kill10Creepers = nullptr;
|
||||
//Achievement *Achievements::mine100Blocks = nullptr;
|
||||
//Achievement *Achievements::kill10Creepers = nullptr;
|
||||
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
Achievement *Achievements::overkill = nullptr; // Restored old achivements.
|
||||
Achievement *Achievements::bookcase = nullptr; // Restored old achivements.
|
||||
|
||||
@@ -85,46 +85,46 @@ Achievement *Achievements::bodyGuard = nullptr;
|
||||
Achievement *Achievements::ironMan = nullptr;
|
||||
Achievement *Achievements::zombieDoctor = nullptr;
|
||||
Achievement *Achievements::lionTamer = nullptr;
|
||||
#endif
|
||||
|
||||
|
||||
void Achievements::staticCtor()
|
||||
{
|
||||
Achievements::openInventory = (new Achievement(eAward_TakingInventory, L"openInventory", 0, 0, Item::book, nullptr))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::mineWood = (new Achievement(eAward_GettingWood, L"mineWood", 2, 1, Tile::treeTrunk, (Achievement *) openInventory))->postConstruct();
|
||||
Achievements::buildWorkbench = (new Achievement(eAward_Benchmarking, L"buildWorkBench", 4, -1, Tile::workBench, (Achievement *) mineWood))->postConstruct();
|
||||
Achievements::buildPickaxe = (new Achievement(eAward_TimeToMine, L"buildPickaxe", 4, 2, Item::pickAxe_wood, (Achievement *) buildWorkbench))->postConstruct();
|
||||
Achievements::buildFurnace = (new Achievement(eAward_HotTopic, L"buildFurnace", 3, 4, Tile::furnace_lit, (Achievement *) buildPickaxe))->postConstruct();
|
||||
Achievements::acquireIron = (new Achievement(eAward_AquireHardware, L"acquireIron", 1, 4, Item::ironIngot, (Achievement *) buildFurnace))->postConstruct();
|
||||
Achievements::buildHoe = (new Achievement(eAward_TimeToFarm, L"buildHoe", 2, -3, Item::hoe_wood, (Achievement *) buildWorkbench))->postConstruct();
|
||||
Achievements::makeBread = (new Achievement(eAward_BakeBread, L"makeBread", -1, -3, Item::bread, (Achievement *) buildHoe))->postConstruct();
|
||||
Achievements::bakeCake = (new Achievement(eAward_TheLie, L"bakeCake", 0, -5, Item::cake, (Achievement *) buildHoe))->postConstruct();
|
||||
Achievements::buildBetterPickaxe = (new Achievement(eAward_GettingAnUpgrade, L"buildBetterPickaxe", 6, 2, Item::pickAxe_stone, (Achievement *) buildPickaxe))->postConstruct();
|
||||
Achievements::cookFish = (new Achievement(eAward_DeliciousFish, L"cookFish", 2, 6, Item::fish_cooked, (Achievement *) buildFurnace))->postConstruct();
|
||||
Achievements::onARail = (new Achievement(eAward_OnARail, L"onARail", 2, 3, Tile::rail, (Achievement *) acquireIron))->setGolden()->postConstruct();
|
||||
Achievements::buildSword = (new Achievement(eAward_TimeToStrike, L"buildSword", 6, -1, Item::sword_wood, (Achievement *) buildWorkbench))->postConstruct();
|
||||
Achievements::killEnemy = (new Achievement(eAward_MonsterHunter, L"killEnemy", 8, -1, Item::bone, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::killCow = (new Achievement(eAward_CowTipper, L"killCow", 7, -3, Item::leather, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::flyPig = (new Achievement(eAward_WhenPigsFly, L"flyPig", 8, -4, Item::saddle, (Achievement *) killCow))->setGolden()->postConstruct();
|
||||
Achievements::openInventory = (new Achievement(eAward_TakingInventory, L"openInventory", 0, 0, Item::book, nullptr, "001", IDS_ACHIEVE_NAME_TAKING_INVENTORY, IDS_ACHIEVE_DESC_TAKING_INVENTORY))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::mineWood = (new Achievement(eAward_GettingWood, L"mineWood", 2, 1, Tile::treeTrunk, (Achievement *) openInventory, "002", IDS_ACHIEVE_NAME_GETTING_WOOD, IDS_ACHIEVE_DESC_GETTING_WOOD))->postConstruct();
|
||||
Achievements::buildWorkbench = (new Achievement(eAward_Benchmarking, L"buildWorkBench", 4, -1, Tile::workBench, (Achievement *) mineWood, "003", IDS_ACHIEVE_NAME_BENCHMARKING, IDS_ACHIEVE_DESC_BENCHMARKING))->postConstruct();
|
||||
Achievements::buildPickaxe = (new Achievement(eAward_TimeToMine, L"buildPickaxe", 4, 2, Item::pickAxe_wood, (Achievement *) buildWorkbench, "004", IDS_ACHIEVE_NAME_TIME_TO_MINE, IDS_ACHIEVE_DESC_TIME_TO_MINE))->postConstruct();
|
||||
Achievements::buildFurnace = (new Achievement(eAward_HotTopic, L"buildFurnace", 3, 4, Tile::furnace_lit, (Achievement *) buildPickaxe, "005", IDS_ACHIEVE_NAME_HOT_TOPIC, IDS_ACHIEVE_DESC_HOT_TOPIC))->postConstruct();
|
||||
Achievements::acquireIron = (new Achievement(eAward_AquireHardware, L"acquireIron", 1, 4, Item::ironIngot, (Achievement *) buildFurnace, "006", IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE, IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE))->postConstruct();
|
||||
Achievements::buildHoe = (new Achievement(eAward_TimeToFarm, L"buildHoe", 2, -3, Item::hoe_wood, (Achievement *) buildWorkbench, "007", IDS_ACHIEVE_NAME_TIME_TO_FARM, IDS_ACHIEVE_DESC_TIME_TO_FARM))->postConstruct();
|
||||
Achievements::makeBread = (new Achievement(eAward_BakeBread, L"makeBread", -1, -3, Item::bread, (Achievement *) buildHoe, "008", IDS_ACHIEVE_NAME_BAKE_BREAD, IDS_ACHIEVE_DESC_BAKE_BREAD))->postConstruct();
|
||||
Achievements::bakeCake = (new Achievement(eAward_TheLie, L"bakeCake", 0, -5, Item::cake, (Achievement *) buildHoe, "009", IDS_ACHIEVE_NAME_THE_LIE, IDS_ACHIEVE_DESC_THE_LIE))->postConstruct();
|
||||
Achievements::buildBetterPickaxe = (new Achievement(eAward_GettingAnUpgrade, L"buildBetterPickaxe", 6, 2, Item::pickAxe_stone, (Achievement *) buildPickaxe, "010", IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE, IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE))->postConstruct();
|
||||
Achievements::cookFish = (new Achievement(eAward_DeliciousFish, L"cookFish", 2, 6, Item::fish_cooked, (Achievement *) buildFurnace, "011", IDS_ACHIEVE_NAME_DELICIOUS_FISH, IDS_ACHIEVE_DESC_DELICIOUS_FISH))->postConstruct();
|
||||
Achievements::onARail = (new Achievement(eAward_OnARail, L"onARail", 2, 3, Tile::rail, (Achievement *) acquireIron, "012", IDS_ACHIEVE_NAME_ON_A_RAIL, IDS_ACHIEVE_DESC_ON_A_RAIL))->setGolden()->postConstruct();
|
||||
Achievements::buildSword = (new Achievement(eAward_TimeToStrike, L"buildSword", 6, -1, Item::sword_wood, (Achievement *) buildWorkbench, "013", IDS_ACHIEVE_NAME_TIME_TO_STRIKE, IDS_ACHIEVE_DESC_TIME_TO_STRIKE))->postConstruct();
|
||||
Achievements::killEnemy = (new Achievement(eAward_MonsterHunter, L"killEnemy", 8, -1, Item::bone, (Achievement *) buildSword, "014", IDS_ACHIEVE_NAME_MONSTER_HUNTER, IDS_ACHIEVE_DESC_MONSTER_HUNTER))->postConstruct();
|
||||
Achievements::killCow = (new Achievement(eAward_CowTipper, L"killCow", 7, -3, Item::leather, (Achievement *) buildSword, "015", IDS_ACHIEVE_NAME_COW_TIPPER, IDS_ACHIEVE_DESC_COW_TIPPER))->postConstruct();
|
||||
Achievements::flyPig = (new Achievement(eAward_WhenPigsFly, L"flyPig", 8, -4, Item::saddle, (Achievement *) killCow, "016", IDS_ACHIEVE_NAME_WHEN_PIGS_FLY, IDS_ACHIEVE_DESC_WHEN_PIGS_FLY))->setGolden()->postConstruct();
|
||||
|
||||
// 4J Stu - The order of these achievemnts is very important, as they map directly to data stored in the profile data. New achievements should be added at the end.
|
||||
|
||||
// 4J : WESTY : Added new achievements. Note, params "x", "y", "icon" and "requires" are ignored on xbox.
|
||||
Achievements::leaderOfThePack = (new Achievement(eAward_LeaderOfThePack, L"leaderOfThePack", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::MOARTools = (new Achievement(eAward_MOARTools, L"MOARTools", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::dispenseWithThis = (new Achievement(eAward_DispenseWithThis, L"dispenseWithThis", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::InToTheNether = (new Achievement(eAward_InToTheNether, L"InToTheNether", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
|
||||
Achievements::leaderOfThePack = (new Achievement(eAward_LeaderOfThePack, L"leaderOfThePack", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "017", IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK, IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::MOARTools = (new Achievement(eAward_MOARTools, L"MOARTools", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "018", IDS_ACHIEVE_NAME_MOAR_TOOLS, IDS_ACHIEVE_DESC_MOAR_TOOLS))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::dispenseWithThis = (new Achievement(eAward_DispenseWithThis, L"dispenseWithThis", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "019", IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS, IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS))->postConstruct();
|
||||
Achievements::InToTheNether = (new Achievement(eAward_InToTheNether, L"InToTheNether", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "020", IDS_ACHIEVE_NAME_INTO_THE_NETHER, IDS_ACHIEVE_DESC_INTO_THE_NETHER))->postConstruct();
|
||||
// 4J : WESTY : Added other awards.
|
||||
Achievements::mine100Blocks = (new Achievement(eAward_mine100Blocks, L"mine100Blocks", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::kill10Creepers = (new Achievement(eAward_kill10Creepers, L"kill10Creepers", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
|
||||
//Achievements::mine100Blocks = (new Achievement(eAward_mine100Blocks, L"mine100Blocks", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
//Achievements::kill10Creepers = (new Achievement(eAward_kill10Creepers, L"kill10Creepers", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
#else
|
||||
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "034", IDS_ACHIEVE_NAME_EAT_PORKCHOP, IDS_ACHIEVE_DESC_EAT_PORKCHOP))->postConstruct();
|
||||
#endif
|
||||
Achievements::play100Days = (new Achievement(eAward_play100Days, L"play100Days", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::arrowKillCreeper = (new Achievement(eAward_arrowKillCreeper, L"arrowKillCreeper", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::socialPost = (new Achievement(eAward_socialPost, L"socialPost", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
Achievements::play100Days = (new Achievement(eAward_play100Days, L"play100Days", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "035", IDS_ACHIEVE_NAME_PLAY_100_DAYS, IDS_ACHIEVE_DESC_PLAY_100_DAYS))->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::arrowKillCreeper = (new Achievement(eAward_arrowKillCreeper, L"arrowKillCreeper", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "036", IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER, IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER))->postConstruct();
|
||||
//Achievements::socialPost = (new Achievement(eAward_socialPost, L"socialPost", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
|
||||
|
||||
#ifndef _XBOX
|
||||
// WARNING: NO NEW ACHIEVMENTS CAN BE ADDED HERE
|
||||
@@ -133,46 +133,43 @@ void Achievements::staticCtor()
|
||||
// 4J Stu - All new Java achievements removed to stop them using the profile data
|
||||
|
||||
// 4J Stu - This achievment added in 1.8.2, but does not map to any Xbox achievements
|
||||
Achievements::snipeSkeleton = (new Achievement(eAward_snipeSkeleton, L"snipeSkeleton", 7, 0, Item::bow, (Achievement *) killEnemy))->setGolden()->postConstruct();
|
||||
Achievements::snipeSkeleton = (new Achievement(eAward_snipeSkeleton, L"snipeSkeleton", 7, 0, Item::bow, (Achievement *) killEnemy, "021", IDS_ACHIEVE_NAME_SNIPESKELETON, IDS_ACHIEVE_DESC_SNIPESKELETON))->setGolden()->postConstruct();
|
||||
|
||||
// 4J Stu - These added in 1.0.1, but do not map to any Xbox achievements
|
||||
Achievements::diamonds = (new Achievement(eAward_diamonds, L"diamonds", -1, 5, Item::diamond, (Achievement *) acquireIron) )->postConstruct();
|
||||
Achievements::diamonds = (new Achievement(eAward_diamonds, L"diamonds", -1, 5, Item::diamond, (Achievement *) acquireIron, "022", IDS_ACHIEVE_NAME_DIAMONDS, IDS_ACHIEVE_DESC_DIAMONDS) )->postConstruct();
|
||||
//Achievements::portal = (new Achievement(eAward_portal, L"portal", -1, 7, Tile::obsidian, (Achievement *)diamonds) )->postConstruct();
|
||||
Achievements::ghast = (new Achievement(eAward_ghast, L"ghast", -4, 8, Item::ghastTear, (Achievement *)ghast) )->setGolden()->postConstruct();
|
||||
Achievements::blazeRod = (new Achievement(eAward_blazeRod, L"blazeRod", 0, 9, Item::blazeRod, (Achievement *)blazeRod) )->postConstruct();
|
||||
Achievements::potion = (new Achievement(eAward_potion, L"potion", 2, 8, Item::potion, (Achievement *)potion) )->postConstruct();
|
||||
Achievements::theEnd = (new Achievement(eAward_theEnd, L"theEnd", 3, 10, Item::eyeOfEnder, (Achievement *)theEnd) )->setGolden()->postConstruct();
|
||||
Achievements::winGame = (new Achievement(eAward_winGame, L"theEnd2", 4, 13, Tile::dragonEgg, (Achievement *)winGame) )->setGolden()->postConstruct();
|
||||
Achievements::enchantments = (new Achievement(eAward_enchantments, L"enchantments", -4, 4, Tile::enchantTable, (Achievement *)enchantments) )->postConstruct();
|
||||
Achievements::ghast = (new Achievement(eAward_ghast, L"ghast", -4, 8, Item::ghastTear, (Achievement *)ghast, "023", IDS_ACHIEVE_NAME_GHAST, IDS_ACHIEVE_DESC_GHAST) )->setGolden()->postConstruct();
|
||||
Achievements::blazeRod = (new Achievement(eAward_blazeRod, L"blazeRod", 0, 9, Item::blazeRod, (Achievement *)blazeRod, "024", IDS_ACHIEVE_NAME_BLAZEROD, IDS_ACHIEVE_DESC_BLAZEROD) )->postConstruct();
|
||||
Achievements::potion = (new Achievement(eAward_potion, L"potion", 2, 8, Item::potion, (Achievement *)potion, "025", IDS_ACHIEVE_NAME_POTION, IDS_ACHIEVE_DESC_POTION) )->postConstruct();
|
||||
Achievements::theEnd = (new Achievement(eAward_theEnd, L"theEnd", 3, 10, Item::eyeOfEnder, (Achievement *)theEnd, "026", IDS_ACHIEVE_NAME_THE_END, IDS_ACHIEVE_DESC_THE_END) )->setGolden()->postConstruct();
|
||||
Achievements::winGame = (new Achievement(eAward_winGame, L"theEnd2", 4, 13, Tile::dragonEgg, (Achievement *)winGame, "027", IDS_ACHIEVE_NAME_WINGAME, IDS_ACHIEVE_DESC_WINGAME) )->setGolden()->postConstruct();
|
||||
Achievements::enchantments = (new Achievement(eAward_enchantments, L"enchantments", -4, 4, Tile::enchantTable, (Achievement *)enchantments, "028", IDS_ACHIEVE_NAME_ENCHANTMENTS, IDS_ACHIEVE_DESC_ENCHANTMENTS) )->postConstruct();
|
||||
// Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4, 1, Item::sword_diamond, (Achievement *)enchantments) )->setGolden()->postConstruct();
|
||||
// Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3, 6, Tile::bookshelf, (Achievement *)enchantments) )->postConstruct();
|
||||
#endif
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4,1, Item::sword_diamond, (Achievement *)enchantments) )->setGolden()->postConstruct();
|
||||
Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3,6, Tile::bookshelf, (Achievement *)enchantments) )->postConstruct();
|
||||
|
||||
Achievements::adventuringTime = (new Achievement(eAward_adventuringTime, L"adventuringTime", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::repopulation = (new Achievement(eAward_repopulation, L"repopulation", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4,1, Item::sword_diamond, (Achievement *)enchantments, "029", IDS_ACHIEVE_NAME_OVERKILL, IDS_ACHIEVE_DESC_OVERKILL) )->setGolden()->postConstruct();
|
||||
Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3,6, Tile::bookshelf, (Achievement *)enchantments, "030", IDS_ACHIEVE_NAME_BOOKCASE, IDS_ACHIEVE_DESC_BOOKCASE) )->postConstruct();
|
||||
Achievements::adventuringTime = (new Achievement(eAward_adventuringTime, L"adventuringTime", 0,0, Tile::bookshelf, (Achievement*) nullptr, "031", IDS_ACHIEVE_NAME_ADVENTURING_TIME, IDS_ACHIEVE_DESC_ADVENTURING_TIME) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::repopulation = (new Achievement(eAward_repopulation, L"repopulation", 7,-5, Tile::bookshelf, (Achievement*) nullptr, "032", IDS_ACHIEVE_NAME_REPOPULATION, IDS_ACHIEVE_DESC_REPOPULATION) )->postConstruct();
|
||||
//Achievements::porkChoop // // // // // //
|
||||
Achievements::diamondsToYou = (new Achievement(eAward_diamondsToYou, L"diamondsToYou", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::diamondsToYou = (new Achievement(eAward_diamondsToYou, L"diamondsToYou", 0,0, Tile::bookshelf, (Achievement*) nullptr, "033", IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU, IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU) )->postConstruct();
|
||||
//Achievements::passingTheTime = (new Achievement(eAward_play100Days, L"passingTheTime", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
//Achievements::archer = (new Achievement(eAward_arrowKillCreeper, L"archer", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::theHaggler = (new Achievement(eAward_theHaggler, L"theHaggler", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::potPlanter = (new Achievement(eAward_potPlanter, L"potPlanter", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::itsASign = (new Achievement(eAward_itsASign, L"itsASign", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::ironBelly = (new Achievement(eAward_ironBelly, L"ironBelly", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::haveAShearfulDay = (new Achievement(eAward_haveAShearfulDay, L"haveAShearfulDay", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::rainbowCollection = (new Achievement(eAward_rainbowCollection, L"rainbowCollection", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::stayinFrosty = (new Achievement(eAward_stayinFrosty, L"stayingFrosty", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::chestfulOfCobblestone = (new Achievement(eAward_chestfulOfCobblestone, L"chestfulOfCobblestone", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::renewableEnergy = (new Achievement(eAward_renewableEnergy, L"renewableEnergy", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::musicToMyEars = (new Achievement(eAward_musicToMyEars, L"musicToMyEars", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::bodyGuard = (new Achievement(eAward_bodyGuard, L"bodyGuard", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::ironMan = (new Achievement(eAward_ironMan, L"ironMan", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::zombieDoctor = (new Achievement(eAward_zombieDoctor, L"zombieDoctor", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
Achievements::lionTamer = (new Achievement(eAward_lionTamer, L"lionTamer", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
|
||||
#endif
|
||||
Achievements::theHaggler = (new Achievement(eAward_theHaggler, L"theHaggler", 0,0, Tile::bookshelf, (Achievement*) nullptr, "037", IDS_ACHIEVE_NAME_THE_HAGGLER, IDS_ACHIEVE_DESC_THE_HAGGLER) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::potPlanter = (new Achievement(eAward_potPlanter, L"potPlanter", 0,0, Tile::bookshelf, (Achievement*) nullptr, "038", IDS_ACHIEVE_NAME_POT_PLANTER, IDS_ACHIEVE_DESC_POT_PLANTER) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::itsASign = (new Achievement(eAward_itsASign, L"itsASign", 0,0, Tile::bookshelf, (Achievement*) nullptr, "039", IDS_ACHIEVE_NAME_ITS_A_SIGN, IDS_ACHIEVE_DESC_ITS_A_SIGN) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::ironBelly = (new Achievement(eAward_ironBelly, L"ironBelly", 0,0, Tile::bookshelf, (Achievement*) nullptr, "040", IDS_ACHIEVE_NAME_IRON_BELLY, IDS_ACHIEVE_DESC_IRON_BELLY) )->postConstruct();
|
||||
Achievements::haveAShearfulDay = (new Achievement(eAward_haveAShearfulDay, L"haveAShearfulDay", 0,0, Tile::bookshelf, (Achievement*) nullptr, "041", IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY, IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY) )->postConstruct();
|
||||
Achievements::rainbowCollection = (new Achievement(eAward_rainbowCollection, L"rainbowCollection", 0,0, Tile::bookshelf, (Achievement*) nullptr, "042", IDS_ACHIEVE_NAME_RAINBOW_COLLECTION, IDS_ACHIEVE_DESC_RAINBOW_COLLECTION) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::stayinFrosty = (new Achievement(eAward_stayinFrosty, L"stayingFrosty", 0,0, Tile::bookshelf, (Achievement*) nullptr, "043", IDS_ACHIEVE_NAME_STAYING_FROSTY, IDS_ACHIEVE_DESC_STAYING_FROSTY) )->postConstruct();
|
||||
Achievements::chestfulOfCobblestone = (new Achievement(eAward_chestfulOfCobblestone, L"chestfulOfCobblestone", 0,0, Tile::bookshelf, (Achievement*) nullptr, "044", IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE, IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE) )->setAwardLocallyOnly()->postConstruct();
|
||||
Achievements::renewableEnergy = (new Achievement(eAward_renewableEnergy, L"renewableEnergy", 0,0, Tile::bookshelf, (Achievement*) nullptr, "045", IDS_ACHIEVE_NAME_RENEWABLE_ENERGY, IDS_ACHIEVE_DESC_RENEWABLE_ENERGY) )->postConstruct();
|
||||
Achievements::musicToMyEars = (new Achievement(eAward_musicToMyEars, L"musicToMyEars", 0,0, Tile::bookshelf, (Achievement*) nullptr, "046", IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS, IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS) )->postConstruct();
|
||||
Achievements::bodyGuard = (new Achievement(eAward_bodyGuard, L"bodyGuard", 0,0, Tile::bookshelf, (Achievement*) nullptr, "047", IDS_ACHIEVE_NAME_BODYGUARD, IDS_ACHIEVE_DESC_BODYGUARD) )->postConstruct();
|
||||
Achievements::ironMan = (new Achievement(eAward_ironMan, L"ironMan", 0,0, Tile::bookshelf, (Achievement*) nullptr, "048", IDS_ACHIEVE_NAME_IRON_MAN, IDS_ACHIEVE_DESC_IRON_MAN) )->postConstruct();
|
||||
Achievements::zombieDoctor = (new Achievement(eAward_zombieDoctor, L"zombieDoctor", 0,0, Tile::bookshelf, (Achievement*) nullptr, "049", IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR, IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR) )->postConstruct();
|
||||
Achievements::lionTamer = (new Achievement(eAward_lionTamer, L"lionTamer", 0,0, Tile::bookshelf, (Achievement*) nullptr, "050", IDS_ACHIEVE_NAME_LION_TAMER, IDS_ACHIEVE_DESC_LION_TAMER) )->postConstruct();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +1,19 @@
|
||||
#pragma once
|
||||
using namespace std;
|
||||
|
||||
|
||||
class Achievement;
|
||||
|
||||
class Achievements
|
||||
{
|
||||
friend class Achievement;
|
||||
|
||||
protected:
|
||||
static const int ACHIEVEMENT_OFFSET;
|
||||
|
||||
// maximum position of achievements (min and max)
|
||||
public:
|
||||
static const int ACHIEVEMENT_WIDTH_POSITION = 12;
|
||||
static const int ACHIEVEMENT_HEIGHT_POSITION = 12;
|
||||
|
||||
static int xMin, yMin, xMax, yMax;
|
||||
|
||||
static vector<Achievement *> *achievements;
|
||||
|
||||
static Achievement *openInventory;
|
||||
static Achievement *mineWood;
|
||||
static Achievement *buildWorkbench;
|
||||
@@ -36,7 +30,6 @@ public:
|
||||
static Achievement *killEnemy;
|
||||
static Achievement *killCow;
|
||||
static Achievement *flyPig;
|
||||
|
||||
// 4J-JEV: Present on the PS3.
|
||||
static Achievement *snipeSkeleton;
|
||||
static Achievement *diamonds;
|
||||
@@ -47,29 +40,26 @@ public:
|
||||
static Achievement *theEnd;
|
||||
static Achievement *winGame;
|
||||
static Achievement *enchantments;
|
||||
|
||||
// 4J : WESTY : Added new acheivements.
|
||||
static Achievement *leaderOfThePack;
|
||||
static Achievement *MOARTools;
|
||||
static Achievement *dispenseWithThis;
|
||||
static Achievement *InToTheNether;
|
||||
|
||||
// 4J : WESTY : Added other awards.
|
||||
static Achievement *socialPost;
|
||||
//static Achievement *socialPost;
|
||||
static Achievement *eatPorkChop;
|
||||
static Achievement *play100Days;
|
||||
static Achievement *arrowKillCreeper;
|
||||
static Achievement *mine100Blocks;
|
||||
static Achievement *kill10Creepers;
|
||||
//static Achievement *mine100Blocks;
|
||||
//static Achievement *kill10Creepers;
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
static Achievement *overkill; // Old achievements;
|
||||
static Achievement *bookcase; // Old achievements;
|
||||
static Achievement *adventuringTime;
|
||||
static Achievement *repopulation;
|
||||
static Achievement *diamondsToYou;
|
||||
static Achievement *passingTheTime;
|
||||
static Achievement *archer;
|
||||
//static Achievement *passingTheTime;
|
||||
//static Achievement *archer;
|
||||
static Achievement *theHaggler;
|
||||
static Achievement *potPlanter;
|
||||
static Achievement *itsASign;
|
||||
@@ -84,9 +74,7 @@ public:
|
||||
static Achievement *ironMan;
|
||||
static Achievement *zombieDoctor;
|
||||
static Achievement *lionTamer;
|
||||
#endif
|
||||
|
||||
static void staticCtor();
|
||||
|
||||
static void init();
|
||||
};
|
||||
};
|
||||
@@ -81,7 +81,8 @@ Stat* CommonStats::get_blocksPlaced(int blockId)
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
|
||||
return Stats::blocksPlaced[blockId];
|
||||
#else
|
||||
return nullptr;
|
||||
return Stats::blocksPlaced[blockId];
|
||||
//return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -95,7 +96,7 @@ Stat *CommonStats::get_itemsCollected(int itemId, int itemAux)
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
|
||||
if (itemId == Tile::wool_Id) return Stats::rainbowCollection[itemAux];
|
||||
#endif
|
||||
|
||||
if (itemId == Tile::wool_Id) return Stats::rainbowCollection[itemAux];
|
||||
if (itemId != Item::emerald_Id) return Stats::itemsCollected[itemId];
|
||||
else return nullptr;
|
||||
}
|
||||
@@ -111,7 +112,8 @@ Stat *CommonStats::get_itemsUsed(int itemId)
|
||||
if (itemId == Item::porkChop_cooked_Id) return Stats::blocksPlaced[itemId];
|
||||
#endif
|
||||
|
||||
return nullptr;
|
||||
if (itemId == Item::porkChop_cooked_Id) return Stats::blocksPlaced[itemId];
|
||||
//return nullptr;
|
||||
}
|
||||
|
||||
Stat *CommonStats::get_itemsBought(int itemId)
|
||||
@@ -133,7 +135,8 @@ Stat *CommonStats::get_enteredBiome(int biomeId)
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
|
||||
return Stats::biomesVisisted[biomeId];
|
||||
#else
|
||||
return nullptr;
|
||||
return Stats::biomesVisisted[biomeId];
|
||||
//return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -161,17 +164,17 @@ Stat *CommonStats::get_achievement(eAward achievementId)
|
||||
case eAward_MOARTools: return (Stat *) Achievements::MOARTools;
|
||||
case eAward_DispenseWithThis: return (Stat *) Achievements::dispenseWithThis;
|
||||
case eAward_InToTheNether: return (Stat *) Achievements::InToTheNether;
|
||||
case eAward_mine100Blocks: return (Stat *) Achievements::mine100Blocks;
|
||||
case eAward_kill10Creepers: return (Stat *) Achievements::kill10Creepers;
|
||||
//case eAward_mine100Blocks: return (Stat *) Achievements::mine100Blocks;
|
||||
//case eAward_kill10Creepers: return (Stat *) Achievements::kill10Creepers;
|
||||
case eAward_eatPorkChop: return (Stat *) Achievements::eatPorkChop;
|
||||
case eAward_play100Days: return (Stat *) Achievements::play100Days;
|
||||
case eAward_arrowKillCreeper: return (Stat *) Achievements::arrowKillCreeper;
|
||||
case eAward_socialPost: return (Stat *) Achievements::socialPost;
|
||||
//case eAward_socialPost: return (Stat *) Achievements::socialPost;
|
||||
|
||||
#ifndef _XBOX
|
||||
case eAward_snipeSkeleton: return (Stat *) Achievements::snipeSkeleton;
|
||||
case eAward_diamonds: return (Stat *) Achievements::diamonds;
|
||||
case eAward_portal: return (Stat *) nullptr; // TODO
|
||||
//case eAward_portal: return (Stat *) nullptr; // TODO
|
||||
case eAward_ghast: return (Stat *) Achievements::ghast;
|
||||
case eAward_blazeRod: return (Stat *) Achievements::blazeRod;
|
||||
case eAward_potion: return (Stat *) Achievements::potion;
|
||||
@@ -180,7 +183,6 @@ Stat *CommonStats::get_achievement(eAward achievementId)
|
||||
case eAward_enchantments: return (Stat *) Achievements::enchantments;
|
||||
#endif
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
case eAward_overkill: return (Stat *) Achievements::overkill; // Restored old ach.
|
||||
case eAward_bookcase: return (Stat *) Achievements::bookcase; // Restored old ach.
|
||||
|
||||
@@ -203,7 +205,7 @@ Stat *CommonStats::get_achievement(eAward achievementId)
|
||||
case eAward_ironMan: return (Stat *) Achievements::ironMan;
|
||||
case eAward_zombieDoctor: return (Stat *) Achievements::zombieDoctor;
|
||||
case eAward_lionTamer: return (Stat *) Achievements::lionTamer;
|
||||
#endif
|
||||
|
||||
|
||||
default: return (Stat *) nullptr;
|
||||
}
|
||||
|
||||
@@ -94,7 +94,6 @@ shared_ptr<ItemInstance> ContainerMenu::clicked(int slotIndex, int buttonNum, in
|
||||
{
|
||||
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
shared_ptr<LocalPlayer> localPlayer = dynamic_pointer_cast<LocalPlayer>(player);
|
||||
|
||||
if (localPlayer != nullptr) // 4J-JEV: For "Chestful o'Cobblestone" achievement.
|
||||
@@ -119,7 +118,6 @@ shared_ptr<ItemInstance> ContainerMenu::clicked(int slotIndex, int buttonNum, in
|
||||
localPlayer->awardStat(GenericStats::chestfulOfCobblestone(),GenericStats::param_chestfulOfCobblestone(cobblecount));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "LevelData.h"
|
||||
#include "DirectoryLevelStorage.h"
|
||||
#include "ConsoleSaveFileIO.h"
|
||||
#include "../Minecraft.Client/Minecraft.h"
|
||||
|
||||
const wstring DirectoryLevelStorage::sc_szPlayerDir(L"players/");
|
||||
|
||||
@@ -391,6 +392,7 @@ void DirectoryLevelStorage::save(shared_ptr<Player> player)
|
||||
if( playerXuid != INVALID_XUID && !player->isGuest() )
|
||||
#endif
|
||||
{
|
||||
Minecraft::GetInstance()->forceStatsSave(player->getPlayerIndex());
|
||||
CompoundTag *tag = new CompoundTag();
|
||||
player->saveWithoutId(tag);
|
||||
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
|
||||
|
||||
@@ -100,10 +100,8 @@ shared_ptr<ItemInstance> FurnaceMenu::quickMoveStack(shared_ptr<Player> player,
|
||||
slot->onQuickCraft(stack, clicked);
|
||||
|
||||
// 4J-JEV, hook for Durango achievement 'Renewable Energy'.
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
if ( charcoalUsed && stack->getItem()->id == Item::coal_Id && stack->getAuxValue() == CoalItem::CHAR_COAL)
|
||||
player->awardStat(GenericStats::renewableEnergy(),GenericStats::param_renewableEnergy());
|
||||
#endif
|
||||
}
|
||||
else if (slotIndex == FUEL_SLOT || slotIndex == INGREDIENT_SLOT)
|
||||
{
|
||||
@@ -164,13 +162,13 @@ shared_ptr<ItemInstance> FurnaceMenu::clicked(int slotIndex, int buttonNum, int
|
||||
|
||||
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
|
||||
if ( charcoalUsed && (out!=nullptr) && (buttonNum==0 || buttonNum==1) && clickType==CLICK_PICKUP
|
||||
&& out->getItem()->id == Item::coal_Id && out->getAuxValue() == CoalItem::CHAR_COAL )
|
||||
{
|
||||
player->awardStat(GenericStats::renewableEnergy(),GenericStats::param_renewableEnergy());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -88,6 +88,7 @@ void FurnaceResultSlot::checkTakeAchievements(shared_ptr<ItemInstance> carried)
|
||||
#else
|
||||
if (carried->id == Item::ironIngot_Id) player->awardStat(GenericStats::acquireIron(), GenericStats::param_acquireIron());
|
||||
if (carried->id == Item::fish_cooked_Id) player->awardStat(GenericStats::cookFish(), GenericStats::param_cookFish());
|
||||
//if (carried->id == Item::porkChop_cooked_Id) GenericStats::itemsCrafted(Item::porkChop_cooked_Id);
|
||||
#endif
|
||||
|
||||
removeCount = 0;
|
||||
|
||||
@@ -358,7 +358,7 @@ Stat* GenericStats::overkill()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement( eAward_overkill );
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_overkill);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ Stat* GenericStats::bookcase()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement( eAward_bookcase );
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_bookcase);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -391,10 +391,10 @@ Stat* GenericStats::InToTheNether()
|
||||
return instance->get_achievement( eAward_InToTheNether );
|
||||
}
|
||||
|
||||
Stat* GenericStats::socialPost()
|
||||
{
|
||||
return instance->get_achievement( eAward_socialPost );
|
||||
}
|
||||
//Stat* GenericStats::socialPost()
|
||||
//{
|
||||
// return instance->get_achievement( eAward_socialPost );
|
||||
//}
|
||||
|
||||
Stat* GenericStats::eatPorkChop()
|
||||
{
|
||||
@@ -411,22 +411,22 @@ Stat* GenericStats::arrowKillCreeper()
|
||||
return instance->get_achievement( eAward_arrowKillCreeper );
|
||||
}
|
||||
|
||||
Stat* GenericStats::mine100Blocks()
|
||||
{
|
||||
return instance->get_achievement( eAward_mine100Blocks );
|
||||
}
|
||||
//Stat* GenericStats::mine100Blocks()
|
||||
//{
|
||||
// return instance->get_achievement( eAward_mine100Blocks );
|
||||
//}
|
||||
|
||||
Stat* GenericStats::kill10Creepers()
|
||||
{
|
||||
return instance->get_achievement( eAward_kill10Creepers );
|
||||
}
|
||||
//Stat* GenericStats::kill10Creepers()
|
||||
//{
|
||||
// return instance->get_achievement( eAward_kill10Creepers );
|
||||
//}
|
||||
|
||||
Stat* GenericStats::adventuringTime()
|
||||
{
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_adventuringTime);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_adventuringTime);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -435,7 +435,7 @@ Stat* GenericStats::repopulation()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_repopulation);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_repopulation);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -444,7 +444,7 @@ Stat* GenericStats::porkChop()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_eatPorkChop);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_eatPorkChop);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ Stat* GenericStats::diamondsToYou()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_diamondsToYou);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_diamondsToYou);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ Stat* GenericStats::passingTheTime()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_play100Days);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_play100Days);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -471,7 +471,7 @@ Stat* GenericStats::archer()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_arrowKillCreeper);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_arrowKillCreeper);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ Stat* GenericStats::theHaggler()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_theHaggler);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_theHaggler);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ Stat* GenericStats::potPlanter()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_potPlanter);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_potPlanter);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -498,7 +498,7 @@ Stat* GenericStats::itsASign()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_itsASign);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_itsASign);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -507,7 +507,7 @@ Stat* GenericStats::ironBelly()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_ironBelly);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_ironBelly);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -516,7 +516,7 @@ Stat* GenericStats::haveAShearfulDay()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_haveAShearfulDay);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_haveAShearfulDay);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -525,7 +525,7 @@ Stat* GenericStats::rainbowCollection()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_rainbowCollection);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_rainbowCollection);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ Stat* GenericStats::stayinFrosty()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_stayinFrosty);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_stayinFrosty);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -543,7 +543,7 @@ Stat* GenericStats::chestfulOfCobblestone()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_chestfulOfCobblestone);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_chestfulOfCobblestone);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -552,7 +552,7 @@ Stat* GenericStats::renewableEnergy()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_renewableEnergy);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_renewableEnergy);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -561,7 +561,7 @@ Stat* GenericStats::musicToMyEars()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_musicToMyEars);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_musicToMyEars);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -570,7 +570,7 @@ Stat* GenericStats::bodyGuard()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_bodyGuard);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_bodyGuard);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -579,7 +579,7 @@ Stat* GenericStats::ironMan()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_ironMan);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_ironMan);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -588,7 +588,7 @@ Stat* GenericStats::zombieDoctor()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_zombieDoctor);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_zombieDoctor);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -597,7 +597,7 @@ Stat* GenericStats::lionTamer()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->get_achievement(eAward_lionTamer);
|
||||
#else
|
||||
return nullptr;
|
||||
return instance->get_achievement(eAward_lionTamer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1057,7 +1057,7 @@ byteArray GenericStats::param_bookcase()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_bookcase);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_bookcase);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1081,10 +1081,10 @@ byteArray GenericStats::param_InToTheNether()
|
||||
return instance->getParam_achievement(eAward_InToTheNether);
|
||||
}
|
||||
|
||||
byteArray GenericStats::param_socialPost()
|
||||
{
|
||||
return instance->getParam_achievement(eAward_socialPost);
|
||||
}
|
||||
//byteArray GenericStats::param_socialPost()
|
||||
//{
|
||||
// return instance->getParam_achievement(eAward_socialPost);
|
||||
//}
|
||||
|
||||
byteArray GenericStats::param_eatPorkChop()
|
||||
{
|
||||
@@ -1101,22 +1101,22 @@ byteArray GenericStats::param_arrowKillCreeper()
|
||||
return instance->getParam_achievement(eAward_arrowKillCreeper);
|
||||
}
|
||||
|
||||
byteArray GenericStats::param_mine100Blocks()
|
||||
{
|
||||
return instance->getParam_achievement(eAward_mine100Blocks);
|
||||
}
|
||||
|
||||
byteArray GenericStats::param_kill10Creepers()
|
||||
{
|
||||
return instance->getParam_achievement(eAward_kill10Creepers);
|
||||
}
|
||||
//byteArray GenericStats::param_mine100Blocks()
|
||||
//{
|
||||
// return instance->getParam_achievement(eAward_mine100Blocks);
|
||||
//}
|
||||
//
|
||||
//byteArray GenericStats::param_kill10Creepers()
|
||||
//{
|
||||
// return instance->getParam_achievement(eAward_kill10Creepers);
|
||||
//}
|
||||
|
||||
byteArray GenericStats::param_adventuringTime()
|
||||
{
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_adventuringTime);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_adventuringTime);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1125,7 +1125,7 @@ byteArray GenericStats::param_repopulation()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_repopulation);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_repopulation);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1134,7 +1134,7 @@ byteArray GenericStats::param_porkChop()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_eatPorkChop);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_eatPorkChop);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1143,7 +1143,7 @@ byteArray GenericStats::param_diamondsToYou()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_diamondsToYou);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_diamondsToYou);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1152,7 +1152,7 @@ byteArray GenericStats::param_passingTheTime()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_play100Days);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_play100Days);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1161,7 +1161,7 @@ byteArray GenericStats::param_archer()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_arrowKillCreeper);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_arrowKillCreeper);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1170,7 +1170,7 @@ byteArray GenericStats::param_theHaggler()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_theHaggler);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_theHaggler);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1179,7 +1179,7 @@ byteArray GenericStats::param_potPlanter()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_potPlanter);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_potPlanter);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1188,7 +1188,7 @@ byteArray GenericStats::param_itsASign()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_itsASign);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_itsASign);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1197,7 +1197,7 @@ byteArray GenericStats::param_ironBelly()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_ironBelly);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_ironBelly);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1206,7 +1206,7 @@ byteArray GenericStats::param_haveAShearfulDay()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_haveAShearfulDay);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_haveAShearfulDay);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1215,7 +1215,7 @@ byteArray GenericStats::param_rainbowCollection()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_rainbowCollection);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_rainbowCollection);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1224,7 +1224,7 @@ byteArray GenericStats::param_stayinFrosty()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_stayinFrosty);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_stayinFrosty);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1238,7 +1238,7 @@ byteArray GenericStats::param_renewableEnergy()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_renewableEnergy);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_renewableEnergy);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1252,7 +1252,7 @@ byteArray GenericStats::param_bodyGuard()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_bodyGuard);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_bodyGuard);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1261,7 +1261,7 @@ byteArray GenericStats::param_ironMan()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_ironMan);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_ironMan);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1270,7 +1270,7 @@ byteArray GenericStats::param_zombieDoctor()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_zombieDoctor);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_zombieDoctor);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1279,6 +1279,6 @@ byteArray GenericStats::param_lionTamer()
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
return instance->getParam_achievement(eAward_lionTamer);
|
||||
#else
|
||||
return instance->getParam_noArgs();
|
||||
return instance->getParam_achievement(eAward_lionTamer);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -235,7 +235,6 @@ shared_ptr<ItemInstance> InventoryMenu::clicked(int slotIndex, int buttonNum, in
|
||||
{
|
||||
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
static int ironItems[4] = {Item::helmet_iron_Id,Item::chestplate_iron_Id,Item::leggings_iron_Id,Item::boots_iron_Id};
|
||||
for (int i = ARMOR_SLOT_START; i < ARMOR_SLOT_END; i++)
|
||||
{
|
||||
@@ -246,7 +245,7 @@ shared_ptr<ItemInstance> InventoryMenu::clicked(int slotIndex, int buttonNum, in
|
||||
}
|
||||
}
|
||||
player->awardStat(GenericStats::ironMan(),GenericStats::param_ironMan());
|
||||
#endif
|
||||
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ void ItemEntity::playerTouch(shared_ptr<Player> player)
|
||||
{
|
||||
player->awardStat(GenericStats::diamonds(), GenericStats::param_diamonds());
|
||||
|
||||
#ifdef _EXTENDED_ACHIEVEMENTS
|
||||
|
||||
if ( getItem()->getItem()->id )
|
||||
{
|
||||
shared_ptr<Player> pThrower = level->getPlayerByName(getThrower());
|
||||
@@ -251,7 +251,6 @@ void ItemEntity::playerTouch(shared_ptr<Player> player)
|
||||
pThrower->awardStat(GenericStats::diamondsToYou(), GenericStats::param_diamondsToYou());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (item->id == Item::blazeRod_Id)
|
||||
player->awardStat(GenericStats::blazeRod(), GenericStats::param_blazeRod());
|
||||
|
||||
@@ -2483,10 +2483,10 @@ void Player::startUsingItem(shared_ptr<ItemInstance> instance, int duration)
|
||||
awardStat(GenericStats::itemsUsed(instance->getItem()->id),
|
||||
GenericStats::param_itemsUsed(dynamic_pointer_cast<Player>(shared_from_this()),instance));
|
||||
|
||||
#if (!defined _DURANGO) && (defined _EXTENDED_ACHIEVEMENTS)
|
||||
|
||||
if ( (instance->getItem()->id == Item::rotten_flesh_Id) && (getFoodData()->getFoodLevel() == 0) )
|
||||
awardStat(GenericStats::ironBelly(), GenericStats::param_ironBelly());
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
bool Player::mayDestroyBlockAt(int x, int y, int z)
|
||||
|
||||
@@ -23,9 +23,8 @@ vector<ItemStat *> *Stats::blocksMinedStats = new vector<ItemStat *>;
|
||||
vector<ItemStat *> *Stats::itemsCollectedStats = new vector<ItemStat *>;
|
||||
vector<ItemStat *> *Stats::itemsCraftedStats = new vector<ItemStat *>;
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
vector<ItemStat *> *Stats::blocksPlacedStats = new vector<ItemStat *>;
|
||||
#endif
|
||||
|
||||
|
||||
Stat *Stats::walkOneM = nullptr;
|
||||
Stat *Stats::swimOneM = nullptr;
|
||||
@@ -56,11 +55,11 @@ StatArray Stats::blocksMined;
|
||||
StatArray Stats::itemsCollected;
|
||||
StatArray Stats::itemsCrafted;
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
|
||||
StatArray Stats::blocksPlaced;
|
||||
StatArray Stats::rainbowCollection;
|
||||
StatArray Stats::biomesVisisted;
|
||||
#endif
|
||||
|
||||
|
||||
Stat *Stats::killsEnderdragon = nullptr; // The number of times this player has dealt the killing blow to the Enderdragon
|
||||
Stat *Stats::completeTheEnd = nullptr; // The number of times this player has been present when the Enderdragon has died
|
||||
@@ -473,7 +472,7 @@ void Stats::buildAdditionalStats()
|
||||
Stats::completeTheEnd = (new GeneralStat(offset++, L"stat.completeTheEnd"))->postConstruct();
|
||||
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
|
||||
{
|
||||
ItemStat *itemStat = new ItemStat(offset++, L"craftItem.flowerPot", Item::flowerPot_Id);
|
||||
itemsCraftedStats->push_back(itemStat);
|
||||
@@ -547,7 +546,6 @@ void Stats::buildAdditionalStats()
|
||||
blocksPlaced[itemStat->getItemId()] = itemStat;
|
||||
itemStat->postConstruct();
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@ public:
|
||||
static vector<ItemStat *> *itemsCollectedStats;
|
||||
static vector<ItemStat *> *itemsCraftedStats;
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
|
||||
static vector<ItemStat *> *blocksPlacedStats;
|
||||
#endif
|
||||
|
||||
|
||||
static Stat *walkOneM;
|
||||
static Stat *swimOneM;
|
||||
@@ -60,18 +60,18 @@ public:
|
||||
static StatArray itemsCollected;
|
||||
static StatArray itemsCrafted;
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
|
||||
static StatArray blocksPlaced;
|
||||
#endif
|
||||
|
||||
|
||||
// Added TU9
|
||||
static Stat *killsEnderdragon; // The number of times this player has dealt the killing blow to the Enderdragon
|
||||
static Stat *completeTheEnd; // The number of times this player has been present when the Enderdragon has died
|
||||
|
||||
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
|
||||
|
||||
static StatArray biomesVisisted;
|
||||
static StatArray rainbowCollection;
|
||||
#endif
|
||||
|
||||
|
||||
static void staticCtor();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user