mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
d_a_tag_waterlevel
This commit is contained in:
+1
-1
@@ -1321,7 +1321,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_tag_light"),
|
||||
ActorRel(Matching, "d_a_tag_msg"),
|
||||
ActorRel(NonMatching, "d_a_tag_photo"),
|
||||
ActorRel(NonMatching, "d_a_tag_waterlevel"),
|
||||
ActorRel(Matching, "d_a_tag_waterlevel"),
|
||||
ActorRel(NonMatching, "d_a_tama"),
|
||||
ActorRel(Matching, "d_a_tbox", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_tpota"),
|
||||
|
||||
@@ -2,22 +2,36 @@
|
||||
#define D_A_TAG_WATERLEVEL_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/d_a_obj.h"
|
||||
|
||||
namespace daTagWaterlevel {
|
||||
class Act_c : public fopAc_ac_c {
|
||||
public:
|
||||
void get_now() {}
|
||||
void get_state() {}
|
||||
void prm_get_sch() const {}
|
||||
enum Prm_e {
|
||||
PRM_SCH_W = 8,
|
||||
PRM_SCH_S = 0,
|
||||
};
|
||||
enum State_e {
|
||||
STATE_1 = 1,
|
||||
STATE_2 = 2,
|
||||
};
|
||||
|
||||
static f32 get_now() { return M_now; }
|
||||
static State_e get_state() { return M_state; }
|
||||
inline u8 prm_get_sch() const { return daObj::PrmAbstract(this, PRM_SCH_W, PRM_SCH_S); }
|
||||
|
||||
s32 _create();
|
||||
BOOL _delete();
|
||||
bool _delete();
|
||||
void bgm_proc();
|
||||
BOOL _execute();
|
||||
BOOL _draw();
|
||||
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
|
||||
static State_e M_state;
|
||||
static f32 M_now;
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x290 */ f32 field_0x290;
|
||||
/* 0x294 */ s32 mAction;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -2202,6 +2202,10 @@ inline void dComIfGp_event_offEventFlag(s16 flag) {
|
||||
g_dComIfG_gameInfo.play.getEvent().offEventFlag(flag);
|
||||
}
|
||||
|
||||
inline BOOL dComIfGp_event_chkEventFlag(s16 flag) {
|
||||
return g_dComIfG_gameInfo.play.getEvent().chkEventFlag(flag);
|
||||
}
|
||||
|
||||
inline void dComIfGp_event_remove() {
|
||||
g_dComIfG_gameInfo.play.getEvent().remove();
|
||||
}
|
||||
|
||||
@@ -442,5 +442,6 @@ void dKy_get_seacolor(GXColor* amb, GXColor* dif);
|
||||
cXyz dKy_get_orion_pos();
|
||||
cXyz dKy_get_hokuto_pos();
|
||||
void dKy_DayProc();
|
||||
u8 dKy_get_schbit();
|
||||
|
||||
#endif /* D_KANKYO_D_KANKYO_H */
|
||||
|
||||
@@ -170,4 +170,12 @@ inline void mDoAud_cbPracticeStop() {
|
||||
mDoAud_zelAudio_c::getInterface()->cbPracticeStop();
|
||||
}
|
||||
|
||||
inline void mDoAud_stWaterLevelUp() {
|
||||
mDoAud_zelAudio_c::getInterface()->stWaterLevelUp();
|
||||
}
|
||||
|
||||
inline void mDoAud_stWaterLevelDown() {
|
||||
mDoAud_zelAudio_c::getInterface()->stWaterLevelDown();
|
||||
}
|
||||
|
||||
#endif /* M_DO_AUDIO_H */
|
||||
|
||||
@@ -4,29 +4,158 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_tag_waterlevel.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_a_obj.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_kankyo.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
|
||||
/* 00000078-00000128 .text _create__Q215daTagWaterlevel5Act_cFv */
|
||||
s32 daTagWaterlevel::Act_c::_create() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
namespace daTagWaterlevel {
|
||||
namespace {
|
||||
struct Attr_c {
|
||||
f32 field_0x00;
|
||||
f32 field_0x04;
|
||||
f32 field_0x08;
|
||||
f32 field_0x0c;
|
||||
};
|
||||
|
||||
/* 00000128-00000130 .text _delete__Q215daTagWaterlevel5Act_cFv */
|
||||
BOOL daTagWaterlevel::Act_c::_delete() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
static const Attr_c L_attr = {
|
||||
0.005f, 0.05f, 0.015f, 0.005f,
|
||||
};
|
||||
|
||||
/* 00000130-000001D8 .text bgm_proc__Q215daTagWaterlevel5Act_cFv */
|
||||
void daTagWaterlevel::Act_c::bgm_proc() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
inline const Attr_c & attr() { return L_attr; }
|
||||
}
|
||||
|
||||
/* 000001D8-00000364 .text _execute__Q215daTagWaterlevel5Act_cFv */
|
||||
BOOL daTagWaterlevel::Act_c::_execute() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
/* 00000078-000001D4 .text _create__Q28daTagRet5Act_cFv */
|
||||
s32 Act_c::_create() {
|
||||
fopAcM_SetupActor(this, Act_c);
|
||||
|
||||
/* 00000364-0000036C .text _draw__Q215daTagWaterlevel5Act_cFv */
|
||||
BOOL daTagWaterlevel::Act_c::_draw() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
if ((prm_get_sch() & dKy_get_schbit() & 0xFF)) {
|
||||
M_now = 1.0f;
|
||||
} else {
|
||||
M_now = 0.0f;
|
||||
}
|
||||
|
||||
field_0x290 = 0.0f;
|
||||
mAction = 0;
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 00000128-00000130 .text _delete__Q215daTagWaterlevel5Act_cFv */
|
||||
bool Act_c::_delete() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000130-000001D8 .text bgm_proc__Q215daTagWaterlevel5Act_cFv */
|
||||
void Act_c::bgm_proc() {
|
||||
if (cLib_checkBit(get_state(), STATE_1)) {
|
||||
if (get_now() > 0.95f && mAction != 1) {
|
||||
mAction = 1;
|
||||
mDoAud_stWaterLevelUp();
|
||||
}
|
||||
} else {
|
||||
if (get_now() < 0.05f && mAction != 2) {
|
||||
mAction = 2;
|
||||
mDoAud_stWaterLevelDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 000001D8-00000364 .text _execute__Q215daTagWaterlevel5Act_cFv */
|
||||
bool Act_c::_execute() {
|
||||
f32 target;
|
||||
u8 prm_sch = prm_get_sch();
|
||||
u8 sch_bit = dKy_get_schbit();
|
||||
cLib_offBit(M_state, STATE_2);
|
||||
|
||||
if ((prm_sch & sch_bit & 0xFF)) {
|
||||
target = 1.0f;
|
||||
if (!cLib_checkBit(get_state(), STATE_1)) {
|
||||
cLib_onBit(M_state, STATE_2);
|
||||
cLib_onBit(M_state, STATE_1);
|
||||
}
|
||||
} else {
|
||||
target = 0.0f;
|
||||
if (cLib_checkBit(get_state(), STATE_1)) {
|
||||
cLib_onBit(M_state, STATE_2);
|
||||
cLib_offBit(M_state, STATE_1);
|
||||
}
|
||||
}
|
||||
|
||||
if (dComIfGp_event_runCheck() && dComIfGp_event_chkEventFlag(2)) {
|
||||
if (get_now() < 0.5f) {
|
||||
M_now = 0.0f;
|
||||
} else {
|
||||
M_now = 1.0f;
|
||||
}
|
||||
} else {
|
||||
if (fabsf(target - get_now()) < attr().field_0x0c) {
|
||||
M_now = target;
|
||||
field_0x290 = 0.0f;
|
||||
} else {
|
||||
field_0x290 += attr().field_0x00;
|
||||
if (field_0x290 > attr().field_0x08)
|
||||
field_0x290 = attr().field_0x08;
|
||||
if (field_0x290 < attr().field_0x0c)
|
||||
field_0x290 = attr().field_0x0c;
|
||||
cLib_addCalc(&M_now, target, attr().field_0x04, field_0x290, attr().field_0x0c);
|
||||
}
|
||||
}
|
||||
|
||||
bgm_proc();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 00000364-0000036C .text _draw__Q215daTagWaterlevel5Act_cFv */
|
||||
bool Act_c::_draw() {
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace {
|
||||
s32 Mthd_Create(void* i_this) {
|
||||
return ((Act_c*)i_this)->_create();
|
||||
}
|
||||
|
||||
BOOL Mthd_Delete(void* i_this) {
|
||||
return ((Act_c*)i_this)->_delete();
|
||||
}
|
||||
|
||||
BOOL Mthd_Execute(void* i_this) {
|
||||
return ((Act_c*)i_this)->_execute();
|
||||
}
|
||||
|
||||
BOOL Mthd_Draw(void* i_this) {
|
||||
return ((Act_c*)i_this)->_draw();
|
||||
}
|
||||
|
||||
BOOL Mthd_IsDelete(void* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static actor_method_class Mthd_Table = {
|
||||
(process_method_func)Mthd_Create,
|
||||
(process_method_func)Mthd_Delete,
|
||||
(process_method_func)Mthd_Execute,
|
||||
(process_method_func)Mthd_IsDelete,
|
||||
(process_method_func)Mthd_Draw,
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
actor_process_profile_definition g_profile_Tag_Waterlevel = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 9,
|
||||
/* ListPrio */ fpcLy_CURRENT_e,
|
||||
/* ProcName */ PROC_Tag_Waterlevel,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
|
||||
/* Size */ sizeof(daTagWaterlevel::Act_c),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x0128,
|
||||
/* Actor SubMtd */ &daTagWaterlevel::Mthd_Table,
|
||||
/* Status */ fopAcStts_UNK40000_e | fopAcStts_CULL_e,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "d/actor/d_a_obj_movebox.h"
|
||||
#include "d/actor/d_a_tag_kb_item.h"
|
||||
#include "d/actor/d_a_item.h"
|
||||
#include "d/actor/d_a_tag_waterlevel.h"
|
||||
#include "d/actor/d_a_title.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/actor/d_a_npc_kamome.h"
|
||||
@@ -37,6 +38,9 @@ f32 daObjPirateship::getShipOffsetY(s16* param_1, s16* param_2, f32 param_3) {
|
||||
return param_3 * cM_ssin(*param_1);
|
||||
}
|
||||
|
||||
f32 daTagWaterlevel::Act_c::M_now;
|
||||
u32 daTagWaterlevel::Act_c::M_state;
|
||||
|
||||
daAgb_c::daAgb_Flags daAgb_c::mFlags;
|
||||
u8 daAgbsw0_c::mFigureDispose;
|
||||
u8 daAgbsw0_c::mFigureBeat;
|
||||
|
||||
Reference in New Issue
Block a user