Core/Scenes: Implemented scene system

Closes #17858
Closes #17976
This commit is contained in:
Traesh
2016-09-25 16:13:12 +02:00
committed by Shauren
parent dd64a3cd36
commit d4887311e3
36 changed files with 838 additions and 67 deletions

View File

@@ -69,6 +69,7 @@ struct Condition;
struct ItemTemplate;
struct MapEntry;
struct OutdoorPvPData;
struct SceneTemplate;
#define VISIBLE_RANGE 166.0f //MAX visible range (size of grid)
@@ -831,6 +832,26 @@ class TC_GAME_API GroupScript : public ScriptObject
virtual void OnDisband(Group* /*group*/) { }
};
class TC_GAME_API SceneScript : public ScriptObject
{
protected:
SceneScript(const char* name);
public:
// Called when a player start a scene
virtual void OnSceneStart(Player* /*player*/, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) { }
// Called when a player receive trigger from scene
virtual void OnSceneTriggerEvent(Player* /*player*/, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/, std::string const& /*triggerName*/) { }
// Called when a scene is canceled
virtual void OnSceneCancel(Player* /*player*/, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) { }
// Called when a scene is completed
virtual void OnSceneComplete(Player* /*player*/, uint32 /*sceneInstanceID*/, SceneTemplate const* /*sceneTemplate*/) { }
};
// Manages registration, loading, and execution of scripts.
class TC_GAME_API ScriptMgr
{
@@ -1107,6 +1128,12 @@ class TC_GAME_API ScriptMgr
void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage);
void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage);
public: /* SceneScript */
void OnSceneStart(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate);
void OnSceneTrigger(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate, std::string const& triggerName);
void OnSceneCancel(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate);
void OnSceneComplete(Player* player, uint32 sceneInstanceID, SceneTemplate const* sceneTemplate);
private:
uint32 _scriptCount;