Skip to content

Commit

Permalink
Merge pull request #236 from ckawell/die-roll-anims-ckawell
Browse files Browse the repository at this point in the history
Implemented die roll animations for the Lego Dice item
  • Loading branch information
Wincent01 authored Dec 17, 2021
2 parents f816ce4 + 9c570b8 commit 93ddd50
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 2 deletions.
7 changes: 5 additions & 2 deletions dScripts/CppScripts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@
#include "PersonalFortress.h"
#include "PropertyDevice.h"
#include "ImaginationBackpackHealServer.h"
#include "LegoDieRoll.h"
#include "BuccaneerValiantShip.h"

// Survival scripts
Expand Down Expand Up @@ -775,8 +776,10 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr
script = new PropertyDevice();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_IMAG_BACKPACK_HEALS_SERVER.lua")
script = new ImaginationBackpackHealServer();
else if (scriptName == "scripts\\EquipmentScripts\\BuccaneerValiantShip.lua")
script = new BuccaneerValiantShip();
else if (scriptName == "scripts\\ai\\GENERAL\\L_LEGO_DIE_ROLL.lua")
script = new LegoDieRoll();
else if (scriptName == "scripts\\EquipmentScripts\\BuccaneerValiantShip.lua")
script = new BuccaneerValiantShip();

//Ignore these scripts:
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_SUSPEND_LUA_AI.lua")
Expand Down
55 changes: 55 additions & 0 deletions dScripts/LegoDieRoll.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "LegoDieRoll.h"
#include "Entity.h"
#include "dLogger.h"
#include "GameMessages.h"

void LegoDieRoll::OnStartup(Entity* self) {
self->AddTimer("DoneRolling", 10.0f);
self->AddTimer("ThrowDice", LegoDieRoll::animTime);
}

void LegoDieRoll::OnTimerDone(Entity* self, std::string timerName) {
if (timerName == "DoneRolling") {
self->Smash(self->GetObjectID(), SILENT);
}
else if (timerName == "ThrowDice") {
int dieRoll = GeneralUtils::GenerateRandomNumber<int>(1, 6);

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

if (missionComponent != nullptr) {
const auto rollMissionState = missionComponent->GetMissionState(756);
if (rollMissionState == MissionState::MISSION_STATE_ACTIVE) {
missionComponent->ForceProgress(756, 1103, 1);
}
}
break;
}
default:
Game::logger->LogDebug("LegoDieRoll", "Invalid animation: roll-die-%i\n", dieRoll);
break;
}
}
}
11 changes: 11 additions & 0 deletions dScripts/LegoDieRoll.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#pragma once
#include "CppScripts.h"

class LegoDieRoll : public CppScripts::Script {
public:
void OnStartup(Entity* self);
void OnTimerDone(Entity* self, std::string timerName);
private:
constexpr static const float animTime = 2.0f;
};

1 change: 1 addition & 0 deletions utils
Submodule utils added at 74508f

0 comments on commit 93ddd50

Please sign in to comment.