tp/src/d/d_scope.cpp

230 lines
6.9 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d/d_scope
//
#include "d/d_scope.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "d/d_com_inf_game.h"
#include "d/d_meter2_info.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "m_Do/m_Do_graphic.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
/* 803BB618-803BB624 018738 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803BB648-803BB66C 018768 0024+00 2/3 0/0 0/0 .data init_process */
typedef void (dScope_c::*initFunc)();
initFunc init_process[] = {
&dScope_c::open_init,
&dScope_c::move_init,
&dScope_c::close_init,
};
/* 803BB690-803BB6B4 0187B0 0024+00 1/2 0/0 0/0 .data move_process */
typedef void (dScope_c::*moveFunc)();
moveFunc move_process[] = {
&dScope_c::open_proc,
&dScope_c::move_proc,
&dScope_c::close_proc,
};
/* 80193690-80193960 18DFD0 02D0+00 0/0 1/1 0/0 .text __ct__8dScope_cFUc */
dScope_c::dScope_c(u8 param_0) : field_0x58(-1), field_0x5c(-1) {
field_0x8d = param_0;
ResTIMG* mp_image = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "wipe_00.bti");
mHawkEyeScrn = NULL;
mHawkEyeRootPane = NULL;
mZoomInOutScrn = NULL;
mZoomInOutRootPane = NULL;
for (int i = 0; i < 3; i++) {
mHawkEyePanes[i] = NULL;
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
mZoomInOutPanes[i][j] = NULL;
}
}
mpWipeTex = new J2DPicture(mp_image);
mpWipeTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mWidth = mp_image->width;
mHeight = mp_image->height;
mp_image = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
mpBlackTex = new J2DPicture(mp_image);
mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mScale = 3.0f;
mAlpha = 0.0f;
mOpenTimer = 0;
field_0x8a = 0;
mProcess = PROC_OPEN;
mIsDead = false;
(this->*init_process[mProcess])();
}
/* 8019396C-80193B90 18E2AC 0224+00 1/0 0/0 0/0 .text __dt__8dScope_cFv */
dScope_c::~dScope_c() {
if (mHawkEyeScrn != NULL) {
delete mHawkEyeScrn;
mHawkEyeScrn = NULL;
}
if (mHawkEyeRootPane != NULL) {
delete mHawkEyeRootPane;
mHawkEyeRootPane = NULL;
}
for (int i = 0; i < 3; i++) {
if (mHawkEyePanes[i] != NULL) {
delete mHawkEyePanes[i];
mHawkEyePanes[i] = NULL;
}
}
if (mZoomInOutScrn != NULL) {
delete mZoomInOutScrn;
mZoomInOutScrn = NULL;
}
if (mZoomInOutRootPane != NULL) {
delete mZoomInOutRootPane;
mZoomInOutRootPane = NULL;
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
if (mZoomInOutPanes[i][j] != NULL) {
delete mZoomInOutPanes[i][j];
mZoomInOutPanes[i][j] = NULL;
}
}
}
delete mpWipeTex;
mpWipeTex = NULL;
delete mpBlackTex;
mpBlackTex = NULL;
dMeter2Info_setScopeZoomPointer(0);
}
/* 80193B90-80193C68 18E4D0 00D8+00 1/0 0/0 0/0 .text _execute__8dScope_cFUl */
int dScope_c::_execute(u32) {
u8 old_proc = mProcess;
(this->*move_process[mProcess])();
if (!dComIfGp_checkCameraAttentionStatus(0, 8)) {
mProcess = PROC_CLOSE;
}
if (mProcess != old_proc) {
(this->*init_process[mProcess])();
}
if (mProcess != PROC_CLOSE) {
dComIfGp_setCStickStatusForce(61, 10, 3);
if (dComIfGp_checkPlayerStatus0(0, 0x1000)) {
dComIfGp_setRStatusForce(0x11, 3);
}
}
return 1;
}
/* 80193C68-80193FA0 18E5A8 0338+00 1/0 0/0 0/0 .text draw__8dScope_cFv */
void dScope_c::draw() {
dComIfGp_getCurrentGrafPort()->setup2D();
f32 temp_f1 = mScale;
f32 temp_f31 = mWidth * temp_f1;
f32 temp_f30 = mHeight * temp_f1;
u8 alpha = mAlpha * 255.0f;
if (dComIfGp_checkPlayerStatus0(0, 0x1000)) {
J2DDrawLine(304.0f, mDoGph_gInf_c::getMinYF(), 304.0f, mDoGph_gInf_c::getMaxYF(),
JUtility::TColor(255, 0, 0, alpha), 6);
J2DDrawLine(mDoGph_gInf_c::getMinXF(), 224.0f, mDoGph_gInf_c::getMaxXF(), 224.0f,
JUtility::TColor(255, 0, 0, alpha), 6);
}
mpWipeTex->setAlpha(alpha);
mpBlackTex->setAlpha(alpha);
f32 temp_f29 = 304.0f - temp_f31;
f32 temp_f28 = 304.0f + temp_f31;
f32 temp_f27 = 224.0f - temp_f30;
f32 temp_f26 = 224.0f + temp_f30;
mpWipeTex->draw(temp_f29, temp_f27, temp_f31, temp_f30, false, false, false);
mpWipeTex->draw(304.0f, temp_f27, temp_f31, temp_f30, true, false, false);
mpWipeTex->draw(temp_f29, 224.0f, temp_f31, temp_f30, false, true, false);
mpWipeTex->draw(304.0f, 224.0f, temp_f31, temp_f30, true, true, false);
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
mDoGph_gInf_c::getWidthF(), temp_f27 - mDoGph_gInf_c::getMinYF(), false, false,
false);
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), temp_f26, mDoGph_gInf_c::getWidthF(),
mDoGph_gInf_c::getMaxYF() - temp_f26, false, false, false);
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), temp_f27, temp_f29 - mDoGph_gInf_c::getMinXF(),
temp_f26 - temp_f27, false, false, false);
mpBlackTex->draw(temp_f28, temp_f27, mDoGph_gInf_c::getMaxXF() - temp_f28, temp_f26 - temp_f27,
false, false, false);
}
/* 80193FA0-80193FB4 18E8E0 0014+00 1/0 0/0 0/0 .text isDead__8dScope_cFv */
bool dScope_c::isDead() {
return mIsDead != false ? 1 : 0;
}
/* 80193FB4-80193FD0 18E8F4 001C+00 1/0 0/0 0/0 .text open_init__8dScope_cFv */
void dScope_c::open_init() {
mScale = 3.0f;
mAlpha = 0.0f;
mOpenTimer = 0;
}
/* 80193FD0-80194048 18E910 0078+00 1/0 0/0 0/0 .text open_proc__8dScope_cFv */
void dScope_c::open_proc() {
mOpenTimer++;
mScale = 3.0f - (mOpenTimer / 5.0f) * 1.5f;
mAlpha = 1.0f;
if (mOpenTimer >= 5) {
mScale = 1.5f;
mAlpha = 1.0f;
mProcess = PROC_MOVE;
}
}
/* 80194048-8019404C 18E988 0004+00 1/0 0/0 0/0 .text move_init__8dScope_cFv */
void dScope_c::move_init() {}
/* 8019404C-80194050 18E98C 0004+00 1/0 0/0 0/0 .text move_proc__8dScope_cFv */
void dScope_c::move_proc() {}
/* 80194050-80194054 18E990 0004+00 1/0 0/0 0/0 .text close_init__8dScope_cFv */
void dScope_c::close_init() {}
/* 80194054-801940D4 18E994 0080+00 1/0 0/0 0/0 .text close_proc__8dScope_cFv */
void dScope_c::close_proc() {
if (mOpenTimer > 0) {
mOpenTimer--;
mScale = 3.0f - (mOpenTimer / 5.0f) * 1.5f;
mAlpha = 1.0f;
} else {
mScale = 3.0f;
mAlpha = 0.0f;
mIsDead = true;
}
}