4jcraft/minecraft/Minecraft.Client/Common/Source Files/Tutorial/Tasks/TutorialTask.h
2026-03-31 13:50:13 -05:00

87 lines
3.2 KiB
C++

#pragma once
#include <format>
#include <memory>
#include <vector>
// using namespace std;
#include "Minecraft.Client/Common/Source Files/Tutorial/TutorialEnum.h"
class Level;
class Tutorial;
class TutorialConstraint;
class MobEffect;
class Entity;
class ItemInstance;
// A class that represents each individual task in the tutorial.
//
// Members:
// enablePreCompletion - If this is true, then the player can complete this
// task out of sequence.
// This stops us asking them to do
// things they have already done
// constraints - A list of constraints which can be activated
// (as a whole).
// If they are active, then the
// constraints are removed when the task is completed
// areConstraintsEnabled- A flag which records whether or not we have added the
// constraints to the tutorial
class TutorialTask {
protected:
int descriptionId;
int m_promptId;
Tutorial* tutorial;
bool enablePreCompletion;
bool bHasBeenActivated;
bool m_bAllowFade;
bool m_bTaskReminders;
bool m_bShowMinimumTime;
protected:
bool bIsCompleted;
bool m_bShownForMinimumTime;
std::vector<TutorialConstraint*> constraints;
bool areConstraintsEnabled;
public:
TutorialTask(Tutorial* tutorial, int descriptionId,
bool enablePreCompletion,
std::vector<TutorialConstraint*>* inConstraints,
bool bShowMinimumTime = false, bool bAllowFade = true,
bool bTaskReminders = true);
virtual ~TutorialTask();
virtual int getDescriptionId() { return descriptionId; }
virtual int getPromptId() { return m_promptId; }
virtual bool isCompleted() = 0;
virtual eTutorial_CompletionAction getCompletionAction() {
return e_Tutorial_Completion_None;
}
virtual bool isPreCompletionEnabled() { return enablePreCompletion; }
virtual void taskCompleted();
virtual void enableConstraints(bool enable, bool delayRemove = false);
virtual void setAsCurrentTask(bool active = true);
virtual void setShownForMinimumTime() { m_bShownForMinimumTime = true; }
virtual bool hasBeenActivated() { return bHasBeenActivated; }
virtual bool AllowFade() { return m_bAllowFade; }
bool TaskReminders() { return m_bTaskReminders; }
virtual bool ShowMinimumTime() { return m_bShowMinimumTime; }
virtual void useItemOn(Level* level, std::shared_ptr<ItemInstance> item,
int x, int y, int z, bool bTestUseOnly = false) {}
virtual void useItem(std::shared_ptr<ItemInstance> item,
bool bTestUseOnly = false) {}
virtual void completeUsingItem(std::shared_ptr<ItemInstance> item) {}
virtual void handleUIInput(int iAction) {}
virtual void onCrafted(std::shared_ptr<ItemInstance> item) {}
virtual void onTake(std::shared_ptr<ItemInstance> item,
unsigned int invItemCountAnyAux,
unsigned int invItemCountThisAux) {}
virtual void onStateChange(eTutorial_State newState) {}
virtual void onEffectChanged(MobEffect* effect, bool bRemoved = false) {}
virtual void onLookAtEntity(std::shared_ptr<Entity> entity) {}
virtual void onRideEntity(std::shared_ptr<Entity> entity) {}
};