mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-25 15:25:07 -04:00
6c3bb08b77
* change field 0x6F2 of daBomb_c to mBombFire * add comments to functions involving mBombTimer, rename field 0x738 to mBombTimer * fixes suggested by crain-32
191 lines
5.0 KiB
C++
191 lines
5.0 KiB
C++
/**
|
|
* d_a_bomb_static.cpp
|
|
* Bomb - Static
|
|
*/
|
|
|
|
#include "d/actor/d_a_bomb.h"
|
|
#include "d/actor/d_a_bomb2.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
|
|
#define L_daBomb_Version 1
|
|
|
|
/* 80067FA0-80067FD0 .text getBombRestTime__8daBomb_cFv */
|
|
s16 daBomb_c::getBombRestTime() {
|
|
_prm_chk_version();
|
|
|
|
return mRestTime;
|
|
}
|
|
|
|
/* 80067FD0-80068000 .text getBombCheck_Flag__8daBomb_cFv */
|
|
s16 daBomb_c::getBombCheck_Flag() {
|
|
_prm_chk_version();
|
|
|
|
return field_0x6F1;
|
|
}
|
|
|
|
/* 80068000-80068034 .text setBombCheck_Flag__8daBomb_cFv */
|
|
void daBomb_c::setBombCheck_Flag() {
|
|
_prm_chk_version();
|
|
|
|
field_0x6F1 = true;
|
|
}
|
|
|
|
/* 80068034-80068068 .text setBombFire_ON__8daBomb_cFv */
|
|
void daBomb_c::setBombFire_ON() {
|
|
_prm_chk_version();
|
|
|
|
mBombFire = true;
|
|
}
|
|
|
|
/* 80068068-800680CC .text setBombNoHit__8daBomb_cFv */
|
|
void daBomb_c::setBombNoHit() {
|
|
_prm_chk_version();
|
|
|
|
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
|
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
|
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
|
mSph.ClrAtSet();
|
|
|
|
field_0x6F3 = true;
|
|
}
|
|
|
|
/* 800680CC-80068104 .text setBombOffCoSet__8daBomb_cFv */
|
|
void daBomb_c::setBombOffCoSet() {
|
|
_prm_chk_version();
|
|
|
|
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
|
}
|
|
|
|
/* 80068104-8006813C .text setBombOnCoSet__8daBomb_cFv */
|
|
void daBomb_c::setBombOnCoSet() {
|
|
_prm_chk_version();
|
|
|
|
mSph.OnCoSPrmBit(CO_SPRM_SET);
|
|
}
|
|
|
|
/* 8006813C-800681CC .text setBombNoEff__8daBomb_cFv */
|
|
void daBomb_c::setBombNoEff() {
|
|
_prm_chk_version();
|
|
|
|
if(mSmoke.mpEmitter) {
|
|
mSmoke.mpEmitter->mpEmitterCallBack = 0;
|
|
mSmoke.mpEmitter->becomeInvalidEmitter();
|
|
}
|
|
mSmoke.mpEmitter = 0;
|
|
|
|
if(mSparks.mpEmitter) {
|
|
mSparks.mpEmitter->mpEmitterCallBack = 0;
|
|
mSparks.mpEmitter->becomeInvalidEmitter();
|
|
}
|
|
mSparks.mpEmitter = 0;
|
|
}
|
|
|
|
/* 800681CC-80068208 .text setBombRestTime__8daBomb_cFs */
|
|
void daBomb_c::setBombRestTime(s16 time) {
|
|
_prm_chk_version();
|
|
|
|
mRestTime = time;
|
|
}
|
|
|
|
/* 80068208-80068244 .text setNoGravityTime__8daBomb_cFs */
|
|
void daBomb_c::setNoGravityTime(s16 time) {
|
|
_prm_chk_version();
|
|
|
|
mNoGravityTime = time;
|
|
}
|
|
|
|
/* 80068244-80068274 .text prm_make__8daBomb_cFQ28daBomb_c7State_ebb */
|
|
int daBomb_c::prm_make(daBomb_c::State_e state, bool param_1, bool param_2) {
|
|
return (((param_2 ? 1 : 0) << 17) | (state | ((param_1 ? 1 : 0) << 16))) | 0x80000000;
|
|
}
|
|
|
|
/* 80068274-800682C0 .text chk_state__8daBomb_cCFQ28daBomb_c7State_e */
|
|
bool daBomb_c::chk_state(daBomb_c::State_e state) const {
|
|
_prm_chk_version();
|
|
|
|
return state == prm_get_state();
|
|
}
|
|
|
|
/* 800682C0-800682F0 .text change_state__8daBomb_cFQ28daBomb_c7State_e */
|
|
void daBomb_c::change_state(daBomb_c::State_e new_state) {
|
|
mBase.mParameters = (mBase.mParameters & ~(((1 << PRM_STATE_W) - 1) << PRM_STATE_S)) | (new_state << PRM_STATE_S); // & 0xFF000000
|
|
|
|
_prm_chk_version();
|
|
}
|
|
|
|
/* 800682F0-8006832C .text prm_get_state__8daBomb_cCFv */
|
|
int daBomb_c::prm_get_state() const {
|
|
_prm_chk_version();
|
|
|
|
return daObj::PrmAbstract(this, PRM_STATE_W, PRM_STATE_S);
|
|
}
|
|
|
|
/* 8006832C-80068340 .text get_explode_instant__8daBomb_cCFv */
|
|
bool daBomb_c::get_explode_instant() const {
|
|
return field_0x784 == true;
|
|
}
|
|
|
|
/* 80068340-80068388 .text prm_get_cheapEff__8daBomb_cCFv */
|
|
bool daBomb_c::prm_get_cheapEff() const {
|
|
_prm_chk_version();
|
|
|
|
return daObj::PrmAbstract(this, PRM_CHEAP_EFF_W, PRM_CHEAP_EFF_S);
|
|
}
|
|
|
|
/* 80068388-800683D0 .text prm_get_angXZero__8daBomb_cCFv */
|
|
bool daBomb_c::prm_get_angXZero() const {
|
|
_prm_chk_version();
|
|
|
|
return daObj::PrmAbstract(this, PRM_ANGXZERO_W, PRM_ANGXZERO_S);
|
|
}
|
|
|
|
/* 800683D0-800683F8 .text prm_get_version__8daBomb_cCFv */
|
|
int daBomb_c::prm_get_version() const {
|
|
return daObj::PrmAbstract(this, PRM_VERSION_W, PRM_VERSION_S);
|
|
}
|
|
|
|
/* 800683F8-80068450 .text _prm_chk_version__8daBomb_cCFv */
|
|
void daBomb_c::_prm_chk_version() const {
|
|
int ver = prm_get_version();
|
|
JUT_ASSERT(0xCE, ver == L_daBomb_Version);
|
|
}
|
|
|
|
/* 80068450-80068488 .text remove_fuse_effect__Q27daBomb25Act_cFv */
|
|
void daBomb2::Act_c::remove_fuse_effect() {
|
|
mSmoke.deleteCallBack();
|
|
mSparks.deleteCallBack();
|
|
}
|
|
|
|
/* 80068488-80068490 .text set_time__Q27daBomb25Act_cFi */
|
|
void daBomb2::Act_c::set_time(int time) {
|
|
mBombTimer = time;
|
|
}
|
|
|
|
/* 80068490-80068498 .text get_time__Q27daBomb25Act_cCFv */
|
|
int daBomb2::Act_c::get_time() const {
|
|
return mBombTimer;
|
|
}
|
|
|
|
/* 80068498-800684A0 .text chk_eat__Q27daBomb25Act_cCFv */
|
|
bool daBomb2::Act_c::chk_eat() const {
|
|
return field_0x745;
|
|
}
|
|
|
|
/* 800684A0-800684AC .text set_eat__Q27daBomb25Act_cFv */
|
|
void daBomb2::Act_c::set_eat() {
|
|
field_0x745 = true;
|
|
}
|
|
|
|
/* 800684AC-800684E0 .text set_no_hit__Q27daBomb25Act_cFv */
|
|
void daBomb2::Act_c::set_no_hit() {
|
|
mSph.OffTgSPrmBit(TG_SPRM_SET);
|
|
mSph.OffCoSPrmBit(CO_SPRM_SET);
|
|
mSph.OffAtSPrmBit(AT_SPRM_SET);
|
|
mSph.ClrAtSet();
|
|
}
|
|
|
|
/* 800684E0-800684F4 .text chk_explode__Q27daBomb25Act_cFv */
|
|
bool daBomb2::Act_c::chk_explode() {
|
|
return mState == 2;
|
|
}
|