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
524 : GameObjectAI(go)
525 {
529 }
@ EVENT_BM_SELECT_MUSIC
Definition: go_scripts.cpp:513
@ EVENT_BM_START_MUSIC
Definition: go_scripts.cpp:514
@ EVENT_BREWFESTGOBLIN01
Definition: go_scripts.cpp:480
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:641
EventMap _events
Definition: go_scripts.cpp:640

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.

532 {
533 _events.Update(diff);
534 while (uint32 eventId = _events.ExecuteEvent())
535 {
536 switch (eventId)
537 {
539 {
540 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
541 break;
542 // Select random music sample
543 uint32 rnd = urand(0, 2);
544 uint32 musicTime = 1000;
545 //Restart the current selected music
547 //Check zone to play correct music
549 {
550 switch (rnd)
551 {
552 case 0:
554 musicTime = EVENT_BREWFESTGOBLIN01_TIME;
555 break;
556 case 1:
558 musicTime = EVENT_BREWFESTGOBLIN02_TIME;
559 break;
560 case 2:
562 musicTime = EVENT_BREWFESTGOBLIN03_TIME;
563 break;
564 default:
565 break;
566 }
567 }
568 else if (me->GetAreaId() == IRONFORGE_1 || me->GetAreaId() == IRONFORGE_2 || me->GetAreaId() == STORMWIND || me->GetAreaId() == EXODAR || me->GetAreaId() == DARNASSUS)
569 {
570 switch (rnd)
571 {
572 case 0:
574 musicTime = EVENT_BREWFESTDWARF01_TIME;
575 break;
576 case 1:
578 musicTime = EVENT_BREWFESTDWARF02_TIME;
579 break;
580 case 2:
582 musicTime = EVENT_BREWFESTDWARF03_TIME;
583 break;
584 default:
585 break;
586 }
587 }
588 else if (me->GetAreaId() == SHATTRATH)
589 {
590 rnd = urand(0, 5);
591 switch (rnd)
592 {
593 case 0:
595 musicTime = EVENT_BREWFESTGOBLIN01_TIME;
596 break;
597 case 1:
599 musicTime = EVENT_BREWFESTGOBLIN02_TIME;
600 break;
601 case 2:
603 musicTime = EVENT_BREWFESTGOBLIN03_TIME;
604 break;
605 case 3:
607 musicTime = EVENT_BREWFESTDWARF01_TIME;
608 break;
609 case 4:
611 musicTime = EVENT_BREWFESTDWARF02_TIME;
612 break;
613 case 5:
615 musicTime = EVENT_BREWFESTDWARF03_TIME;
616 break;
617 default:
618 break;
619 }
620 }
621 _events.ScheduleEvent(EVENT_BM_SELECT_MUSIC, musicTime); // Select new song music after play time is over
622 break;
623 }
625 if (!IsHolidayActive(HOLIDAY_BREWFEST)) // Check if Brewfest is active
626 break;
627 // Play selected music
628 if (_currentMusicEvent != 0)
629 {
631 }
632 _events.ScheduleEvent(EVENT_BM_START_MUSIC, 5000); // Every 5 second's SMSG_PLAY_MUSIC packet (PlayDirectMusic) is pushed to the client
633 break;
634 default:
635 break;
636 }
637 }
638 }
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:1909
@ EVENT_BREWFESTGOBLIN03_TIME
Definition: go_scripts.cpp:493
@ EVENT_BREWFESTGOBLIN02_TIME
Definition: go_scripts.cpp:492
@ EVENT_BREWFESTGOBLIN01_TIME
Definition: go_scripts.cpp:491
@ EVENT_BREWFESTDWARF03_TIME
Definition: go_scripts.cpp:490
@ EVENT_BREWFESTDWARF01_TIME
Definition: go_scripts.cpp:488
@ EVENT_BREWFESTDWARF02_TIME
Definition: go_scripts.cpp:489
@ EVENT_BREWFESTGOBLIN03
Definition: go_scripts.cpp:482
@ EVENT_BREWFESTDWARF02
Definition: go_scripts.cpp:478
@ EVENT_BREWFESTDWARF01
Definition: go_scripts.cpp:477
@ EVENT_BREWFESTDWARF03
Definition: go_scripts.cpp:479
@ EVENT_BREWFESTGOBLIN02
Definition: go_scripts.cpp:481
@ UNDERCITY
Definition: go_scripts.cpp:499
@ IRONFORGE_1
Definition: go_scripts.cpp:503
@ ORGRIMMAR_2
Definition: go_scripts.cpp:501
@ SHATTRATH
Definition: go_scripts.cpp:508
@ IRONFORGE_2
Definition: go_scripts.cpp:504
@ THUNDERBLUFF
Definition: go_scripts.cpp:502
@ DARNASSUS
Definition: go_scripts.cpp:507
@ SILVERMOON
Definition: go_scripts.cpp:498
@ STORMWIND
Definition: go_scripts.cpp:505
@ EXODAR
Definition: go_scripts.cpp:506
@ ORGRIMMAR_1
Definition: go_scripts.cpp:500
@ HOLIDAY_BREWFEST
Definition: SharedDefines.h:2758
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:2886
uint32 GetAreaId() const
Definition: Object.cpp:3108

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().