Batch #1129 by eAthena: 0 byte-identical, 7 confirmed by peer review. - fn_21116 CRenderObject::SetActionName: logic confirmed by peer review - fn_21125 CGameActor::SetUnknown0305: logic confirmed by peer review - fn_21127 CGameActor::RaiseUnknown03C8: logic confirmed by peer review - fn_21134 CGameActor::SetUnknown02E4: logic confirmed by peer review - fn_21142 CGameActor::SetUnknown02C8: logic confirmed by peer review - fn_21146 CGameActor::SetUnknown0260: logic confirmed by peer review - fn_21151 CRenderObject::SetSpriteName: logic confirmed by peer review Reviewed-by: ragnarok-clanker
237 lines
6.9 KiB
C++
237 lines
6.9 KiB
C++
#include "Contents/Actors/RenderObject.h"
|
|
|
|
#include "Client/Replay.h"
|
|
#include "Contents/Actors/GameActor.h"
|
|
#include "Resource/ResourceMgr.h"
|
|
#include "Resource/Sprites/ActionResource.h"
|
|
#include "Resource/Sprites/SpriteResource.h"
|
|
#include "Utility/Math/ScalarConversion.h"
|
|
|
|
#include <windows.h>
|
|
#include <timeapi.h>
|
|
|
|
// OFFSET: 0x00CA8730
|
|
// FUNCTION: fn_20991
|
|
CRenderObject::CRenderObject(ResourceMgr& resources, JobNames& names) : render(resources, names) {
|
|
}
|
|
|
|
// OFFSET: 0x00CA8F90
|
|
// FUNCTION: fn_20998
|
|
CRenderObject::~CRenderObject() = default;
|
|
|
|
// OFFSET: 0x00CAFDC0
|
|
// FUNCTION: fn_21089
|
|
bool CRenderObject::Update() {
|
|
return false;
|
|
}
|
|
|
|
// OFFSET: 0x00CBF920
|
|
// FUNCTION: fn_21115
|
|
void CRenderObject::SendObjectMessage(CGameObject*, int, int, int, int, int, int, int, int, int, int, int, int, int, int) {
|
|
}
|
|
|
|
// OFFSET: 0x00CBF930
|
|
// FUNCTION: fn_21116
|
|
void CRenderObject::SetActionName(ResourceMgr& resources, const char* name) {
|
|
if (this->render.action) {
|
|
this->render.action->Release();
|
|
}
|
|
|
|
this->render.action = static_cast<CActRes*>(resources.Load(name));
|
|
|
|
if (this->render.action) {
|
|
this->render.action->AddRef();
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00CC2D40
|
|
// FUNCTION: fn_21144
|
|
void CRenderObject::SetScreenBounds(const float*, float, float) {
|
|
}
|
|
|
|
// OFFSET: 0x00CC2DA0
|
|
// FUNCTION: fn_21146
|
|
void CGameActor::SetUnknown0260(int value) {
|
|
this->unknown_0260 = value & 1;
|
|
}
|
|
|
|
// OFFSET: 0x00CC2E00
|
|
// FUNCTION: fn_21151
|
|
void CRenderObject::SetSpriteName(ResourceMgr& resources, const char* name) {
|
|
if (this->render.sprite) {
|
|
this->render.sprite->Release();
|
|
}
|
|
|
|
this->render.sprite = static_cast<CSprRes*>(resources.Load(name));
|
|
|
|
if (this->render.sprite) {
|
|
this->render.sprite->AddRef();
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00CC3DC0
|
|
// FUNCTION: fn_21154
|
|
void CRenderObject::SetScreenPosition(float x, float y) {
|
|
this->render.screenX = TruncateToInt(x);
|
|
this->render.screenY = TruncateToInt(y);
|
|
}
|
|
|
|
// OFFSET: 0x00CBFAE0
|
|
// FUNCTION: fn_21118
|
|
void CRenderObject::SetAnimation(unsigned animation, int, int repeat) {
|
|
float speed = this->render.action->Speed(animation);
|
|
if (g_replayAnimationScaling != 0) {
|
|
speed *= Replay::Instance().AnimationScale();
|
|
}
|
|
if (speed > 0.0f) {
|
|
this->render.speed = speed;
|
|
}
|
|
if (this->render.speed < 1.0f) {
|
|
if (g_replayAnimationScaling != 0) {
|
|
speed = Replay::Instance().AnimationScale();
|
|
if (speed > 0.0f) {
|
|
this->render.speed = speed;
|
|
}
|
|
} else {
|
|
this->render.speed = 1.0f;
|
|
}
|
|
}
|
|
speed = this->render.speed * this->render.unknown_0064;
|
|
if (g_replayAnimationScaling != 0) {
|
|
speed *= Replay::Instance().AnimationScale();
|
|
}
|
|
if (speed > 0.0f) {
|
|
this->render.speed = speed;
|
|
}
|
|
|
|
this->render.animation = animation;
|
|
this->render.previousAnimation = animation;
|
|
this->render.unknown_003C = 0;
|
|
this->render.unknown_006C = repeat;
|
|
this->render.unknown_009C[1] = 0;
|
|
this->render.unknown_0060 = 1.0f;
|
|
this->render.unknown_0064 = 1.0f;
|
|
this->render.unknown_00C8 = 0;
|
|
this->render.unknown_00D8 = 0;
|
|
this->render.unknown_00DC = 0;
|
|
}
|
|
|
|
// OFFSET: 0x00CBFC00
|
|
// FUNCTION: fn_21119
|
|
void CRenderObject::SetColor(int alpha, int red, int green, int blue) {
|
|
if (alpha != -1) {
|
|
this->render.color = (this->render.color & 0x00FFFFFFu) | (static_cast<std::uint32_t>(alpha) << 24);
|
|
}
|
|
if (red != -1) {
|
|
this->render.color = (this->render.color & 0xFF00FFFFu) | ((static_cast<std::uint32_t>(red) & 0xFFu) << 16);
|
|
}
|
|
if (green != -1) {
|
|
this->render.color = (this->render.color & 0xFFFF00FFu) | ((static_cast<std::uint32_t>(green) & 0xFFu) << 8);
|
|
}
|
|
if (blue != -1) {
|
|
this->render.color = (this->render.color & 0xFFFFFF00u) | static_cast<unsigned char>(blue);
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00CC1C20
|
|
// FUNCTION: fn_21125
|
|
void CGameActor::SetUnknown0305(unsigned char value, int extra) {
|
|
this->unknown_0305 = value;
|
|
this->unknown_0308 = extra;
|
|
}
|
|
|
|
// OFFSET: 0x00CC1D20
|
|
// FUNCTION: fn_21127
|
|
void CGameActor::RaiseUnknown03C8(int value) {
|
|
if (value > 0 && this->unknown_03C8 < value) {
|
|
this->unknown_03C8 = value;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00CC1E70
|
|
// FUNCTION: fn_21130
|
|
void CRenderObject::SetSequenceDeadline(std::uint32_t duration) {
|
|
this->render.sequenceDeadline = timeGetTime() + duration;
|
|
}
|
|
|
|
// OFFSET: 0x00CC1E90
|
|
// FUNCTION: fn_21131
|
|
void CRenderObject::SetSequenceInterval(unsigned char interval) {
|
|
this->render.unknown_00C2 = interval;
|
|
}
|
|
|
|
// OFFSET: 0x00CC1EA0
|
|
// FUNCTION: fn_21132
|
|
void CRenderObject::SetAnimationSequence(
|
|
unsigned char animation0, unsigned char frame0, unsigned char animation1, unsigned char frame1,
|
|
unsigned char animation2, unsigned char frame2, unsigned char animation3, unsigned char frame3,
|
|
unsigned char animation4, unsigned char frame4, int timed, std::uint32_t duration, int loop
|
|
) {
|
|
this->render.sequenceAnimations[0] = animation0;
|
|
this->render.sequenceFrames[0] = frame0;
|
|
this->render.sequenceAnimations[1] = animation1;
|
|
this->render.sequenceFrames[1] = frame1;
|
|
this->render.sequenceAnimations[2] = animation2;
|
|
this->render.sequenceFrames[2] = frame2;
|
|
this->render.sequenceAnimations[3] = animation3;
|
|
this->render.sequenceFrames[3] = frame3;
|
|
this->render.sequenceAnimations[4] = animation4;
|
|
this->render.sequenceFrames[4] = frame4;
|
|
this->render.sequenceAnimation = animation0;
|
|
this->render.sequenceFrame = frame0;
|
|
this->render.sequenceIndex = 0;
|
|
this->render.sequenceLast = 4;
|
|
this->render.sequenceLoop = loop;
|
|
this->render.sequenceTimed = timed;
|
|
this->render.sequenceFinished = 0;
|
|
this->render.unknown_00D8 = 1;
|
|
this->render.unknown_00C8 = 0;
|
|
this->render.unknown_00DC = 0;
|
|
this->render.sequenceDeadline = timed != 0 ? timeGetTime() + duration : 0;
|
|
this->render.sequenceTick = 1;
|
|
}
|
|
|
|
// OFFSET: 0x00CC1FA0
|
|
// FUNCTION: fn_21133
|
|
void CRenderObject::SetFrameSequence(
|
|
unsigned char animation, unsigned char firstFrame, unsigned char lastFrame, unsigned char finishAnimation,
|
|
unsigned char finishFrame, int timed, std::uint32_t duration, int loop
|
|
) {
|
|
this->render.sequenceAnimation = animation;
|
|
this->render.sequenceFrame = firstFrame;
|
|
this->render.sequenceIndex = firstFrame;
|
|
this->render.sequenceLast = lastFrame;
|
|
this->render.sequenceFinishAnimation = finishAnimation;
|
|
this->render.sequenceFinishFrame = finishFrame;
|
|
this->render.sequenceLoop = loop;
|
|
this->render.sequenceTimed = timed;
|
|
this->render.sequenceFinished = 0;
|
|
this->render.unknown_00C8 = 1;
|
|
this->render.unknown_00DC = 0;
|
|
this->render.unknown_00D8 = 0;
|
|
this->render.sequenceDeadline = timed != 0 ? timeGetTime() + duration : 0;
|
|
this->render.sequenceTick = 1;
|
|
}
|
|
|
|
// OFFSET: 0x00CC2050
|
|
// FUNCTION: fn_21134
|
|
void CGameActor::SetUnknown02E4(int value) {
|
|
this->unknown_02E4 = value;
|
|
}
|
|
|
|
// OFFSET: 0x00CC2780
|
|
// FUNCTION: fn_21140
|
|
void CRenderObject::SetAnimationSpeed(float speed) {
|
|
if (g_replayAnimationScaling != 0) {
|
|
speed *= Replay::Instance().AnimationScale();
|
|
}
|
|
if (speed > 0.0f) {
|
|
this->render.speed = speed;
|
|
}
|
|
}
|
|
|
|
// OFFSET: 0x00CC2810
|
|
// FUNCTION: fn_21142
|
|
void CGameActor::SetUnknown02C8(int value) {
|
|
this->unknown_02C8 = value;
|
|
}
|