From a1e4726296fae8ab3e8875a402a9983cc55166d9 Mon Sep 17 00:00:00 2001 From: Tropical <42101043+tropicaaal@users.noreply.github.com> Date: Sat, 21 Mar 2026 17:30:42 -0500 Subject: [PATCH] TU19: merge Minecraft.World/Stats --- Minecraft.World/Stats/Achievement.cpp | 35 +++++++------- Minecraft.World/Stats/Achievement.h | 10 ++-- Minecraft.World/Stats/Achievements.cpp | 42 ++++++++-------- Minecraft.World/Stats/CommonStats.cpp | 4 +- Minecraft.World/Stats/DurangoStats.cpp | 66 ++++++++++++++------------ Minecraft.World/Stats/DurangoStats.h | 6 +-- Minecraft.World/Stats/Stat.cpp | 2 +- Minecraft.World/Stats/Stats.cpp | 34 ++++++------- 8 files changed, 101 insertions(+), 98 deletions(-) diff --git a/Minecraft.World/Stats/Achievement.cpp b/Minecraft.World/Stats/Achievement.cpp index ba8a9814e..d41c3e5b6 100644 --- a/Minecraft.World/Stats/Achievement.cpp +++ b/Minecraft.World/Stats/Achievement.cpp @@ -43,7 +43,7 @@ void Achievement::_init() { * @param prerequisite Achievement object that is required to unlock this one */ Achievement::Achievement(int id, const std::wstring& name, int x, int y, - Item* icon, Achievement* prerequisite) + Item* icon, Achievement* requires) : Stat(Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(std::wstring(L"achievement.").append(name))), desc(I18n::get( @@ -51,10 +51,10 @@ Achievement::Achievement(int id, const std::wstring& name, int x, int y, icon(new ItemInstance(icon)), x(x), y(y), - prerequisite(prerequisite) {} + requires(requires) {} Achievement::Achievement(int id, const std::wstring& name, int x, int y, - Tile* icon, Achievement* prerequisite) + Tile* icon, Achievement* requires) : Stat(Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(std::wstring(L"achievement.").append(name))), desc(I18n::get( @@ -62,11 +62,11 @@ Achievement::Achievement(int id, const std::wstring& name, int x, int y, icon(new ItemInstance(icon)), x(x), y(y), - prerequisite(prerequisite) {} + requires(requires) {} Achievement::Achievement(int id, const std::wstring& name, int x, int y, std::shared_ptr icon, - Achievement* prerequisite) + Achievement* requires) : Stat(Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(std::wstring(L"achievement.").append(name))), desc(I18n::get( @@ -74,19 +74,7 @@ Achievement::Achievement(int id, const std::wstring& name, int x, int y, icon(icon), x(x), y(y), - prerequisite(prerequisite) {} - - /** - * @brief Sets the decription formatter (DescFormatter) - * @param descFormatter Pointer to the DescFormatter formatting the - * description text. - * @return self - **/ - Achievement - * Achievement::setDescFormatter(DescFormatter * descFormatter) { - this->descFormatter = descFormatter; - return this; -} + requires(requires) {} /** * @brief Returns whether the Achivement is golden @@ -149,3 +137,14 @@ std::wstring Achievement::getDescription() { } return desc; } + +Achievement* Achievement::setDescFormatter(DescFormatter* descFormatter) { + this->descFormatter = descFormatter; + return this; +} + +bool Achievement::isGolden() { return isGoldenVar; } + +int Achievement::getAchievementID() { + return id - Achievements::ACHIEVEMENT_OFFSET; +} diff --git a/Minecraft.World/Stats/Achievement.h b/Minecraft.World/Stats/Achievement.h index a0708cde4..444be24d4 100644 --- a/Minecraft.World/Stats/Achievement.h +++ b/Minecraft.World/Stats/Achievement.h @@ -7,7 +7,8 @@ class DescFormatter; class Achievement : public Stat { public: const int x, y; - Achievement* prerequisite; + Achievement* + requires; private: const std::wstring desc; @@ -22,12 +23,11 @@ private: public: Achievement(int id, const std::wstring& name, int x, int y, Item* icon, - Achievement* prerequisite); + Achievement* requires); Achievement(int id, const std::wstring& name, int x, int y, Tile* icon, - Achievement* prerequisite); + Achievement* requires); Achievement(int id, const std::wstring& name, int x, int y, - std::shared_ptr icon, - Achievement* prerequisite); + std::shared_ptr icon, Achievement* requires); Achievement* setAwardLocallyOnly(); Achievement* setGolden(); diff --git a/Minecraft.World/Stats/Achievements.cpp b/Minecraft.World/Stats/Achievements.cpp index ecd2626f7..46cdf6467 100644 --- a/Minecraft.World/Stats/Achievements.cpp +++ b/Minecraft.World/Stats/Achievements.cpp @@ -165,21 +165,21 @@ void Achievements::staticCtor() { // "requires" are ignored on xbox. Achievements::leaderOfThePack = (new Achievement(eAward_LeaderOfThePack, L"leaderOfThePack", 0, 0, - Item::bone, (Achievement*)buildSword)) + Tile::treeTrunk, (Achievement*)buildSword)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::MOARTools = - (new Achievement(eAward_MOARTools, L"MOARTools", 0, 0, Item::shovel_diamond, + (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::dispenser, (Achievement*)buildSword)) + Tile::treeTrunk, (Achievement*)buildSword)) ->postConstruct(); Achievements::InToTheNether = (new Achievement(eAward_InToTheNether, L"InToTheNether", 0, 0, - Tile::portalTile, (Achievement*)buildSword)) + Tile::treeTrunk, (Achievement*)buildSword)) ->postConstruct(); // 4J : WESTY : Added other awards. @@ -196,7 +196,7 @@ void Achievements::staticCtor() { #ifdef _EXTENDED_ACHIEVEMENTS Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, - Item::porkChop_raw, (Achievement*)buildSword)) + Tile::treeTrunk, (Achievement*)buildSword)) ->setAwardLocallyOnly() ->postConstruct(); #else @@ -298,13 +298,13 @@ void Achievements::staticCtor() { ->postConstruct(); Achievements::repopulation = (new Achievement(eAward_repopulation, L"repopulation", 0, 0, - Item::wheat, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); // Achievements::porkChoop // // // // // // // Achievements::diamondsToYou = (new Achievement(eAward_diamondsToYou, L"diamondsToYou", 0, 0, - Item::diamond, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); // Achievements::passingTheTime = (new // Achievement(eAward_play100Days, L"passingTheTime", @@ -315,63 +315,63 @@ void Achievements::staticCtor() { // )->postConstruct(); Achievements::theHaggler = (new Achievement(eAward_theHaggler, L"theHaggler", 0, 0, - Item::emerald, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::potPlanter = (new Achievement(eAward_potPlanter, L"potPlanter", 0, 0, - Item::flowerPot, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::itsASign = - (new Achievement(eAward_itsASign, L"itsASign", 0, 0, Item::sign, + (new Achievement(eAward_itsASign, L"itsASign", 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::ironBelly = - (new Achievement(eAward_ironBelly, L"ironBelly", 0, 0, Item::rotten_flesh, + (new Achievement(eAward_ironBelly, L"ironBelly", 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::haveAShearfulDay = (new Achievement(eAward_haveAShearfulDay, L"haveAShearfulDay", 0, 0, - Item::shears, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::rainbowCollection = (new Achievement(eAward_rainbowCollection, L"rainbowCollection", 0, 0, - Tile::cloth, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::stayinFrosty = (new Achievement(eAward_stayinFrosty, L"stayingFrosty", 0, 0, - Tile::ice, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::chestfulOfCobblestone = (new Achievement(eAward_chestfulOfCobblestone, L"chestfulOfCobblestone", - 0, 0, Tile::rock, (Achievement*)NULL)) + 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->setAwardLocallyOnly() ->postConstruct(); Achievements::renewableEnergy = (new Achievement(eAward_renewableEnergy, L"renewableEnergy", 0, 0, - Item::coal, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::musicToMyEars = (new Achievement(eAward_musicToMyEars, L"musicToMyEars", 0, 0, - Tile::musicBlock, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::bodyGuard = - (new Achievement(eAward_bodyGuard, L"bodyGuard", 0, 0, Tile::pumpkin, + (new Achievement(eAward_bodyGuard, L"bodyGuard", 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::ironMan = - (new Achievement(eAward_ironMan, L"ironMan", 0, 0, Item::chestplate_iron, + (new Achievement(eAward_ironMan, L"ironMan", 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::zombieDoctor = (new Achievement(eAward_zombieDoctor, L"zombieDoctor", 0, 0, - Item::apple_gold, (Achievement*)NULL)) + Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); Achievements::lionTamer = - (new Achievement(eAward_lionTamer, L"lionTamer", 0, 0, Item::fish_raw, + (new Achievement(eAward_lionTamer, L"lionTamer", 0, 0, Tile::bookshelf, (Achievement*)NULL)) ->postConstruct(); #endif diff --git a/Minecraft.World/Stats/CommonStats.cpp b/Minecraft.World/Stats/CommonStats.cpp index 22f9e7af6..1b047e801 100644 --- a/Minecraft.World/Stats/CommonStats.cpp +++ b/Minecraft.World/Stats/CommonStats.cpp @@ -56,7 +56,7 @@ Stat* CommonStats::get_breedEntity(eINSTANCEOF mobType) { } Stat* CommonStats::get_tamedEntity(eINSTANCEOF mobType) { - if (mobType == eTYPE_OZELOT) + if (mobType == eTYPE_OCELOT) return GenericStats::lionTamer(); else if (mobType == eTYPE_WOLF) return Stats::befriendsWolf; @@ -99,7 +99,7 @@ Stat* CommonStats::get_itemsCollected(int itemId, int itemAux) { // stor itemsBought(emerald) so I don't have to make yet another massive // StatArray for Items Bought. #if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE) - if (itemId == Tile::cloth_Id) return Stats::rainbowCollection[itemAux]; + if (itemId == Tile::wool_Id) return Stats::rainbowCollection[itemAux]; #endif if (itemId != Item::emerald_Id) diff --git a/Minecraft.World/Stats/DurangoStats.cpp b/Minecraft.World/Stats/DurangoStats.cpp index c24e1eb4a..0cf1e0f22 100644 --- a/Minecraft.World/Stats/DurangoStats.cpp +++ b/Minecraft.World/Stats/DurangoStats.cpp @@ -29,16 +29,16 @@ // Ds Item Event // /////////////////// -string DsItemEvent::nameMethods[] = {"NONE", - "itemPickedUp", - "itemCrafted", - "itemTakenFromChest", - "itemTakenFromEnderchest", - "itemBought", - "itemSmithed", - "blockMined", - "blockPlaced", - "MAX"}; +std::string DsItemEvent::nameMethods[] = {"NONE", + "itemPickedUp", + "itemCrafted", + "itemTakenFromChest", + "itemTakenFromEnderchest", + "itemBought", + "itemSmithed", + "blockMined", + "blockPlaced", + "MAX"}; DsItemEvent::DsItemEvent(int id, const std::wstring& name) : Stat(id, name) {} @@ -48,8 +48,8 @@ bool DsItemEvent::onLeaderboard(ELeaderboardId leaderboard, case eAcquisitionMethod_Pickedup: switch (param->itemId) { case Item::egg_Id: - case Tile::mushroom1_Id: - case Tile::mushroom2_Id: + case Tile::mushroom_brown_Id: + case Tile::mushroom_red_Id: return leaderboard == eLeaderboardId_FARMING; } break; @@ -59,13 +59,13 @@ bool DsItemEvent::onLeaderboard(ELeaderboardId leaderboard, case Tile::dirt_Id: case Tile::stoneBrick_Id: case Tile::sand_Id: - case Tile::rock_Id: + case Tile::stone_Id: case Tile::gravel_Id: case Tile::clay_Id: case Tile::obsidian_Id: return leaderboard == eLeaderboardId_MINING; - case Tile::crops_Id: + case Tile::wheat_Id: case Tile::pumpkin_Id: case Tile::reeds_Id: return leaderboard == eLeaderboardId_FARMING; @@ -82,9 +82,9 @@ int DsItemEvent::mergeIds(int itemId) { default: return itemId; - case Tile::mushroom1_Id: - case Tile::mushroom2_Id: - return Tile::mushroom1_Id; + case Tile::mushroom_brown_Id: + case Tile::mushroom_red_Id: + return Tile::mushroom_brown_Id; case Tile::dirt_Id: case Tile::grass_Id: @@ -146,7 +146,7 @@ void DsItemEvent::handleParamBlob(std::shared_ptr player, } // Debug printout. - string method = nameMethods[(int)param->methodId]; + std::string method = nameMethods[(int)param->methodId]; app.DebugPrintf("<%ls>\t%s(%i:%i:%i)\n", DurangoStats::getUserId(player), method.c_str(), param->itemId, param->itemAux, param->itemCount); @@ -247,11 +247,13 @@ byteArray DsMobKilled::createParamBlob(std::shared_ptr player, int mob_networking_id; eINSTANCEOF mobEType = mob->GetType(); if ((mobEType == eTYPE_SPIDER) && (mob->rider.lock() != NULL) && - (mob->rider.lock()->GetType() == eTYPE_SKELETON)) { + (mob->rider.lock()->GetType() == eTYPE_SKELETON) && + mob->rider.lock()->isAlive()) { mob_networking_id = SPIDER_JOCKEY_ID; // Spider jockey only a concept for leaderboards. } else if ((mobEType == eTYPE_SKELETON) && (mob->riding != NULL) && - (mob->riding->GetType() == eTYPE_SPIDER)) { + (mob->riding->GetType() == eTYPE_SPIDER) && + mob->riding->isAlive()) { mob_networking_id = SPIDER_JOCKEY_ID; // Spider jockey only a concept for leaderboards. } else { @@ -290,12 +292,12 @@ byteArray DsMobKilled::createParamBlob(std::shared_ptr player, // Ds Mob Interact // ///////////////////// -string DsMobInteract::nameInteract[] = {"unknownMobInteraction", - "mobBred", - "mobTamed", - "mobCured", - "mobCrafted", - "mobSheared"}; +std::string DsMobInteract::nameInteract[] = {"unknownMobInteraction", + "mobBred", + "mobTamed", + "mobCured", + "mobCrafted", + "mobSheared"}; DsMobInteract::DsMobInteract(int id, const std::wstring& name) : Stat(id, name) {} @@ -330,8 +332,8 @@ byteArray DsMobInteract::createParamBlob(eInteract interactionId, // Ds Travel // /////////////// -string DsTravel::nameMethods[eMethod_MAX] = {"Walk", "Swim", "Fall", "Climb", - "Cart", "Boat", "Pig", "Time"}; +std::string DsTravel::nameMethods[eMethod_MAX] = { + "Walk", "Swim", "Fall", "Climb", "Cart", "Boat", "Pig", "Time"}; unsigned int DsTravel::CACHE_SIZES[eMethod_MAX] = { 40, // WALK - Meters? @@ -682,7 +684,9 @@ Stat* DurangoStats::get_boatOneM() { return travel; } Stat* DurangoStats::get_pigOneM() { return travel; } -Stat* DurangoStats::get_cowsMilked() { return get_itemsCrafted(Item::milk_Id); } +Stat* DurangoStats::get_cowsMilked() { + return get_itemsCrafted(Item::bucket_milk_Id); +} Stat* DurangoStats::get_killMob() { return mobKilled; } @@ -725,7 +729,7 @@ Stat* DurangoStats::get_itemsCrafted(int itemId) { // 4J-JEV: These items can be crafted trivially to and from their // block equivalents, // 'Acquire Hardware' also relies on 'Count_Crafted(IronIngot) == - //Count_Forged(IronIngot)" on the Stats server. + // Count_Forged(IronIngot)" on the Stats server. case Item::ironIngot_Id: case Item::goldIngot_Id: case Item::diamond_Id: @@ -806,7 +810,7 @@ byteArray DurangoStats::getParam_pigOneM(int distance) { byteArray DurangoStats::getParam_cowsMilked() { return DsItemEvent::createParamBlob(DsItemEvent::eAcquisitionMethod_Crafted, - Item::milk_Id, 0, 1); + Item::bucket_milk_Id, 0, 1); } byteArray DurangoStats::getParam_blocksPlaced(int blockId, int data, diff --git a/Minecraft.World/Stats/DurangoStats.h b/Minecraft.World/Stats/DurangoStats.h index 8b3fe861b..3df1884e6 100644 --- a/Minecraft.World/Stats/DurangoStats.h +++ b/Minecraft.World/Stats/DurangoStats.h @@ -13,7 +13,7 @@ enum ELeaderboardId { class DsItemEvent : public Stat { public: - static string nameMethods[]; + static std::string nameMethods[]; enum eAcquisitionMethod { eAcquisitionMethod_None = 0, @@ -69,7 +69,7 @@ public: class DsMobInteract : public Stat { protected: - static string nameInteract[]; + static std::string nameInteract[]; public: enum eInteract { @@ -93,7 +93,7 @@ public: class DsTravel : public Stat { public: - static string nameMethods[]; + static std::string nameMethods[]; enum eMethod { eMethod_walk, diff --git a/Minecraft.World/Stats/Stat.cpp b/Minecraft.World/Stats/Stat.cpp index 5471c4d55..6841f5ded 100644 --- a/Minecraft.World/Stats/Stat.cpp +++ b/Minecraft.World/Stats/Stat.cpp @@ -41,7 +41,7 @@ Stat* Stat::postConstruct() { std::pair id1(id, this); #ifdef __PS3__ Stats::statsById->emplace(id1); // assert(0); // MGH - TODO - FIX - find - //out where this move function comes from + // out where this move function comes from #else Stats::statsById->emplace(std::move(id1)); #endif // __PS3__ diff --git a/Minecraft.World/Stats/Stats.cpp b/Minecraft.World/Stats/Stats.cpp index 962fae493..81ea8846e 100644 --- a/Minecraft.World/Stats/Stats.cpp +++ b/Minecraft.World/Stats/Stats.cpp @@ -172,9 +172,9 @@ void Stats::buildBlockStats() { newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 1, L"mineBlock.stone", - Tile::stoneBrick->id); + Tile::cobblestone->id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::stoneBrick->id] = newStat; + blocksMined[Tile::cobblestone->id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 2, L"mineBlock.sand", @@ -184,9 +184,9 @@ void Stats::buildBlockStats() { newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 3, L"mineBlock.cobblestone", - Tile::rock->id); + Tile::stone->id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::rock->id] = newStat; + blocksMined[Tile::stone->id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 4, L"mineBlock.gravel", @@ -245,21 +245,21 @@ void Stats::buildBlockStats() { newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 13, L"mineBlock.netherrack", - Tile::hellRock->id); + Tile::netherRack->id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::hellRock->id] = newStat; + blocksMined[Tile::netherRack->id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 14, L"mineBlock.soulSand", - Tile::hellSand->id); + Tile::soulsand->id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::hellSand->id] = newStat; + blocksMined[Tile::soulsand->id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 15, L"mineBlock.glowstone", - Tile::lightGem->id); + Tile::glowstone->id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::lightGem->id] = newStat; + blocksMined[Tile::glowstone->id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 16, L"mineBlock.wood", @@ -311,15 +311,15 @@ void Stats::buildCraftableStats() { // leaderboards by dropping and picking up these items They are now changed // to mining the block which involves a tiny bit more effort newStat = new ItemStat(BLOCKS_MINED_OFFSET + 18, L"mineBlock.wheat", - Tile::crops_Id); + Tile::wheat_Id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::crops_Id] = newStat; + blocksMined[Tile::wheat_Id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 19, L"mineBlock.mushroom1", - Tile::mushroom1_Id); + Tile::mushroom_brown_Id); blocksMinedStats->push_back(newStat); - blocksMined[Tile::mushroom1_Id] = newStat; + blocksMined[Tile::mushroom_brown_Id] = newStat; newStat->postConstruct(); newStat = new ItemStat(BLOCKS_MINED_OFFSET + 17, L"mineBlock.sugar", @@ -498,9 +498,9 @@ void Stats::buildCraftableStats() { newStat->postConstruct(); newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 23, L"craftItem.glowstone", - Tile::lightGem_Id); + Tile::glowstone_Id); itemsCraftedStats->push_back(newStat); - itemsCrafted[Tile::lightGem_Id] = newStat; + itemsCrafted[Tile::glowstone_Id] = newStat; newStat->postConstruct(); newStat = @@ -608,7 +608,7 @@ void Stats::buildAdditionalStats() { // 4J-JEV: WHY ON EARTH DO THESE ARRAYS HAVE TO BE SO PAINFULLY // LARGE WHEN THEY ARE GOING TO BE MOSTLY EMPTY!!! // Either way, I'm making this one smaller because - //we don't need those record items (and we only need 2). + // we don't need those record items (and we only need 2). blocksPlaced = StatArray(1000); itemStat = new ItemStat(offset++, L"blockPlaced.flowerPot",