1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#pragma once
using namespace std;
#include "TutorialEnum.h"
class Level;
class Tutorial;
class TutorialConstraint;
class MobEffect;
// 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;
vector<TutorialConstraint *> constraints;
bool areConstraintsEnabled;
public:
TutorialTask(Tutorial *tutorial, int descriptionId, bool enablePreCompletion, vector<TutorialConstraint *> *inConstraints, bool bShowMinimumTime=false, bool bAllowFade=true, bool m_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) { }
};
|