Decompile 8 functions in Source/Contents/Sound/SoundMaker.cpp, Source/Contents/Actors/EffectActors.h
Batch #1131 by eAthena: 0 byte-identical, 8 confirmed by peer review. - fn_22365 CBlowEffect::`scalar deleting destructor': logic confirmed by peer review - fn_22367 CCorpse::`scalar deleting destructor': logic confirmed by peer review - fn_22373 CMasterChaser::`scalar deleting destructor': logic confirmed by peer review - fn_22375 CNumEffect::`scalar deleting destructor': logic confirmed by peer review - fn_22405 CNumEffect::Update: logic confirmed by peer review - fn_22418 CBlowEffect::SendObjectMessage: logic confirmed by peer review - fn_22420 CCorpse::SendObjectMessage: logic confirmed by peer review - fn_22427 CNumEffect::SendObjectMessage: logic confirmed by peer review Peer-reviewed-by: ragnarok-clanker Reviewed-by: ragnarok-clanker
This commit is contained in:
parent
f14ab7ea91
commit
b722d4e36d
2 changed files with 151 additions and 0 deletions
57
Source/Contents/Actors/EffectActors.h
Normal file
57
Source/Contents/Actors/EffectActors.h
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
#ifndef RAGNAROK_SOURCE_CONTENTS_ACTORS_EFFECTACTORS_H
|
||||
#define RAGNAROK_SOURCE_CONTENTS_ACTORS_EFFECTACTORS_H
|
||||
|
||||
#include "Contents/Actors/RenderObject.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
class CBlowEffect : public CRenderObject {
|
||||
public:
|
||||
~CBlowEffect() override;
|
||||
void SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
) override;
|
||||
};
|
||||
|
||||
class CCorpse : public CRenderObject {
|
||||
public:
|
||||
~CCorpse() override;
|
||||
void SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
) override;
|
||||
|
||||
/* 0138 */ std::uint32_t unknown_0138;
|
||||
/* 013C */ std::uint32_t unknown_013C;
|
||||
};
|
||||
|
||||
class CMasterChaser : public CRenderObject {
|
||||
public:
|
||||
~CMasterChaser() override;
|
||||
|
||||
/* 0138 */ std::uint32_t unknown_0138;
|
||||
/* 013C */ std::uint32_t unknown_013C;
|
||||
};
|
||||
|
||||
class CNumEffect : public CRenderObject {
|
||||
public:
|
||||
~CNumEffect() override;
|
||||
bool Update() override;
|
||||
void SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
) override;
|
||||
|
||||
/* 0138 */ float baseHeight;
|
||||
/* 013C */ float baseScale;
|
||||
};
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN64)
|
||||
static_assert(sizeof(CBlowEffect) == 0x138);
|
||||
static_assert(sizeof(CCorpse) == 0x140);
|
||||
static_assert(sizeof(CMasterChaser) == 0x140);
|
||||
static_assert(sizeof(CNumEffect) == 0x140);
|
||||
static_assert(offsetof(CNumEffect, baseHeight) == 0x138);
|
||||
static_assert(offsetof(CNumEffect, baseScale) == 0x13C);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
#include "Contents/Sound/SoundMaker.h"
|
||||
|
||||
#include "Contents/Actors/EffectActors.h"
|
||||
#include "Contents/Sound/SoundMgr.h"
|
||||
#include "Resource/World/WorldResource.h"
|
||||
#include "Utility/Math/AffineMatrix.h"
|
||||
|
|
@ -22,6 +23,39 @@ CSoundMaker::CSoundMaker(ResourceMgr& resources, JobNames& names, SoundMakerCont
|
|||
this->lastTick = timeGetTime() - 4000u;
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA2370
|
||||
// FUNCTION: fn_22365
|
||||
CBlowEffect::~CBlowEffect() = default;
|
||||
|
||||
// OFFSET: 0x00DA2450
|
||||
// FUNCTION: fn_22367
|
||||
CCorpse::~CCorpse() = default;
|
||||
|
||||
// OFFSET: 0x00DA2720
|
||||
// FUNCTION: fn_22373
|
||||
CMasterChaser::~CMasterChaser() = default;
|
||||
|
||||
// OFFSET: 0x00DA27C0
|
||||
// FUNCTION: fn_22375
|
||||
CNumEffect::~CNumEffect() = default;
|
||||
|
||||
// OFFSET: 0x00DA3980
|
||||
// FUNCTION: fn_22405
|
||||
bool CNumEffect::Update() {
|
||||
const float elapsed = static_cast<float>((timeGetTime() - this->render.unknown_008C) / 24.0);
|
||||
this->render.previousAnimation = this->render.animation;
|
||||
this->render.position[1] = this->baseHeight - elapsed * 0.18f;
|
||||
this->SetColor(static_cast<int>(255.0f - (elapsed + elapsed)), -1, -1, -1);
|
||||
|
||||
if (this->render.scale > 1.0f) {
|
||||
this->render.scale = this->baseScale - elapsed * 0.24f;
|
||||
} else if (this->render.scale < 1.0f) {
|
||||
this->render.scale = 1.0f;
|
||||
}
|
||||
|
||||
return elapsed <= 120.0f;
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA3A60
|
||||
// FUNCTION: fn_22406
|
||||
bool CSoundMaker::Update() {
|
||||
|
|
@ -84,6 +118,66 @@ bool CSoundMaker::Update() {
|
|||
void CSoundMaker::Draw(int) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4970
|
||||
// FUNCTION: fn_22418
|
||||
void CBlowEffect::SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
) {
|
||||
if (message != 14 || a != 0) {
|
||||
CRenderObject::SendObjectMessage(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const float* position = reinterpret_cast<const float*>(b);
|
||||
this->render.position[0] = position[0];
|
||||
this->render.position[1] = position[1];
|
||||
this->render.position[2] = position[2];
|
||||
this->render.visible = 1;
|
||||
this->render.color = (d | e) ? 0xFFFF0000u : 0xFFFFFFFFu;
|
||||
this->render.unknown_008C = timeGetTime();
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4AD0
|
||||
// FUNCTION: fn_22420
|
||||
void CCorpse::SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
) {
|
||||
CRenderObject::SendObjectMessage(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA5610
|
||||
// FUNCTION: fn_22427
|
||||
void CNumEffect::SendObjectMessage(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
) {
|
||||
if (message == 14 && a == 0) {
|
||||
const float* position = reinterpret_cast<const float*>(b);
|
||||
this->render.position[0] = position[0];
|
||||
this->render.position[1] = position[1];
|
||||
this->render.position[2] = position[2];
|
||||
this->render.visible = 1;
|
||||
this->render.position[1] -= 12.0f;
|
||||
this->baseHeight = this->render.position[1];
|
||||
|
||||
this->render.unknown_003C = d;
|
||||
if (d > 9 || d < 0) {
|
||||
this->render.unknown_003C = 0;
|
||||
}
|
||||
|
||||
this->render.unknown_0078 = f;
|
||||
this->render.scale = 5.0f;
|
||||
this->baseScale = 5.0f;
|
||||
this->render.unknown_008C = timeGetTime();
|
||||
return;
|
||||
}
|
||||
|
||||
if (message == 22 && a == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
CRenderObject::SendObjectMessage(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA56E0
|
||||
// FUNCTION: fn_22428
|
||||
void CSoundMaker::SendObjectMessage(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue