AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
go_brewfest_music::go_brewfest_musicAI Struct Reference
Inheritance diagram for go_brewfest_music::go_brewfest_musicAI:
GameObjectAI

Public Member Functions

 go_brewfest_musicAI (GameObject *go)
 
void UpdateAI (uint32 diff) override
 
- Public Member Functions inherited from GameObjectAI
 GameObjectAI (GameObject *go)
 
virtual ~GameObjectAI ()
 
virtual void UpdateAI (uint32)
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void DoAction (int32)
 
virtual void SetGUID (ObjectGuid, int32)
 
virtual ObjectGuid GetGUID (int32) const
 
virtual bool GossipHello (Player *, bool)
 
virtual bool GossipSelect (Player *, uint32, uint32)
 
virtual bool GossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual bool QuestAccept (Player *, Quest const *)
 
virtual bool QuestReward (Player *, Quest const *, uint32)
 
virtual uint32 GetDialogStatus (Player *)
 
virtual void Destroyed (Player *, uint32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void OnGameEvent (bool, uint16)
 
virtual void OnStateChanged (uint32, Unit *)
 
virtual void EventInform (uint32)
 
virtual void SpellHit (Unit *, SpellInfo const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual void JustSummoned (Creature *)
 
virtual void SummonedCreatureDespawn (Creature *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 

Private Attributes

EventMap _events
 
uint32 _currentMusicEvent
 

Additional Inherited Members

- Static Public Member Functions inherited from GameObjectAI
static int32 Permissible (GameObject const *go)
 
- Protected Attributes inherited from GameObjectAI
GameObject *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ go_brewfest_musicAI()

go_brewfest_music::go_brewfest_musicAI::go_brewfest_musicAI ( GameObject go)
inline
548 : GameObjectAI(go)
549 {
553 }
@ EVENT_BM_SELECT_MUSIC
Definition: go_scripts.cpp:537
@ EVENT_BM_START_MUSIC
Definition: go_scripts.cpp:538
@ EVENT_BREWFESTGOBLIN01
Definition: go_scripts.cpp:504
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition: EventMap.cpp:56
Definition: GameObjectAI.h:34
uint32 _currentMusicEvent
Definition: go_scripts.cpp:665
EventMap _events
Definition: go_scripts.cpp:664

References _currentMusicEvent, _events, EVENT_BM_SELECT_MUSIC, EVENT_BM_START_MUSIC, EVENT_BREWFESTGOBLIN01, and EventMap::ScheduleEvent().

Member Function Documentation

◆ UpdateAI()

void go_brewfest_music::go_brewfest_musicAI::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from GameObjectAI.

556 {
557 _events.Update(diff);
558 while (uint32 eventId = _events.ExecuteEvent())
559 {
560 switch (eventId)
561 {
563 {
564 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
565 break;
566 // Select random music sample
567 uint32 rnd = urand(0, 2);
568 uint32 musicTime = 1000;
569 //Restart the current selected music
571 //Check zone to play correct music
573 {
574 switch (rnd)
575 {
576 case 0:
578 musicTime = EVENT_BREWFESTGOBLIN01_TIME;
579 break;
580 case 1:
582 musicTime = EVENT_BREWFESTGOBLIN02_TIME;
583 break;
584 case 2:
586 musicTime = EVENT_BREWFESTGOBLIN03_TIME;
587 break;
588 default:
589 break;
590 }
591 }
592 else if (me->GetAreaId() == IRONFORGE_1 || me->GetAreaId() == IRONFORGE_2 || me->GetAreaId() == STORMWIND || me->GetAreaId() == EXODAR || me->GetAreaId() == DARNASSUS)
593 {
594 switch (rnd)
595 {
596 case 0:
598 musicTime = EVENT_BREWFESTDWARF01_TIME;
599 break;
600 case 1:
602 musicTime = EVENT_BREWFESTDWARF02_TIME;
603 break;
604 case 2:
606 musicTime = EVENT_BREWFESTDWARF03_TIME;
607 break;
608 default:
609 break;
610 }
611 }
612 else if (me->GetAreaId() == SHATTRATH)
613 {
614 rnd = urand(0, 5);
615 switch (rnd)
616 {
617 case 0:
619 musicTime = EVENT_BREWFESTGOBLIN01_TIME;
620 break;
621 case 1:
623 musicTime = EVENT_BREWFESTGOBLIN02_TIME;
624 break;
625 case 2:
627 musicTime = EVENT_BREWFESTGOBLIN03_TIME;
628 break;
629 case 3:
631 musicTime = EVENT_BREWFESTDWARF01_TIME;
632 break;
633 case 4:
635 musicTime = EVENT_BREWFESTDWARF02_TIME;
636 break;
637 case 5:
639 musicTime = EVENT_BREWFESTDWARF03_TIME;
640 break;
641 default:
642 break;
643 }
644 }
645 _events.ScheduleEvent(EVENT_BM_SELECT_MUSIC, musicTime); // Select new song music after play time is over
646 break;
647 }
649 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
650 break;
651 // Play selected music
652 if (_currentMusicEvent != 0)
653 {
655 }
656 _events.ScheduleEvent(EVENT_BM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client
657 break;
658 default:
659 break;
660 }
661 }
662 }
std::uint32_t uint32
Definition: Define.h:108
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
bool IsHolidayActive(HolidayIds id)
Definition: GameEventMgr.cpp:1910
@ EVENT_BREWFESTGOBLIN03_TIME
Definition: go_scripts.cpp:517
@ EVENT_BREWFESTGOBLIN02_TIME
Definition: go_scripts.cpp:516
@ EVENT_BREWFESTGOBLIN01_TIME
Definition: go_scripts.cpp:515
@ EVENT_BREWFESTDWARF03_TIME
Definition: go_scripts.cpp:514
@ EVENT_BREWFESTDWARF01_TIME
Definition: go_scripts.cpp:512
@ EVENT_BREWFESTDWARF02_TIME
Definition: go_scripts.cpp:513
@ EVENT_BREWFESTGOBLIN03
Definition: go_scripts.cpp:506
@ EVENT_BREWFESTDWARF02
Definition: go_scripts.cpp:502
@ EVENT_BREWFESTDWARF01
Definition: go_scripts.cpp:501
@ EVENT_BREWFESTDWARF03
Definition: go_scripts.cpp:503
@ EVENT_BREWFESTGOBLIN02
Definition: go_scripts.cpp:505
@ UNDERCITY
Definition: go_scripts.cpp:523
@ IRONFORGE_1
Definition: go_scripts.cpp:527
@ ORGRIMMAR_2
Definition: go_scripts.cpp:525
@ SHATTRATH
Definition: go_scripts.cpp:532
@ IRONFORGE_2
Definition: go_scripts.cpp:528
@ THUNDERBLUFF
Definition: go_scripts.cpp:526
@ DARNASSUS
Definition: go_scripts.cpp:531
@ SILVERMOON
Definition: go_scripts.cpp:522
@ STORMWIND
Definition: go_scripts.cpp:529
@ EXODAR
Definition: go_scripts.cpp:530
@ ORGRIMMAR_1
Definition: go_scripts.cpp:524
@ HOLIDAY_BREWFEST
Definition: SharedDefines.h:2730
uint32 ExecuteEvent()
Definition: EventMap.cpp:114
void Update(uint32 time)
Definition: EventMap.h:54
GameObject *const me
Definition: GameObjectAI.h:36
void PlayDirectMusic(uint32 music_id, Player *target=nullptr)
Definition: Object.cpp:2861
uint32 GetAreaId() const
Definition: Object.cpp:3083

References _currentMusicEvent, _events, DARNASSUS, EVENT_BM_SELECT_MUSIC, EVENT_BM_START_MUSIC, EVENT_BREWFESTDWARF01, EVENT_BREWFESTDWARF01_TIME, EVENT_BREWFESTDWARF02, EVENT_BREWFESTDWARF02_TIME, EVENT_BREWFESTDWARF03, EVENT_BREWFESTDWARF03_TIME, EVENT_BREWFESTGOBLIN01, EVENT_BREWFESTGOBLIN01_TIME, EVENT_BREWFESTGOBLIN02, EVENT_BREWFESTGOBLIN02_TIME, EVENT_BREWFESTGOBLIN03, EVENT_BREWFESTGOBLIN03_TIME, EventMap::ExecuteEvent(), EXODAR, WorldObject::GetAreaId(), HOLIDAY_BREWFEST, IRONFORGE_1, IRONFORGE_2, IsHolidayActive(), GameObjectAI::me, ORGRIMMAR_1, ORGRIMMAR_2, WorldObject::PlayDirectMusic(), EventMap::ScheduleEvent(), SHATTRATH, SILVERMOON, STORMWIND, THUNDERBLUFF, UNDERCITY, EventMap::Update(), and urand().

Member Data Documentation

◆ _currentMusicEvent

uint32 go_brewfest_music::go_brewfest_musicAI::_currentMusicEvent
private

Referenced by go_brewfest_musicAI(), and UpdateAI().

◆ _events

EventMap go_brewfest_music::go_brewfest_musicAI::_events
private

Referenced by go_brewfest_musicAI(), and UpdateAI().