From 557dd7430b6b30fb30489db99a082011bed3d3d9 Mon Sep 17 00:00:00 2001 From: MatthewBeshay <92357869+MatthewBeshay@users.noreply.github.com> Date: Thu, 9 Apr 2026 22:20:30 +1000 Subject: [PATCH] refactor: extract ITutorial interface and move TutorialEnum to minecraft --- targets/app/common/App_structs.h | 2 +- targets/app/common/Game.h | 2 +- .../Constraints/ChangeStateConstraint.cpp | 2 +- .../Constraints/ChangeStateConstraint.h | 2 +- targets/app/common/Tutorial/FullTutorial.h | 2 +- .../app/common/Tutorial/Hints/AreaHint.cpp | 2 +- targets/app/common/Tutorial/Hints/AreaHint.h | 2 +- .../common/Tutorial/Hints/DiggerItemHint.h | 2 +- .../Tutorial/Hints/LookAtEntityHint.cpp | 2 +- .../common/Tutorial/Hints/LookAtEntityHint.h | 2 +- .../common/Tutorial/Hints/LookAtTileHint.cpp | 2 +- .../common/Tutorial/Hints/LookAtTileHint.h | 2 +- .../common/Tutorial/Hints/TakeItemHint.cpp | 2 +- .../app/common/Tutorial/Hints/TakeItemHint.h | 2 +- .../common/Tutorial/Hints/TutorialHint.cpp | 2 +- .../app/common/Tutorial/Hints/TutorialHint.h | 2 +- .../app/common/Tutorial/Tasks/AreaTask.cpp | 2 +- targets/app/common/Tutorial/Tasks/AreaTask.h | 2 +- .../app/common/Tutorial/Tasks/ChoiceTask.cpp | 2 +- .../app/common/Tutorial/Tasks/ChoiceTask.h | 2 +- .../Tutorial/Tasks/FullTutorialActiveTask.cpp | 2 +- .../Tutorial/Tasks/FullTutorialActiveTask.h | 2 +- .../common/Tutorial/Tasks/HorseChoiceTask.cpp | 2 +- .../common/Tutorial/Tasks/HorseChoiceTask.h | 2 +- .../Tutorial/Tasks/ProcedureCompoundTask.cpp | 2 +- .../Tutorial/Tasks/ProcedureCompoundTask.h | 2 +- .../app/common/Tutorial/Tasks/TutorialTask.h | 2 +- targets/app/common/Tutorial/Tutorial.h | 33 +++++++------ targets/app/common/Tutorial/TutorialMode.h | 23 +++++----- .../IUIScene_AbstractContainerMenu.cpp | 8 ++-- .../IUIScene_AbstractContainerMenu.h | 2 +- .../All Platforms/IUIScene_CraftingMenu.cpp | 13 +++--- .../UI/All Platforms/IUIScene_CraftingMenu.h | 2 +- .../UI/All Platforms/IUIScene_TradingMenu.cpp | 4 +- .../UI/All Platforms/IUIScene_TradingMenu.h | 2 +- .../Components/UIComponent_TutorialPopup.cpp | 2 +- .../Containers/UIScene_AnvilMenu.cpp | 2 +- .../Containers/UIScene_BeaconMenu.cpp | 2 +- .../Containers/UIScene_BrewingStandMenu.cpp | 2 +- .../Containers/UIScene_ContainerMenu.cpp | 2 +- .../Containers/UIScene_CreativeMenu.cpp | 2 +- .../Containers/UIScene_DispenserMenu.cpp | 2 +- .../Containers/UIScene_EnchantingMenu.cpp | 2 +- .../Containers/UIScene_FireworksMenu.cpp | 2 +- .../Containers/UIScene_FurnaceMenu.cpp | 2 +- .../Containers/UIScene_HopperMenu.cpp | 2 +- .../Containers/UIScene_HorseInventoryMenu.cpp | 2 +- .../Containers/UIScene_InventoryMenu.cpp | 2 +- .../Containers/UIScene_TradingMenu.cpp | 2 +- .../UIScene_CraftingMenu.cpp | 2 +- .../client/multiplayer/ClientConnection.cpp | 11 +++-- .../client/multiplayer/MultiPlayerGameMode.h | 4 +- .../minecraft/client/player/LocalPlayer.cpp | 20 ++++---- targets/minecraft/server/PlayerList.cpp | 2 +- targets/minecraft/server/level/GameMode.h | 4 +- targets/minecraft/world/tutorial/ITutorial.h | 46 +++++++++++++++++++ .../world/tutorial}/TutorialEnum.h | 0 57 files changed, 155 insertions(+), 103 deletions(-) create mode 100644 targets/minecraft/world/tutorial/ITutorial.h rename targets/{app/common/Tutorial => minecraft/world/tutorial}/TutorialEnum.h (100%) diff --git a/targets/app/common/App_structs.h b/targets/app/common/App_structs.h index 92eebb5f2..ace259fcb 100644 --- a/targets/app/common/App_structs.h +++ b/targets/app/common/App_structs.h @@ -2,7 +2,7 @@ #include -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/UI/All Platforms/UIEnums.h" #include "minecraft/GameEnums.h" #include "minecraft/GameTypes.h" diff --git a/targets/app/common/Game.h b/targets/app/common/Game.h index 557a6d7a8..928f9d496 100644 --- a/targets/app/common/Game.h +++ b/targets/app/common/Game.h @@ -24,7 +24,7 @@ #include "app/common/SaveManager.h" #include "app/common/SkinManager.h" #include "app/common/TerrainFeatureManager.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/UI/All Platforms/ArchiveFile.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "minecraft/client/model/SkinBox.h" diff --git a/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.cpp b/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.cpp index 3ed3abaf9..b7e8aa211 100644 --- a/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.cpp +++ b/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.cpp @@ -4,7 +4,7 @@ #include "app/common/Tutorial/Constraints/TutorialConstraint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/multiplayer/ClientConnection.h" #include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h" diff --git a/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.h b/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.h index 1bcfdcf55..c6df3a7a6 100644 --- a/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.h +++ b/targets/app/common/Tutorial/Constraints/ChangeStateConstraint.h @@ -3,7 +3,7 @@ #include #include "TutorialConstraint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/world/phys/AABB.h" class AABB; diff --git a/targets/app/common/Tutorial/FullTutorial.h b/targets/app/common/Tutorial/FullTutorial.h index b8cad4486..17631176e 100644 --- a/targets/app/common/Tutorial/FullTutorial.h +++ b/targets/app/common/Tutorial/FullTutorial.h @@ -1,6 +1,6 @@ #pragma once #include "Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #define FULL_TUTORIAL_PROGRESS_2_X_2_Crafting 1 #define FULL_TUTORIAL_PROGRESS_3_X_3_Crafting 2 diff --git a/targets/app/common/Tutorial/Hints/AreaHint.cpp b/targets/app/common/Tutorial/Hints/AreaHint.cpp index 8f4501cdc..90531693a 100644 --- a/targets/app/common/Tutorial/Hints/AreaHint.cpp +++ b/targets/app/common/Tutorial/Hints/AreaHint.cpp @@ -4,7 +4,7 @@ #include "app/common/Tutorial/Hints/TutorialHint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h" #include "minecraft/world/phys/AABB.h" diff --git a/targets/app/common/Tutorial/Hints/AreaHint.h b/targets/app/common/Tutorial/Hints/AreaHint.h index 919bc3fb8..c94c6039f 100644 --- a/targets/app/common/Tutorial/Hints/AreaHint.h +++ b/targets/app/common/Tutorial/Hints/AreaHint.h @@ -1,7 +1,7 @@ #pragma once #include "TutorialHint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/world/phys/AABB.h" class AABB; diff --git a/targets/app/common/Tutorial/Hints/DiggerItemHint.h b/targets/app/common/Tutorial/Hints/DiggerItemHint.h index 8f86cd6f9..58a239da4 100644 --- a/targets/app/common/Tutorial/Hints/DiggerItemHint.h +++ b/targets/app/common/Tutorial/Hints/DiggerItemHint.h @@ -1,7 +1,7 @@ #pragma once #include "TutorialHint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class DiggerItem; class Level; diff --git a/targets/app/common/Tutorial/Hints/LookAtEntityHint.cpp b/targets/app/common/Tutorial/Hints/LookAtEntityHint.cpp index 486259a5a..3e60b2806 100644 --- a/targets/app/common/Tutorial/Hints/LookAtEntityHint.cpp +++ b/targets/app/common/Tutorial/Hints/LookAtEntityHint.cpp @@ -2,7 +2,7 @@ #include "app/common/Tutorial/Hints/TutorialHint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" LookAtEntityHint::LookAtEntityHint(eTutorial_Hint id, Tutorial* tutorial, int descriptionId, int titleId, diff --git a/targets/app/common/Tutorial/Hints/LookAtEntityHint.h b/targets/app/common/Tutorial/Hints/LookAtEntityHint.h index a0d2936a2..863a61720 100644 --- a/targets/app/common/Tutorial/Hints/LookAtEntityHint.h +++ b/targets/app/common/Tutorial/Hints/LookAtEntityHint.h @@ -2,7 +2,7 @@ // using namespace std; #include "TutorialHint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "java/Class.h" class ItemInstance; diff --git a/targets/app/common/Tutorial/Hints/LookAtTileHint.cpp b/targets/app/common/Tutorial/Hints/LookAtTileHint.cpp index 2c07bbab6..96fd5abc9 100644 --- a/targets/app/common/Tutorial/Hints/LookAtTileHint.cpp +++ b/targets/app/common/Tutorial/Hints/LookAtTileHint.cpp @@ -4,7 +4,7 @@ #include "app/common/Tutorial/Hints/TutorialHint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/world/item/Item.h" LookAtTileHint::LookAtTileHint(eTutorial_Hint id, Tutorial* tutorial, diff --git a/targets/app/common/Tutorial/Hints/LookAtTileHint.h b/targets/app/common/Tutorial/Hints/LookAtTileHint.h index cb9e826be..548ba652e 100644 --- a/targets/app/common/Tutorial/Hints/LookAtTileHint.h +++ b/targets/app/common/Tutorial/Hints/LookAtTileHint.h @@ -2,7 +2,7 @@ // using namespace std; #include "TutorialHint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class ItemInstance; class Tutorial; diff --git a/targets/app/common/Tutorial/Hints/TakeItemHint.cpp b/targets/app/common/Tutorial/Hints/TakeItemHint.cpp index 51d3356e1..65641d141 100644 --- a/targets/app/common/Tutorial/Hints/TakeItemHint.cpp +++ b/targets/app/common/Tutorial/Hints/TakeItemHint.cpp @@ -4,7 +4,7 @@ #include "app/common/Tutorial/Hints/TutorialHint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/world/item/ItemInstance.h" TakeItemHint::TakeItemHint(eTutorial_Hint id, Tutorial* tutorial, int items[], diff --git a/targets/app/common/Tutorial/Hints/TakeItemHint.h b/targets/app/common/Tutorial/Hints/TakeItemHint.h index 81225bac8..d5e06f1ed 100644 --- a/targets/app/common/Tutorial/Hints/TakeItemHint.h +++ b/targets/app/common/Tutorial/Hints/TakeItemHint.h @@ -2,7 +2,7 @@ // using namespace std; #include "TutorialHint.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class ItemInstance; class Tutorial; diff --git a/targets/app/common/Tutorial/Hints/TutorialHint.cpp b/targets/app/common/Tutorial/Hints/TutorialHint.cpp index 1122ceb00..eb4b5435e 100644 --- a/targets/app/common/Tutorial/Hints/TutorialHint.cpp +++ b/targets/app/common/Tutorial/Hints/TutorialHint.cpp @@ -1,7 +1,7 @@ #include "TutorialHint.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h" #include "minecraft/world/level/material/Material.h" diff --git a/targets/app/common/Tutorial/Hints/TutorialHint.h b/targets/app/common/Tutorial/Hints/TutorialHint.h index 0ef31b135..3efca9d42 100644 --- a/targets/app/common/Tutorial/Hints/TutorialHint.h +++ b/targets/app/common/Tutorial/Hints/TutorialHint.h @@ -3,7 +3,7 @@ #include -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "java/Class.h" class Entity; diff --git a/targets/app/common/Tutorial/Tasks/AreaTask.cpp b/targets/app/common/Tutorial/Tasks/AreaTask.cpp index d3b5c7ebb..8cee93830 100644 --- a/targets/app/common/Tutorial/Tasks/AreaTask.cpp +++ b/targets/app/common/Tutorial/Tasks/AreaTask.cpp @@ -5,7 +5,7 @@ #include "app/common/Tutorial/Constraints/TutorialConstraint.h" #include "app/common/Tutorial/Tasks/TutorialTask.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" AreaTask::AreaTask(eTutorial_State state, Tutorial* tutorial, std::vector* inConstraints, diff --git a/targets/app/common/Tutorial/Tasks/AreaTask.h b/targets/app/common/Tutorial/Tasks/AreaTask.h index 6d69b0cc6..cbf1d6b0a 100644 --- a/targets/app/common/Tutorial/Tasks/AreaTask.h +++ b/targets/app/common/Tutorial/Tasks/AreaTask.h @@ -5,7 +5,7 @@ #include #include "TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Tutorial; class TutorialConstraint; diff --git a/targets/app/common/Tutorial/Tasks/ChoiceTask.cpp b/targets/app/common/Tutorial/Tasks/ChoiceTask.cpp index 6d0ceba55..036b1be28 100644 --- a/targets/app/common/Tutorial/Tasks/ChoiceTask.cpp +++ b/targets/app/common/Tutorial/Tasks/ChoiceTask.cpp @@ -6,7 +6,7 @@ #include "app/common/Tutorial/Constraints/InputConstraint.h" #include "app/common/Tutorial/Tasks/TutorialTask.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/linux/Linux_UIController.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h" diff --git a/targets/app/common/Tutorial/Tasks/ChoiceTask.h b/targets/app/common/Tutorial/Tasks/ChoiceTask.h index 8a9fa5dbe..7d5593768 100644 --- a/targets/app/common/Tutorial/Tasks/ChoiceTask.h +++ b/targets/app/common/Tutorial/Tasks/ChoiceTask.h @@ -2,7 +2,7 @@ // using namespace std; #include "TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Tutorial; diff --git a/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.cpp b/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.cpp index eba2e6900..01ef7dcab 100644 --- a/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.cpp +++ b/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.cpp @@ -2,7 +2,7 @@ #include "app/common/Tutorial/Tasks/TutorialTask.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" FullTutorialActiveTask::FullTutorialActiveTask( Tutorial* tutorial, diff --git a/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.h b/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.h index b5b631caa..a269825fa 100644 --- a/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.h +++ b/targets/app/common/Tutorial/Tasks/FullTutorialActiveTask.h @@ -2,7 +2,7 @@ // using namespace std; #include "TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Tutorial; diff --git a/targets/app/common/Tutorial/Tasks/HorseChoiceTask.cpp b/targets/app/common/Tutorial/Tasks/HorseChoiceTask.cpp index a2c7738ff..775a35f23 100644 --- a/targets/app/common/Tutorial/Tasks/HorseChoiceTask.cpp +++ b/targets/app/common/Tutorial/Tasks/HorseChoiceTask.cpp @@ -3,7 +3,7 @@ #include #include "app/common/Tutorial/Tasks/ChoiceTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "java/Class.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/animal/EntityHorse.h" diff --git a/targets/app/common/Tutorial/Tasks/HorseChoiceTask.h b/targets/app/common/Tutorial/Tasks/HorseChoiceTask.h index 67fd7c95a..1ae0e4607 100644 --- a/targets/app/common/Tutorial/Tasks/HorseChoiceTask.h +++ b/targets/app/common/Tutorial/Tasks/HorseChoiceTask.h @@ -1,7 +1,7 @@ #pragma once #include "ChoiceTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Tutorial; diff --git a/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.cpp b/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.cpp index 90a55014c..1220bf736 100644 --- a/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.cpp +++ b/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.cpp @@ -4,7 +4,7 @@ #include #include "app/common/Tutorial/Tasks/TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" ProcedureCompoundTask::~ProcedureCompoundTask() { for (auto it = m_taskSequence.begin(); it < m_taskSequence.end(); ++it) { diff --git a/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.h b/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.h index c48dc7e3e..c56fe2c15 100644 --- a/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.h +++ b/targets/app/common/Tutorial/Tasks/ProcedureCompoundTask.h @@ -3,7 +3,7 @@ #include #include "TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Tutorial; diff --git a/targets/app/common/Tutorial/Tasks/TutorialTask.h b/targets/app/common/Tutorial/Tasks/TutorialTask.h index 593edf3a6..61080d3df 100644 --- a/targets/app/common/Tutorial/Tasks/TutorialTask.h +++ b/targets/app/common/Tutorial/Tasks/TutorialTask.h @@ -4,7 +4,7 @@ #include // using namespace std; -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" class Level; class Tutorial; diff --git a/targets/app/common/Tutorial/Tutorial.h b/targets/app/common/Tutorial/Tutorial.h index c272aa5aa..01fc95adb 100644 --- a/targets/app/common/Tutorial/Tutorial.h +++ b/targets/app/common/Tutorial/Tutorial.h @@ -9,12 +9,12 @@ #include #include -#include "TutorialEnum.h" #include "TutorialMessage.h" #include "app/common/Tutorial/Constraints/TutorialConstraint.h" #include "app/common/Tutorial/Hints/TutorialHint.h" #include "app/common/Tutorial/Tasks/TutorialTask.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/ITutorial.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "util/Timer.h" class Entity; @@ -39,7 +39,7 @@ class Level; class CXuiScene; class Player; -class Tutorial { +class Tutorial : public ITutorial { public: class PopupMessageDetails { public: @@ -144,7 +144,7 @@ public: int getPad() { return m_iPad; } - virtual bool isStateCompleted(eTutorial_State state); + bool isStateCompleted(eTutorial_State state) override; virtual void setStateCompleted(eTutorial_State state); bool isHintCompleted(eTutorial_Hint hint); void setHintCompleted(eTutorial_Hint hint); @@ -154,15 +154,18 @@ public: void setCompleted(int completableId); bool getCompleted(int completableId); - void changeTutorialState(eTutorial_State newState, - UIScene* scene = nullptr); + void changeTutorialState(eTutorial_State newState, UIScene* scene); + void changeTutorialState(eTutorial_State newState) override { + changeTutorialState(newState, nullptr); + } bool isSelectedItemState(); bool setMessage(PopupMessageDetails* message); bool setMessage(TutorialHint* hint, PopupMessageDetails* message); - bool setMessage(const std::string& message, int icon, int auxValue); + bool setMessage(const std::string& message, int icon, + int auxValue) override; - void showTutorialPopup(bool show); + void showTutorialPopup(bool show) override; void useItemOn(Level* level, std::shared_ptr item, int x, int y, int z, bool bTestUseOnly = false); @@ -176,18 +179,18 @@ public: void handleUIInput(int iAction); void createItemSelected(std::shared_ptr item, bool canMake); - void onCrafted(std::shared_ptr item); + void onCrafted(std::shared_ptr item) override; void onTake(std::shared_ptr item, unsigned int invItemCountAnyAux, - unsigned int invItemCountThisAux); - void onSelectedItemChanged(std::shared_ptr item); - void onLookAt(int id, int iData = 0); - void onLookAtEntity(std::shared_ptr entity); - void onRideEntity(std::shared_ptr entity); + unsigned int invItemCountThisAux) override; + void onSelectedItemChanged(std::shared_ptr item) override; + void onLookAt(int id, int iData = 0) override; + void onLookAtEntity(std::shared_ptr entity) override; + void onRideEntity(std::shared_ptr entity) override; void onEffectChanged(MobEffect* effect, bool bRemoved = false); bool canMoveToPosition(double xo, double yo, double zo, double xt, - double yt, double zt); + double yt, double zt) override; bool isInputAllowed(int mapping); void AddGlobalConstraint(TutorialConstraint* c); diff --git a/targets/app/common/Tutorial/TutorialMode.h b/targets/app/common/Tutorial/TutorialMode.h index a16c8b217..4d3639d3c 100644 --- a/targets/app/common/Tutorial/TutorialMode.h +++ b/targets/app/common/Tutorial/TutorialMode.h @@ -20,18 +20,17 @@ public: TutorialMode(int iPad, Minecraft* minecraft, ClientConnection* connection); virtual ~TutorialMode(); - virtual void startDestroyBlock(int x, int y, int z, int face); - virtual bool destroyBlock(int x, int y, int z, int face); - virtual void tick(); - virtual bool useItemOn(std::shared_ptr player, Level* level, - std::shared_ptr item, int x, int y, - int z, int face, Vec3* hit, - bool bTestUseOnly = false, - bool* pbUsedItem = nullptr); - virtual void attack(std::shared_ptr player, - std::shared_ptr entity); + void startDestroyBlock(int x, int y, int z, int face) override; + bool destroyBlock(int x, int y, int z, int face) override; + void tick() override; + bool useItemOn(std::shared_ptr player, Level* level, + std::shared_ptr item, int x, int y, int z, + int face, Vec3* hit, bool bTestUseOnly = false, + bool* pbUsedItem = nullptr) override; + void attack(std::shared_ptr player, + std::shared_ptr entity) override; - virtual bool isInputAllowed(int mapping); + bool isInputAllowed(int mapping) override; - Tutorial* getTutorial() { return tutorial; } + Tutorial* getTutorial() override { return tutorial; } }; \ No newline at end of file diff --git a/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.cpp b/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.cpp index fc5da509f..d745984a9 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.cpp +++ b/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.cpp @@ -234,8 +234,8 @@ void IUIScene_AbstractContainerMenu::UpdateTooltips() { void IUIScene_AbstractContainerMenu::onMouseTick() { Minecraft* pMinecraft = Minecraft::GetInstance(); if (pMinecraft->localgameModes[getPad()] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[getPad()]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[getPad()]->getTutorial()); if (tutorial != nullptr) { if (ui.IsTutorialVisible(getPad()) && !tutorial->isInputAllowed(ACTION_MENU_UP)) { @@ -1096,8 +1096,8 @@ bool IUIScene_AbstractContainerMenu::handleKeyDown(int iPad, int iAction, Minecraft* pMinecraft = Minecraft::GetInstance(); if (pMinecraft->localgameModes[getPad()] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[getPad()]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[getPad()]->getTutorial()); if (tutorial != nullptr) { tutorial->handleUIInput(iAction); if (ui.IsTutorialVisible(getPad()) && diff --git a/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.h b/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.h index d558bf5e5..f7742227f 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.h +++ b/targets/app/common/UI/All Platforms/IUIScene_AbstractContainerMenu.h @@ -4,7 +4,7 @@ #include #include "UIStructs.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/UI/All Platforms/UIEnums.h" class HtmlString; diff --git a/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.cpp b/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.cpp index 0539b5fb7..5a7a25296 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.cpp +++ b/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.cpp @@ -153,8 +153,8 @@ bool IUIScene_CraftingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat) { Minecraft* pMinecraft = Minecraft::GetInstance(); if (pMinecraft->localgameModes[getPad()] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[getPad()]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[getPad()]->getTutorial()); if (tutorial != nullptr) { tutorial->handleUIInput(iAction); if (ui.IsTutorialVisible(getPad()) && @@ -211,8 +211,9 @@ bool IUIScene_CraftingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat) { // iIcon=pTempItemInst->getItem()->getIcon(pTempItemInst->getAuxValue()); if (pMinecraft->localgameModes[iPad] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[iPad]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[iPad] + ->getTutorial()); if (tutorial != nullptr) { tutorial->onCrafted(pTempItemInst); } @@ -246,8 +247,8 @@ bool IUIScene_CraftingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat) { // iIcon=pTempItemInst->getItem()->getIcon(pTempItemInst->getAuxValue()); if (pMinecraft->localgameModes[iPad] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[iPad]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[iPad]->getTutorial()); if (tutorial != nullptr) { tutorial->createItemSelected( pTempItemInst, diff --git a/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.h b/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.h index 570249054..0d1189b82 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.h +++ b/targets/app/common/UI/All Platforms/IUIScene_CraftingMenu.h @@ -2,7 +2,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/client/multiplayer/MultiPlayerGameMode.h" #include "minecraft/world/item/Item.h" #include "minecraft/world/item/crafting/Recipy.h" diff --git a/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.cpp b/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.cpp index a21ddffd7..4b0b707b6 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.cpp +++ b/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.cpp @@ -47,8 +47,8 @@ bool IUIScene_TradingMenu::handleKeyDown(int iPad, int iAction, bool bRepeat) { Minecraft* pMinecraft = Minecraft::GetInstance(); if (pMinecraft->localgameModes[getPad()] != nullptr) { - Tutorial* tutorial = - pMinecraft->localgameModes[getPad()]->getTutorial(); + Tutorial* tutorial = static_cast( + pMinecraft->localgameModes[getPad()]->getTutorial()); if (tutorial != nullptr) { tutorial->handleUIInput(iAction); if (ui.IsTutorialVisible(getPad()) && diff --git a/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.h b/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.h index a326e5aa7..7e269a451 100644 --- a/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.h +++ b/targets/app/common/UI/All Platforms/IUIScene_TradingMenu.h @@ -6,7 +6,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "minecraft/util/HtmlString.h" #include "minecraft/world/inventory/MerchantMenu.h" #include "minecraft/world/item/Rarity.h" diff --git a/targets/app/common/UI/Components/UIComponent_TutorialPopup.cpp b/targets/app/common/UI/Components/UIComponent_TutorialPopup.cpp index ea72371d1..f5629a62d 100644 --- a/targets/app/common/UI/Components/UIComponent_TutorialPopup.cpp +++ b/targets/app/common/UI/Components/UIComponent_TutorialPopup.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/UILayer.h" #include "app/common/UI/UIScene.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_AnvilMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_AnvilMenu.cpp index 0524a9715..cd8c5ddcf 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_AnvilMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_AnvilMenu.cpp @@ -9,7 +9,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/Controls/UIControl_SlotList.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BeaconMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BeaconMenu.cpp index 4dc84968d..fa27ae1d8 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BeaconMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BeaconMenu.cpp @@ -6,7 +6,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_BeaconEffectButton.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BrewingStandMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BrewingStandMenu.cpp index c5e716adf..f60eb9a07 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BrewingStandMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_BrewingStandMenu.cpp @@ -4,7 +4,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_ContainerMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_ContainerMenu.cpp index 84e5a798e..0ee196de4 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_ContainerMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_ContainerMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_CreativeMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_CreativeMenu.cpp index ca6a4f48c..528da0646 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_CreativeMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_CreativeMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Base.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_DispenserMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_DispenserMenu.cpp index a1beb76d7..7223240bd 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_DispenserMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_DispenserMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_EnchantingMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_EnchantingMenu.cpp index 3f36371d9..b9f80f605 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_EnchantingMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_EnchantingMenu.cpp @@ -7,7 +7,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_EnchantmentBook.h" #include "app/common/UI/Controls/UIControl_EnchantmentButton.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FireworksMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FireworksMenu.cpp index 235401cf6..28d1eee2a 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FireworksMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FireworksMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/Controls/UIControl_SlotList.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FurnaceMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FurnaceMenu.cpp index 424906cdc..1fd08f277 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FurnaceMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_FurnaceMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_Label.h" #include "app/common/UI/Controls/UIControl_Progress.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HopperMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HopperMenu.cpp index cd37450b0..294c5e91c 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HopperMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HopperMenu.cpp @@ -5,7 +5,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HorseInventoryMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HorseInventoryMenu.cpp index bedddb31b..9e9f9378f 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HorseInventoryMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_HorseInventoryMenu.cpp @@ -6,7 +6,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_InventoryMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_InventoryMenu.cpp index 58f9f6465..67ebaf6b7 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_InventoryMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_InventoryMenu.cpp @@ -8,7 +8,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/Controls/UIControl_MinecraftPlayer.h" #include "app/common/UI/Controls/UIControl_SlotList.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.cpp index 6bf22ea8b..44009e221 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.cpp @@ -7,7 +7,7 @@ #include #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_Label.h" diff --git a/targets/app/common/UI/Scenes/In-Game Menu Screens/UIScene_CraftingMenu.cpp b/targets/app/common/UI/Scenes/In-Game Menu Screens/UIScene_CraftingMenu.cpp index a16e0ce03..1679c1108 100644 --- a/targets/app/common/UI/Scenes/In-Game Menu Screens/UIScene_CraftingMenu.cpp +++ b/targets/app/common/UI/Scenes/In-Game Menu Screens/UIScene_CraftingMenu.cpp @@ -3,7 +3,7 @@ #include "platform/game/game.h" #include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialEnum.h" +#include "minecraft/world/tutorial/TutorialEnum.h" #include "app/common/Tutorial/TutorialMode.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Controls/UIControl_HTMLLabel.h" diff --git a/targets/minecraft/client/multiplayer/ClientConnection.cpp b/targets/minecraft/client/multiplayer/ClientConnection.cpp index ad8e28e47..7b615c418 100644 --- a/targets/minecraft/client/multiplayer/ClientConnection.cpp +++ b/targets/minecraft/client/multiplayer/ClientConnection.cpp @@ -16,8 +16,7 @@ #include "minecraft/client/skins/ISkinAssetData.h" #include "app/common/Network/Socket.h" #include "app/common/Tutorial/FullTutorialMode.h" -#include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialMode.h" +#include "minecraft/world/tutorial/ITutorial.h" #include "app/common/UI/All Platforms/UIStructs.h" #include "app/common/UI/Scenes/In-Game Menu Screens/Containers/UIScene_TradingMenu.h" #include "app/linux/Linux_UIController.h" @@ -2525,9 +2524,11 @@ void ClientConnection::handleRespawn(std::shared_ptr packet) { // minecraft->addPendingLocalConnection(m_userIndex, this); if (minecraft->localgameModes[m_userIndex] != nullptr) { - TutorialMode* gameMode = - (TutorialMode*)minecraft->localgameModes[m_userIndex]; - gameMode->getTutorial()->showTutorialPopup(false); + ITutorial* tutorial = + minecraft->localgameModes[m_userIndex]->getTutorial(); + if (tutorial != nullptr) { + tutorial->showTutorialPopup(false); + } } // 4J-JEV: Fix for Durango #156334 - Content: UI: Rich Presence 'In the diff --git a/targets/minecraft/client/multiplayer/MultiPlayerGameMode.h b/targets/minecraft/client/multiplayer/MultiPlayerGameMode.h index bd08c3e5b..2eaceb854 100644 --- a/targets/minecraft/client/multiplayer/MultiPlayerGameMode.h +++ b/targets/minecraft/client/multiplayer/MultiPlayerGameMode.h @@ -12,7 +12,7 @@ class Entity; class Level; class Minecraft; class Player; -class Tutorial; +class ITutorial; class MultiPlayerGameMode { private: @@ -91,5 +91,5 @@ public: // 4J Stu - Added for tutorial checks virtual bool isInputAllowed(int mapping) { return true; } virtual bool isTutorial() { return false; } - virtual Tutorial* getTutorial() { return nullptr; } + virtual ITutorial* getTutorial() { return nullptr; } }; \ No newline at end of file diff --git a/targets/minecraft/client/player/LocalPlayer.cpp b/targets/minecraft/client/player/LocalPlayer.cpp index 3efa77260..2dbb3bc9a 100644 --- a/targets/minecraft/client/player/LocalPlayer.cpp +++ b/targets/minecraft/client/player/LocalPlayer.cpp @@ -32,8 +32,7 @@ #include "Pos.h" #include "minecraft/sounds/ConsoleSoundEngine.h" #include "platform/profile/ProfileConstants.h" -#include "app/common/Tutorial/Tutorial.h" -#include "app/common/Tutorial/TutorialMode.h" +#include "minecraft/world/tutorial/ITutorial.h" #include "app/linux/Linux_UIController.h" #include "minecraft/SharedConstants.h" #include "minecraft/client/Minecraft.h" @@ -1221,9 +1220,11 @@ bool LocalPlayer::hasPermission(EGameCommand command) { void LocalPlayer::onCrafted(std::shared_ptr item) { if (minecraft->localgameModes[m_iPad] != nullptr) { - TutorialMode* gameMode = - (TutorialMode*)minecraft->localgameModes[m_iPad]; - gameMode->getTutorial()->onCrafted(item); + ITutorial* tutorial = + minecraft->localgameModes[m_iPad]->getTutorial(); + if (tutorial != nullptr) { + tutorial->onCrafted(item); + } } } @@ -1646,10 +1647,11 @@ void LocalPlayer::handleCollectItem(std::shared_ptr item) { } } } - TutorialMode* gameMode = - (TutorialMode*)minecraft->localgameModes[m_iPad]; - gameMode->getTutorial()->onTake(item, itemCountAnyAux, - itemCountThisAux); + ITutorial* tutorial = + minecraft->localgameModes[m_iPad]->getTutorial(); + if (tutorial != nullptr) { + tutorial->onTake(item, itemCountAnyAux, itemCountThisAux); + } } if (ui.IsContainerMenuDisplayed(m_iPad)) { diff --git a/targets/minecraft/server/PlayerList.cpp b/targets/minecraft/server/PlayerList.cpp index 2aef07452..d123c9262 100644 --- a/targets/minecraft/server/PlayerList.cpp +++ b/targets/minecraft/server/PlayerList.cpp @@ -11,7 +11,7 @@ #include "MinecraftServer.h" #include "Settings.h" #include "app/common/GameRules/LevelRules/RuleDefinitions/LevelRuleset.h" -#include "app/common/Tutorial/Tutorial.h" +#include "minecraft/world/tutorial/ITutorial.h" #include "java/Class.h" #include "java/JavaMath.h" #include "minecraft/GameEnums.h" diff --git a/targets/minecraft/server/level/GameMode.h b/targets/minecraft/server/level/GameMode.h index fe2a1ecde..e3186c3be 100644 --- a/targets/minecraft/server/level/GameMode.h +++ b/targets/minecraft/server/level/GameMode.h @@ -8,7 +8,7 @@ class Player; class ItemInstance; class Entity; -class Tutorial; +class ITutorial; class GameMode { protected: @@ -70,5 +70,5 @@ public: // 4J Stu - Added for tutorial checks virtual bool isInputAllowed(int mapping) { return true; } virtual bool isTutorial() { return false; } - virtual Tutorial* getTutorial() { return nullptr; } + virtual ITutorial* getTutorial() { return nullptr; } }; diff --git a/targets/minecraft/world/tutorial/ITutorial.h b/targets/minecraft/world/tutorial/ITutorial.h new file mode 100644 index 000000000..6c3c23d28 --- /dev/null +++ b/targets/minecraft/world/tutorial/ITutorial.h @@ -0,0 +1,46 @@ +#pragma once + +#include +#include + +#include "minecraft/world/tutorial/TutorialEnum.h" + +class Entity; +class ItemInstance; + +// Domain interface for the player tutorial. +// +// minecraft/ consumers (Player, GameMode, ClientConnection, the player +// list) need to forward gameplay events into the tutorial system but +// they should not depend on the heavyweight Tutorial implementation +// in app/common/Tutorial/. The concrete Tutorial in app/ inherits +// from this interface; minecraft/ only sees ITutorial*. +// +// Tutorial state and hint enums (eTutorial_State, eTutorial_Hint) +// remain in minecraft/world/tutorial/TutorialEnum.h, which is itself a +// content-only header that minecraft/ can safely include. +class ITutorial { +public: + virtual ~ITutorial() = default; + + [[nodiscard]] virtual bool isStateCompleted(eTutorial_State state) = 0; + virtual void changeTutorialState(eTutorial_State newState) = 0; + + virtual bool setMessage(const std::string& message, int icon, + int auxValue) = 0; + + virtual void showTutorialPopup(bool show) = 0; + + virtual void onCrafted(std::shared_ptr item) = 0; + virtual void onTake(std::shared_ptr item, + unsigned int invItemCountAnyAux, + unsigned int invItemCountThisAux) = 0; + virtual void onSelectedItemChanged(std::shared_ptr item) = 0; + virtual void onLookAt(int id, int iData = 0) = 0; + virtual void onLookAtEntity(std::shared_ptr entity) = 0; + virtual void onRideEntity(std::shared_ptr entity) = 0; + + [[nodiscard]] virtual bool canMoveToPosition(double xo, double yo, + double zo, double xt, + double yt, double zt) = 0; +}; diff --git a/targets/app/common/Tutorial/TutorialEnum.h b/targets/minecraft/world/tutorial/TutorialEnum.h similarity index 100% rename from targets/app/common/Tutorial/TutorialEnum.h rename to targets/minecraft/world/tutorial/TutorialEnum.h