TrinityCore
ZoneScript.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef ZONE_SCRIPT_H_
19#define ZONE_SCRIPT_H_
20
21#include "Define.h"
22#include "ObjectGuid.h"
23
24class AreaTrigger;
25class Creature;
26class GameObject;
27class Player;
28class Unit;
29class WorldObject;
30struct CreatureData;
31
32enum class FlagState : uint8;
33
34enum class EncounterType : uint8
35{
39};
40
42{
43public:
44 explicit ControlZoneHandler() = default;
45 virtual ~ControlZoneHandler() = default;
46
47 virtual void HandleCaptureEventHorde([[maybe_unused]] GameObject* controlZone) { }
48 virtual void HandleCaptureEventAlliance([[maybe_unused]] GameObject* controlZone) { }
49 virtual void HandleContestedEventHorde([[maybe_unused]] GameObject* controlZone) { }
50 virtual void HandleContestedEventAlliance([[maybe_unused]] GameObject* controlZone) { }
51 virtual void HandleProgressEventHorde([[maybe_unused]] GameObject* controlZone) { }
52 virtual void HandleProgressEventAlliance([[maybe_unused]] GameObject* controlZone) { }
53 virtual void HandleNeutralEventHorde([[maybe_unused]] GameObject* controlZone) { HandleNeutralEvent(controlZone); }
54 virtual void HandleNeutralEventAlliance([[maybe_unused]] GameObject* controlZone) { HandleNeutralEvent(controlZone); }
55 virtual void HandleNeutralEvent([[maybe_unused]] GameObject* controlZone) { }
56};
57
59{
60 public:
62 ZoneScript(ZoneScript const& right);
63 ZoneScript(ZoneScript&& right) noexcept;
65 ZoneScript& operator=(ZoneScript&& right) noexcept;
66 virtual ~ZoneScript();
67
68 virtual uint32 GetCreatureEntry(ObjectGuid::LowType /*spawnId*/, CreatureData const* data);
69 virtual uint32 GetGameObjectEntry(ObjectGuid::LowType /*spawnId*/, uint32 entry) { return entry; }
70
71 virtual void OnCreatureCreate(Creature* ) { }
72 virtual void OnCreatureRemove(Creature* ) { }
73
74 virtual void OnGameObjectCreate(GameObject* ) { }
75 virtual void OnGameObjectRemove(GameObject* ) { }
76
77 virtual void OnAreaTriggerCreate([[maybe_unused]] AreaTrigger* areaTrigger) { }
78 virtual void OnAreaTriggerRemove([[maybe_unused]] AreaTrigger* areaTrigger) { }
79
80 virtual void OnUnitDeath([[maybe_unused]] Unit* unit) { }
81
82 //All-purpose data storage ObjectGuid
83 virtual ObjectGuid GetGuidData(uint32 /*DataId*/) const { return ObjectGuid::Empty; }
84 virtual void SetGuidData(uint32 /*DataId*/, ObjectGuid /*Value*/) { }
85
86 //All-purpose data storage 64 bit
87 virtual uint64 GetData64(uint32 /*DataId*/) const { return 0; }
88 virtual void SetData64(uint32 /*DataId*/, uint64 /*Value*/) { }
89
90 //All-purpose data storage 32 bit
91 virtual uint32 GetData(uint32 /*DataId*/) const { return 0; }
92 virtual void SetData(uint32 /*DataId*/, uint32 /*Value*/) { }
93
94 virtual void TriggerGameEvent(uint32 gameEventId, WorldObject* source = nullptr, WorldObject* target = nullptr);
95 virtual void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/) { }
96 virtual void DoAction([[maybe_unused]] uint32 actionId, [[maybe_unused]] WorldObject* source = nullptr, [[maybe_unused]] WorldObject* target = nullptr) { }
97
98 virtual void OnFlagStateChange([[maybe_unused]] GameObject* flagInBase, [[maybe_unused]] FlagState oldValue, [[maybe_unused]] FlagState newValue, [[maybe_unused]] Player* player) { }
99
100 virtual bool CanCaptureFlag([[maybe_unused]] AreaTrigger* areaTrigger, [[maybe_unused]] Player* player) { return false; }
101 virtual void OnCaptureFlag([[maybe_unused]] AreaTrigger* areaTrigger, [[maybe_unused]] Player* player) { }
102};
103
104#endif
#define TC_GAME_API
Definition: Define.h:123
uint8_t uint8
Definition: Define.h:144
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
FlagState
Definition: GameObject.h:46
EncounterType
Definition: ZoneScript.h:35
virtual void HandleNeutralEventHorde(GameObject *controlZone)
Definition: ZoneScript.h:53
virtual void HandleProgressEventAlliance(GameObject *controlZone)
Definition: ZoneScript.h:52
virtual ~ControlZoneHandler()=default
virtual void HandleContestedEventAlliance(GameObject *controlZone)
Definition: ZoneScript.h:50
virtual void HandleNeutralEventAlliance(GameObject *controlZone)
Definition: ZoneScript.h:54
virtual void HandleCaptureEventHorde(GameObject *controlZone)
Definition: ZoneScript.h:47
virtual void HandleProgressEventHorde(GameObject *controlZone)
Definition: ZoneScript.h:51
virtual void HandleNeutralEvent(GameObject *controlZone)
Definition: ZoneScript.h:55
ControlZoneHandler()=default
virtual void HandleContestedEventHorde(GameObject *controlZone)
Definition: ZoneScript.h:49
virtual void HandleCaptureEventAlliance(GameObject *controlZone)
Definition: ZoneScript.h:48
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
uint64 LowType
Definition: ObjectGuid.h:278
Definition: Unit.h:627
ZoneScript & operator=(ZoneScript &&right) noexcept
virtual void DoAction(uint32 actionId, WorldObject *source=nullptr, WorldObject *target=nullptr)
Definition: ZoneScript.h:96
virtual uint32 GetGameObjectEntry(ObjectGuid::LowType, uint32 entry)
Definition: ZoneScript.h:69
virtual void SetData64(uint32, uint64)
Definition: ZoneScript.h:88
virtual bool CanCaptureFlag(AreaTrigger *areaTrigger, Player *player)
Definition: ZoneScript.h:100
virtual void OnGameObjectRemove(GameObject *)
Definition: ZoneScript.h:75
ZoneScript & operator=(ZoneScript const &right)
virtual void OnCaptureFlag(AreaTrigger *areaTrigger, Player *player)
Definition: ZoneScript.h:101
virtual void OnUnitDeath(Unit *unit)
Definition: ZoneScript.h:80
virtual uint32 GetData(uint32) const
Definition: ZoneScript.h:91
ZoneScript(ZoneScript &&right) noexcept
virtual void SetData(uint32, uint32)
Definition: ZoneScript.h:92
virtual ObjectGuid GetGuidData(uint32) const
Definition: ZoneScript.h:83
ZoneScript(ZoneScript const &right)
virtual void OnAreaTriggerRemove(AreaTrigger *areaTrigger)
Definition: ZoneScript.h:78
virtual uint64 GetData64(uint32) const
Definition: ZoneScript.h:87
virtual void SetGuidData(uint32, ObjectGuid)
Definition: ZoneScript.h:84
virtual void OnFlagStateChange(GameObject *flagInBase, FlagState oldValue, FlagState newValue, Player *player)
Definition: ZoneScript.h:98
virtual void OnAreaTriggerCreate(AreaTrigger *areaTrigger)
Definition: ZoneScript.h:77
virtual void OnCreatureRemove(Creature *)
Definition: ZoneScript.h:72
virtual void OnCreatureCreate(Creature *)
Definition: ZoneScript.h:71
virtual void ProcessEvent(WorldObject *, uint32, WorldObject *)
Definition: ZoneScript.h:95
virtual ~ZoneScript()
virtual void OnGameObjectCreate(GameObject *)
Definition: ZoneScript.h:74