diff --git a/Minecraft.Client/CMakeLists.txt b/Minecraft.Client/CMakeLists.txt index 5e7ac9b7..e3270c7b 100644 --- a/Minecraft.Client/CMakeLists.txt +++ b/Minecraft.Client/CMakeLists.txt @@ -23,8 +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") set(MINECRAFT_CLIENT_COMPILETIME_STRINGS_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${PLATFORM_NAME}Media/strings.h") if(PLATFORM_NAME STREQUAL "Windows64") set(MINECRAFT_CLIENT_COMPILETIME_STRINGS_HEADER "${CMAKE_BINARY_DIR}/generated/Windows64Media/strings.h") @@ -153,3 +152,4 @@ add_copyredist_target(Minecraft.Client) if(PLATFORM_NAME STREQUAL "Windows64") add_gamehdd_target(Minecraft.Client) endif() + diff --git a/Minecraft.Client/Common/Console_Awards_enum.h b/Minecraft.Client/Common/Console_Awards_enum.h index 9597c717..e1a7d1d2 100644 --- a/Minecraft.Client/Common/Console_Awards_enum.h +++ b/Minecraft.Client/Common/Console_Awards_enum.h @@ -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,7 @@ enum eAward eAward_bookcase, #endif -#ifdef _EXTENDED_ACHIEVEMENTS + eAward_adventuringTime, eAward_repopulation, //eAward_porkChop, @@ -66,7 +66,6 @@ enum eAward eAward_ironMan, eAward_zombieDoctor, eAward_lionTamer, -#endif eAward_Max, }; diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index 02f56258..043f40d0 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -6698,7 +6698,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); @@ -6781,7 +6781,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) ); @@ -7018,7 +7018,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) @@ -7136,7 +7136,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 diff --git a/Minecraft.Client/Common/Consoles_App.h b/Minecraft.Client/Common/Consoles_App.h index fc51e147..4fb409d5 100644 --- a/Minecraft.Client/Common/Consoles_App.h +++ b/Minecraft.Client/Common/Consoles_App.h @@ -572,11 +572,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; } diff --git a/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu1080.swf b/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu1080.swf new file mode 100644 index 00000000..c88c1c63 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu1080.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu720.swf b/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu720.swf new file mode 100644 index 00000000..c88c1c63 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/AchievementsMenu720.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP001.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP001.png new file mode 100644 index 00000000..6c91a0b3 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP001.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP002.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP002.png new file mode 100644 index 00000000..07ceec6c Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP002.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP003.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP003.png new file mode 100644 index 00000000..a2bd5352 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP003.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP004.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP004.png new file mode 100644 index 00000000..533f4247 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP004.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP005.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP005.png new file mode 100644 index 00000000..c8858e49 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP005.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP006.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP006.png new file mode 100644 index 00000000..45ef6ac0 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP006.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP007.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP007.png new file mode 100644 index 00000000..a76e2af9 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP007.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP008.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP008.png new file mode 100644 index 00000000..5fffee69 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP008.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP009.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP009.png new file mode 100644 index 00000000..37954766 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP009.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP010.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP010.png new file mode 100644 index 00000000..2592f6a2 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP010.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP011.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP011.png new file mode 100644 index 00000000..d0d89675 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP011.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP012.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP012.png new file mode 100644 index 00000000..1e1794c8 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP012.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP013.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP013.png new file mode 100644 index 00000000..50f6416f Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP013.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP014.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP014.png new file mode 100644 index 00000000..5b9b3c95 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP014.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP015.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP015.png new file mode 100644 index 00000000..69a181aa Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP015.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP016.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP016.png new file mode 100644 index 00000000..5ba932ba Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP016.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP017.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP017.png new file mode 100644 index 00000000..1570b067 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP017.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP018.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP018.png new file mode 100644 index 00000000..e0021074 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP018.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP019.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP019.png new file mode 100644 index 00000000..0bd4b12d Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP019.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP020.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP020.png new file mode 100644 index 00000000..c75db2ed Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP020.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP021.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP021.png new file mode 100644 index 00000000..a1d6a88a Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP021.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP022.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP022.png new file mode 100644 index 00000000..85151592 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP022.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP023.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP023.png new file mode 100644 index 00000000..f631cb25 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP023.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP024.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP024.png new file mode 100644 index 00000000..372efe28 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP024.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP025.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP025.png new file mode 100644 index 00000000..57a6a2de Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP025.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP026.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP026.png new file mode 100644 index 00000000..d590e93b Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP026.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP027.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP027.png new file mode 100644 index 00000000..2eb3ab32 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP027.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP028.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP028.png new file mode 100644 index 00000000..3f0b064a Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP028.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP029.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP029.png new file mode 100644 index 00000000..462cd3b6 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP029.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP030.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP030.png new file mode 100644 index 00000000..65ef38c5 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP030.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP031.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP031.png new file mode 100644 index 00000000..93a7dc32 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP031.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP032.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP032.png new file mode 100644 index 00000000..0347e6f1 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP032.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP033.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP033.png new file mode 100644 index 00000000..a0eba038 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP033.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP034.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP034.png new file mode 100644 index 00000000..2eaffee2 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP034.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP035.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP035.png new file mode 100644 index 00000000..1c255727 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP035.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP036.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP036.png new file mode 100644 index 00000000..13f532b0 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP036.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP037.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP037.png new file mode 100644 index 00000000..a0d9dec9 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP037.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP038.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP038.png new file mode 100644 index 00000000..183e746a Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP038.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP039.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP039.png new file mode 100644 index 00000000..10006eb8 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP039.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP040.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP040.png new file mode 100644 index 00000000..ae19de54 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP040.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP041.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP041.png new file mode 100644 index 00000000..a8b46721 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP041.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP042.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP042.png new file mode 100644 index 00000000..d2277389 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP042.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP043.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP043.png new file mode 100644 index 00000000..38c1930e Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP043.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP044.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP044.png new file mode 100644 index 00000000..7dfff502 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP044.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP045.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP045.png new file mode 100644 index 00000000..31ecdcf6 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP045.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP046.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP046.png new file mode 100644 index 00000000..49a20d1d Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP046.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP047.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP047.png new file mode 100644 index 00000000..27fc936c Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP047.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP048.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP048.png new file mode 100644 index 00000000..4ab86dfd Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP048.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP049.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP049.png new file mode 100644 index 00000000..19fcae0f Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP049.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP050.png b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP050.png new file mode 100644 index 00000000..5dbf4dc2 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/Graphics/Achievements/TROP050.png differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay1080.swf b/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay1080.swf index 87de331d..846f8f61 100644 Binary files a/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay1080.swf and b/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay1080.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay720.swf b/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay720.swf index 2554a31d..846f8f61 100644 Binary files a/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay720.swf and b/Minecraft.Client/Common/Media/MediaWindows64/PressStartToPlay720.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/skinGraphics.swf b/Minecraft.Client/Common/Media/MediaWindows64/skinGraphics.swf index f0482ec7..b2cc9f88 100644 Binary files a/Minecraft.Client/Common/Media/MediaWindows64/skinGraphics.swf and b/Minecraft.Client/Common/Media/MediaWindows64/skinGraphics.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/skinInGameLC.swf b/Minecraft.Client/Common/Media/MediaWindows64/skinInGameLC.swf new file mode 100644 index 00000000..d49f1440 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/skinInGameLC.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/skinLC.swf b/Minecraft.Client/Common/Media/MediaWindows64/skinLC.swf new file mode 100644 index 00000000..e647d7f6 Binary files /dev/null and b/Minecraft.Client/Common/Media/MediaWindows64/skinLC.swf differ diff --git a/Minecraft.Client/Common/Media/MediaWindows64/skinWin.swf b/Minecraft.Client/Common/Media/MediaWindows64/skinWin.swf index b620e70e..d5ea35fd 100644 Binary files a/Minecraft.Client/Common/Media/MediaWindows64/skinWin.swf and b/Minecraft.Client/Common/Media/MediaWindows64/skinWin.swf differ diff --git a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp index f15a4ab2..9580789f 100644 --- a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp +++ b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.cpp @@ -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(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(achievementName.length()); + value[0].string8 = stringVal1; + + IggyStringUTF8 stringVal2; + stringVal2.string = (char*)achievementDescription.c_str(); + stringVal2.length = static_cast(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(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(); } diff --git a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.h b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.h index a29b6016..26a77cd7 100644 --- a/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.h +++ b/Minecraft.Client/Common/UI/UIComponent_PressStartToPlay.h @@ -15,7 +15,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 +26,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 +49,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); diff --git a/Minecraft.Client/Common/UI/UIControl.h b/Minecraft.Client/Common/UI/UIControl.h index 692e6a4e..f6ea6aa0 100644 --- a/Minecraft.Client/Common/UI/UIControl.h +++ b/Minecraft.Client/Common/UI/UIControl.h @@ -33,6 +33,7 @@ public: eTouchControl, eBook, ePageFlip, + eAchievementList, }; protected: eUIControlType m_eControlType; @@ -65,7 +66,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;} diff --git a/Minecraft.Client/Common/UI/UIControl_AchievementsList.cpp b/Minecraft.Client/Common/UI/UIControl_AchievementsList.cpp new file mode 100644 index 00000000..ce0e12ab --- /dev/null +++ b/Minecraft.Client/Common/UI/UIControl_AchievementsList.cpp @@ -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(Math::round(fwidth)); + m_height = static_cast(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; +} \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIControl_AchievementsList.h b/Minecraft.Client/Common/UI/UIControl_AchievementsList.h new file mode 100644 index 00000000..4115ca5e --- /dev/null +++ b/Minecraft.Client/Common/UI/UIControl_AchievementsList.h @@ -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(); +}; \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIController.cpp b/Minecraft.Client/Common/UI/UIController.cpp index 6a51fe22..0ba5f151 100644 --- a/Minecraft.Client/Common/UI/UIController.cpp +++ b/Minecraft.Client/Common/UI/UIController.cpp @@ -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" @@ -609,6 +611,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"); + // Some 1080p menu ports (such as LoadCreateJoin) may import DR-specific HD // libraries by distinct names. Load them opportunistically when present so // those SWFs can resolve their imports without replacing the normal Windows @@ -960,7 +967,8 @@ 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::ePageFlip) + type != UIControl::eButtonList && type != UIControl::eTexturePackList && type != UIControl::ePageFlip + && type != UIControl::eAchievementList) continue; // If the scene has an active panel (e.g. tab menus), @@ -1002,6 +1010,18 @@ void UIController::tickInput() hitCtrl = NULL; break; // ButtonList takes priority } + if (type == UIControl::eAchievementList) + { + auto t = (UIScene_AchievementsMenu*)pScene; + static_cast(ctrl)->SetTouchFocus( + static_cast(sceneMouseX - cx), static_cast(sceneMouseY - cy), false); + /*static_cast(ctrl)->SetTouchFocus( + static_cast(t->aX), static_cast(t->aY), false);*/ + hitControlId = -1; + hitArea = INT_MAX; + hitCtrl = NULL; + break; + } if (type == UIControl::eTexturePackList) { // TexturePackList expects coords relative to its origin. @@ -1877,6 +1897,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 ) @@ -1890,11 +1914,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 && isSub == false) + { + *width = 96; + *height = 96; + } } + #endif *destroy_callback_data = (void *)id; @@ -2983,6 +3011,15 @@ void UIController::HidePressStart() if(m_groups[static_cast(eUIGroup_Fullscreen)]->getPressStartToPlay()) m_groups[static_cast(eUIGroup_Fullscreen)]->getPressStartToPlay()->showPressStart(0, false); } +void UIController::ShowAchievementToast(string achievementName, string achievementDescription, byteArray b, string achT) +{ + if (m_groups[static_cast(eUIGroup_Fullscreen)]->getPressStartToPlay()) { + m_groups[static_cast(eUIGroup_Fullscreen)]->getPressStartToPlay()->registerSubstitutionTexture(convStringToWstring(achT) + L"sub", b.data, b.length); + m_groups[static_cast(eUIGroup_Fullscreen)]->getPressStartToPlay()->ShowAchievementToast(achievementName, achievementDescription, achT + "sub"); + } + toastOn = true; +} + void UIController::ClearPressStart() { m_iPressStartQuadrantsMask = 0; diff --git a/Minecraft.Client/Common/UI/UIController.h b/Minecraft.Client/Common/UI/UIController.h index eee86757..6876bcee 100644 --- a/Minecraft.Client/Common/UI/UIController.h +++ b/Minecraft.Client/Common/UI/UIController.h @@ -18,7 +18,7 @@ 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; @@ -103,6 +103,9 @@ private: eLibrary_Tooltips, eLibrary_Default, + eLibrary_LCDefault, + eLibrary_LCInGame, + #if defined(_WINDOWS64) // Non-HD skin libraries needed by 720p/480p scene SWFs. eLibraryFallback_Platform, @@ -208,6 +211,9 @@ 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); @@ -388,6 +394,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); diff --git a/Minecraft.Client/Common/UI/UIEnums.h b/Minecraft.Client/Common/UI/UIEnums.h index 794c6e41..818c3f48 100644 --- a/Minecraft.Client/Common/UI/UIEnums.h +++ b/Minecraft.Client/Common/UI/UIEnums.h @@ -100,6 +100,7 @@ enum EUIScene eUIScene_HorseMenu, eUIScene_FireworksMenu, eUIScene_BookMenu, + eUIScene_AchievementsMenu, #ifdef _XBOX // eUIScene_TransferToXboxOne, #endif diff --git a/Minecraft.Client/Common/UI/UILayer.cpp b/Minecraft.Client/Common/UI/UILayer.cpp index 9c69dbef..f23d9c44 100644 --- a/Minecraft.Client/Common/UI/UILayer.cpp +++ b/Minecraft.Client/Common/UI/UILayer.cpp @@ -4,6 +4,7 @@ #include "UIScene.h" #include "IUIScene_WritingBookMenu.h" #include "UIScene_BookAndQuillMenu.h" +#include "UIScene_AchievementsMenu.h" UILayer::UILayer(UIGroup *parent) { @@ -268,6 +269,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; // Book case eUIScene_BookMenu: newScene = new UIScene_BookAndQuillMenu(iPad, initData, this); diff --git a/Minecraft.Client/Common/UI/UIScene.cpp b/Minecraft.Client/Common/UI/UIScene.cpp index 2473963e..12b059c8 100644 --- a/Minecraft.Client/Common/UI/UIScene.cpp +++ b/Minecraft.Client/Common/UI/UIScene.cpp @@ -785,7 +785,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 item, float fAlpha, bool isFoil, bool bDecorations) diff --git a/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.cpp new file mode 100644 index 00000000..18f5b0dc --- /dev/null +++ b/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.cpp @@ -0,0 +1,262 @@ +#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(L"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); + if (Minecraft::GetInstance()->stats[Minecraft::GetInstance()->player->GetXboxPad()]->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() +{ +#ifdef _WINDOWS64 +#endif +} + +void UIScene_AchievementsMenu::SetAchievementDescription(wstring desc) { + wstring desc2 = L""; + + if (desc != L"") { + HtmlString test = HtmlString(desc, eHTMLColor_White); + vector* lines = new vector(); + 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() +{ + m_parentLayer->showComponent(m_iPad, eUIComponent_Logo, false); + m_parentLayer->showComponent(m_iPad, eUIComponent_MenuBackground, 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(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(m_movieWidth) * screenW / (static_cast(renderW) * static_cast(winW)); + scaleY = static_cast(m_movieHeight) * screenH / (static_cast(renderH) * static_cast(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(deltaX) * scaleX / 2; + m_pointerPos.y += static_cast(deltaY) * scaleY / 2; + + if (m_pointerPos.x < 0.0f) m_pointerPos.x = 0.0f; + if (m_pointerPos.x > static_cast(m_movieWidth)) m_pointerPos.x = static_cast(m_movieWidth); + if (m_pointerPos.y < 0.0f) m_pointerPos.y = 0.0f; + if (m_pointerPos.y > static_cast(m_movieHeight)) m_pointerPos.y = static_cast(m_movieHeight); + } + + IggyEvent mouseEvent; + S32 width, height; + m_parentLayer->getRenderDimensions(width, height); + S32 x = static_cast(m_pointerPos.x * (static_cast(width) / static_cast(m_movieWidth))); + aX = x; + S32 y = static_cast(m_pointerPos.y * (static_cast(height) / static_cast(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(controlId)) + { + case 0: + m_achievementsList.updateChildFocus(static_cast(childId)); + //m_achievementsList.setCurrentSelection(static_cast(childId)); + //m_labelName.setLabel(app.GetString(Achievements::achievements->at(static_cast(childId) - 1)->nameID)); + //SetAchievementDescription(app.GetString(Achievements::achievements->at(static_cast(childId) - 1)->descID)); + + //m_labelName.setLabel(app.GetString(IDS_ACHIEVEMENTS); + break; + }; + updateTooltips(); +} \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.h b/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.h new file mode 100644 index 00000000..e14a3764 --- /dev/null +++ b/Minecraft.Client/Common/UI/UIScene_AchievementsMenu.h @@ -0,0 +1,69 @@ +#pragma once +#include + +#include "Common/UI/UIScene.h" +#include "Common/UI/UIControl_Button.h" +#include "Common/UI/UIControl_Cursor.h" +#include "UIControl_AchievementsList.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 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_cursorPath1, "cursor") + //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(); +}; \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp b/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp index 7d75aa2f..28e37887 100644 --- a/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_PauseMenu.cpp @@ -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; @@ -632,9 +632,10 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId) else { XShowAchievementsUI( pNotifyPressData->UserIndex ); - } + }*/ + ui.NavigateToScene(m_iPad, eUIScene_AchievementsMenu); break; -#endif + case BUTTON_PAUSE_HELPANDOPTIONS: ui.NavigateToScene(m_iPad,eUIScene_HelpAndOptionsMenu); diff --git a/Minecraft.Client/LocalPlayer.cpp b/Minecraft.Client/LocalPlayer.cpp index 3c38f715..7f0965af 100644 --- a/Minecraft.Client/LocalPlayer.cpp +++ b/Minecraft.Client/LocalPlayer.cpp @@ -11,7 +11,7 @@ #include "CraftingScreen.h" #include "FurnaceScreen.h" #include "TrapScreen.h" - +#include "../Minecraft.Client/Common/UI/UIScene.h" #include "MultiPlayerLocalPlayer.h" #include "CreativeMode.h" #include "GameRenderer.h" @@ -864,6 +864,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 @@ -886,6 +896,30 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param) if (stat->isAchievement()) { Achievement *ach = static_cast(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)) @@ -898,6 +932,8 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param) // This causes some extreme flooding of some awards if(ProfileManager.CanBeAwarded(m_iPad, ach->getAchievementID() ) ) { + + // 4J Stu - We don't (currently) care about the gamerscore, so setting to a default of 0 points TelemetryManager->RecordAchievementUnlocked(m_iPad,ach->getAchievementID(),0); @@ -1022,7 +1058,7 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param) } #endif -#ifdef _EXTENDED_ACHIEVEMENTS + // AWARD : Porkchop, cook and eat a porkchop. { @@ -1182,7 +1218,7 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param) } #endif } -#endif + } bool LocalPlayer::isSolidBlock(int x, int y, int z) diff --git a/Minecraft.Client/LocalPlayer.h b/Minecraft.Client/LocalPlayer.h index 88e88f23..b50dda75 100644 --- a/Minecraft.Client/LocalPlayer.h +++ b/Minecraft.Client/LocalPlayer.h @@ -57,6 +57,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; @@ -66,7 +67,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; diff --git a/Minecraft.Client/Minecraft.cpp b/Minecraft.Client/Minecraft.cpp index 7ef8bda1..df0f7b7e 100644 --- a/Minecraft.Client/Minecraft.cpp +++ b/Minecraft.Client/Minecraft.cpp @@ -71,6 +71,7 @@ #endif #include "Common/UI/IUIScene_CreativeMenu.h" #include "Common/UI/UIFontData.h" +#include "Common/UI/UIComponent_PressStartToPlay.h" #include "DLCTexturePack.h" #ifdef _WINDOWS64 #define STB_IMAGE_WRITE_IMPLEMENTATION @@ -1452,6 +1453,7 @@ void Minecraft::run_middle() if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_USE)) localplayers[i]->ullButtonsPressed|=1LL<ullButtonsPressed|=1LL<ullButtonsDown|=1LL<ullButtonsPressed|=1LL<ullButtonsPressed|=1LL<isUsingItem() ) { if(!useHeld) gameMode->releaseUsingItem(player); } - else if( gameMode->isInputAllowed(MINECRAFT_ACTION_USE) ) + else if (gameMode->isInputAllowed(MINECRAFT_ACTION_USE)) { - if( player->abilities.instabuild ) + 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 ) + if (player->lastClickState == LocalPlayer::lastClick_oldRepeat) { // If we've already handled the click in creativeModeHandleMouseClick then just record the time of this click - if( didClick ) + if (didClick) { player->lastClickTick[1] = ticks; } @@ -3700,21 +3703,21 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) // Consider as a click if we've had a period of not pressing the button, or we've reached auto-repeat time since the last time // Auto-repeat is only considered if we aren't riding or sprinting, to avoid photo sensitivity issues when placing fire whilst doing fast things // Also disable repeat when the player is sleeping to stop the waking up right after using the bed - bool firstClick = ( player->lastClickTick[1] == 0 ); + bool firstClick = (player->lastClickTick[1] == 0); bool autoRepeat = ticks - player->lastClickTick[1] >= timer->ticksPerSecond / 4; - if ( player->isRiding() || player->isSprinting() || player->isSleeping() ) autoRepeat = false; - if (useHeld ) + if (player->isRiding() || player->isSprinting() || player->isSleeping()) autoRepeat = false; + if (useHeld) { // If the player has just exited a bed, then delay the time before a repeat key is allowed without releasing - if(player->isSleeping() ) player->lastClickTick[1] = ticks + (timer->ticksPerSecond * 2); - if( firstClick || autoRepeat ) + if (player->isSleeping()) player->lastClickTick[1] = ticks + (timer->ticksPerSecond * 2); + if (firstClick || autoRepeat) { bool wasSleeping = player->isSleeping(); player->handleMouseClick(1); // If the player has just exited a bed, then delay the time before a repeat key is allowed without releasing - if(wasSleeping) player->lastClickTick[1] = ticks + (timer->ticksPerSecond * 2); + if (wasSleeping) player->lastClickTick[1] = ticks + (timer->ticksPerSecond * 2); else player->lastClickTick[1] = ticks; } } @@ -3723,6 +3726,68 @@ 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(eUIGroup_Fullscreen)]->getPressStartToPlay()->handleTimerComplete(1); + } + } + else { + // If let go during period, open inventory + if (player->lastClickTick[2] != 0) { + shared_ptr 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 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()) @@ -3860,19 +3925,26 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) if((player->ullButtonsPressed&(1LL<isInputAllowed(MINECRAFT_ACTION_INVENTORY)) { - shared_ptr 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 player = Minecraft::GetInstance()->player; + if (!player->isRiding()) + { + ui.PlayUISFX(eSFX_Press); + } - if(gameMode->isServerControlledInventory()) - { - player->sendOpenInventory(); - } - else - { - app.LoadInventoryMenu(iPad,player); + if (gameMode->isServerControlledInventory()) + { + player->sendOpenInventory(); + } + else + { + app.LoadInventoryMenu(iPad, player); + }*/ } } @@ -3900,7 +3972,7 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures) else { ui.PlayUISFX(eSFX_Press); - app.LoadCrafting2x2Menu(iPad,player); + app.LoadCrafting2x2Menu(iPad, player); } } diff --git a/Minecraft.Client/Minecraft.h b/Minecraft.Client/Minecraft.h index 0845edb3..b4db857f 100644 --- a/Minecraft.Client/Minecraft.h +++ b/Minecraft.Client/Minecraft.h @@ -92,7 +92,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 player; diff --git a/Minecraft.Client/StatsCounter.cpp b/Minecraft.Client/StatsCounter.cpp index 608e069c..35c2d924 100644 --- a/Minecraft.Client/StatsCounter.cpp +++ b/Minecraft.Client/StatsCounter.cpp @@ -211,7 +211,8 @@ 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))); - assert( uiTotalStatsSize <= (CConsoleMinecraftApp::GAME_DEFINED_PROFILE_DATA_BYTES-sizeof(GAME_SETTINGS)) ); + //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 #if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ ) diff --git a/Minecraft.Client/StatsCounter.h b/Minecraft.Client/StatsCounter.h index e292ccf2..84fafbc4 100644 --- a/Minecraft.Client/StatsCounter.h +++ b/Minecraft.Client/StatsCounter.h @@ -89,9 +89,10 @@ public: #ifdef _DEBUG void WipeLeaderboards(); #endif + bool isLargeStat(Stat* stat); private: - bool isLargeStat(Stat* stat); + void dumpStatsToTTY(); #ifdef _XBOX diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index 9ea61f72..809c64e3 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -1836,7 +1836,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, 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); diff --git a/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml b/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml index 3dc913a4..cb4d4244 100644 --- a/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml +++ b/Minecraft.Client/Windows64Media/loc/stringsGeneric.xml @@ -1,4 +1,4 @@ - + New Downloadable Content is available! Access it from the Minecraft Store button on the Main Menu. @@ -9396,4 +9396,156 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc Elytra + + Taking Inventory + Open your inventory. + + Getting Wood + Punch a tree until a block of wood pops out. + + Benchmarking + Craft a Workbench with four blocks of Wooden Planks. + + Time to Mine! + Use Planks and Sticks to make a Pickaxe. + + Hot Topic + Construct a Furnace out of eight Cobblestone blocks. + + Acquire Hardware + Smelt an Iron Ingot. + + Time to Farm! + Make a Hoe. + + Bake Bread + Turn Wheat into Bread. + + The Lie + Bake a Cake using: Wheat, Sugar, Milk and Eggs. + + Getting an Upgrade + Construct a better pickaxe. + + Delicious Fish + Catch and cook Fish! + + On A Rail + Travel by Minecart to a point at least 500m in a single direction from where you started. + + Time to Strike! + Use Planks and Sticks to make a Sword. + + Monster Hunter + Attack and destroy a monster. + + Cow Tipper + Harvest some leather. + + When Pigs Fly + Use a Saddle to ride a Pig, and then have the Pig get hurt from fall damage while riding it. + + Leader of the Pack + Befriend five Wolves. + + MOAR Tools + Construct one type of each tool. + + Dispense With This + Construct a dispenser. + + Into The Nether + Construct a Nether Portal. + + Pork Chop + Cook and eat a Pork Chop. + + Passing the Time + Play for 100 days. + + Archer + Kill a Creeper with Arrows. + + Sniper Duel + Kill a Skeleton with an Arrow from more than 50 meters. + + DIAMONDS! + Acquire diamonds with your iron tools. + + Return to Sender + Destroy a Ghast with a Fireball. + + Into Fire + Relieve a Blaze of its rod. + + Local Brewery + Brew a potion. + + The End? + Enter an End Portal. + + The End. + Kill the Enderdragon. + + Enchanter + Construct an Enchantment Table. + + Overkill + Deal nine hearts of damage in a single hit. + + Librarian + Build some Bookshelves to improve your Enchantment Table. + + Adventuring Time + Discover all biomes. + + Repopulation + Breed two Cows with Wheat. + + Diamonds to you! + Throw diamonds to another player. + + The Haggler + Mine or purchase 30 Emeralds. + + Pot Planter + Craft and place a Flower pot. + + It's a Sign! + Craft and place a sign. + + Iron Belly + Stop starvation using rotten flesh. + + Have a Shearful Day + Use Shears to obtain Wool from a Sheep. + + Rainbow Collection + Gather all 16 colors of Wool. + + Stayin' Frosty + Swim in Lava while having the Fire Resistance effect. + + Chestful of Cobblestone + Mine 1,728 Cobblestone and place it in a Chest. + + Renewable Energy + Smelt Wood Trunks using Charcoal to make more Charcoal. + + Music to my Ears + Play a Music Disc in a Jukebox. + + Body Guard + Create an Iron Golem. + + Iron Man + Wear a full suit of Iron Armor. + + Zombie Doctor + Cure a Zombie Villager. + + Lion Tamer + Tame an ocelot. + + Hold {*CONTROLLER_VK_Y*} to view diff --git a/Minecraft.World/Achievement.cpp b/Minecraft.World/Achievement.cpp index e449f776..db8913b4 100644 --- a/Minecraft.World/Achievement.cpp +++ b/Minecraft.World/Achievement.cpp @@ -15,19 +15,28 @@ void Achievement::_init() 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 icon, Achievement *reqs) +Achievement::Achievement(int id, const wstring& name, int x, int y, shared_ptr 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() diff --git a/Minecraft.World/Achievement.h b/Minecraft.World/Achievement.h index 08ec5df9..04ede7c7 100644 --- a/Minecraft.World/Achievement.h +++ b/Minecraft.World/Achievement.h @@ -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 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 icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0); Achievement *setAwardLocallyOnly(); Achievement *setGolden(); diff --git a/Minecraft.World/Achievements.cpp b/Minecraft.World/Achievements.cpp index 1b00acc0..510fc7ca 100644 --- a/Minecraft.World/Achievements.cpp +++ b/Minecraft.World/Achievements.cpp @@ -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,45 @@ 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, IDS_ACHIEVE_DESC_DIAMONDS) )->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(); } diff --git a/Minecraft.World/Achievements.h b/Minecraft.World/Achievements.h index 177c0679..f2ff0e73 100644 --- a/Minecraft.World/Achievements.h +++ b/Minecraft.World/Achievements.h @@ -55,14 +55,14 @@ public: 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; @@ -84,7 +84,6 @@ public: static Achievement *ironMan; static Achievement *zombieDoctor; static Achievement *lionTamer; -#endif static void staticCtor(); diff --git a/Minecraft.World/CommonStats.cpp b/Minecraft.World/CommonStats.cpp index 5ad0e35b..a452b04c 100644 --- a/Minecraft.World/CommonStats.cpp +++ b/Minecraft.World/CommonStats.cpp @@ -161,17 +161,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 +180,7 @@ 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 +203,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; } diff --git a/Minecraft.World/FurnaceResultSlot.cpp b/Minecraft.World/FurnaceResultSlot.cpp index 48f2f8fb..84e0b747 100644 --- a/Minecraft.World/FurnaceResultSlot.cpp +++ b/Minecraft.World/FurnaceResultSlot.cpp @@ -88,6 +88,7 @@ void FurnaceResultSlot::checkTakeAchievements(shared_ptr 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; diff --git a/Minecraft.World/GenericStats.cpp b/Minecraft.World/GenericStats.cpp index d97c182a..7bc9c8ea 100644 --- a/Minecraft.World/GenericStats.cpp +++ b/Minecraft.World/GenericStats.cpp @@ -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 } @@ -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,15 +1101,15 @@ 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() { @@ -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 }