feat(Core/Scripting): move all script objects to separated files (#17860)

* feat(Core/Scripts): move all script objects to separated files

* Apply 5bfeabde81

* try gcc build

* again
This commit is contained in:
Winfidonarleyan 2023-12-03 03:13:20 +07:00 committed by GitHub
parent fe9bda1bc4
commit eb1ecc38a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
717 changed files with 5832 additions and 3579 deletions

View file

@ -15,6 +15,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "AreaTriggerScript.h"
#include "ElunaScript.h"
#include "Player.h"
#include "ScriptMgr.h"
#include "ScriptMgrMacros.h"
@ -36,3 +39,43 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTrigger const* trigger)
auto tempScript = ScriptRegistry<AreaTriggerScript>::GetScriptById(sObjectMgr->GetAreaTriggerScriptId(trigger->entry));
return tempScript ? tempScript->OnTrigger(player, trigger) : false;
}
AreaTriggerScript::AreaTriggerScript(const char* name)
: ScriptObject(name)
{
ScriptRegistry<AreaTriggerScript>::AddScript(this);
}
bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTrigger const* trigger)
{
uint32 const triggerId = trigger->entry;
if (InstanceScript* instance = player->GetInstanceScript())
{
if (instance->IsAreaTriggerDone(triggerId))
{
return true;
}
else
{
instance->MarkAreaTriggerDone(triggerId);
}
}
return _OnTrigger(player, trigger);
}
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId)
{
script->ResetAreaTriggerDone(triggerId);
}
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTrigger const* trigger)
{
if (InstanceScript* instance = player->GetInstanceScript())
{
ResetAreaTriggerDone(instance, trigger->entry);
}
}
template class AC_GAME_API ScriptRegistry<AreaTriggerScript>;