2021-12-15 19:23:49 +00:00
|
|
|
#include "LegoDieRoll.h"
|
|
|
|
#include "Entity.h"
|
|
|
|
#include "GameMessages.h"
|
2022-07-05 06:00:10 +00:00
|
|
|
#include "MissionComponent.h"
|
2023-01-22 23:38:47 +00:00
|
|
|
#include "eMissionState.h"
|
2021-12-15 19:23:49 +00:00
|
|
|
|
|
|
|
void LegoDieRoll::OnStartup(Entity* self) {
|
2022-07-28 13:39:57 +00:00
|
|
|
self->AddTimer("DoneRolling", 10.0f);
|
|
|
|
self->AddTimer("ThrowDice", LegoDieRoll::animTime);
|
2021-12-15 19:23:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void LegoDieRoll::OnTimerDone(Entity* self, std::string timerName) {
|
2022-07-28 13:39:57 +00:00
|
|
|
if (timerName == "DoneRolling") {
|
2023-05-02 22:39:21 +00:00
|
|
|
self->Smash(self->GetObjectID(), eKillType::SILENT);
|
2022-07-28 13:39:57 +00:00
|
|
|
} else if (timerName == "ThrowDice") {
|
|
|
|
int dieRoll = GeneralUtils::GenerateRandomNumber<int>(1, 6);
|
2021-12-15 19:23:49 +00:00
|
|
|
|
2022-07-28 13:39:57 +00:00
|
|
|
switch (dieRoll) {
|
|
|
|
case 1:
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-1");
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-2");
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-3");
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-4");
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-5");
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
{
|
|
|
|
GameMessages::SendPlayAnimation(self, u"roll-die-6");
|
|
|
|
// tracking the It's Truly Random Achievement
|
|
|
|
auto* owner = self->GetOwner();
|
|
|
|
auto* missionComponent = owner->GetComponent<MissionComponent>();
|
2021-12-15 23:30:46 +00:00
|
|
|
|
2022-07-28 13:39:57 +00:00
|
|
|
if (missionComponent != nullptr) {
|
|
|
|
const auto rollMissionState = missionComponent->GetMissionState(756);
|
2023-01-22 23:38:47 +00:00
|
|
|
if (rollMissionState == eMissionState::ACTIVE) {
|
2022-07-28 13:39:57 +00:00
|
|
|
missionComponent->ForceProgress(756, 1103, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|