From c01eb698cdb4f36f6af0fc31990efb884b5ed260 Mon Sep 17 00:00:00 2001 From: Kelebek1 Date: Thu, 28 Aug 2025 02:08:38 +0100 Subject: [PATCH] d_a_gy_ctrl --- configure.py | 2 +- include/d/actor/d_a_gy.h | 4 +- include/d/actor/d_a_gy_ctrl.h | 59 ++-- src/d/actor/d_a_gy_ctrl.cpp | 487 +++++++++++++++++++++++++++++++--- 4 files changed, 495 insertions(+), 57 deletions(-) diff --git a/configure.py b/configure.py index 0d75077c9..1e5208042 100755 --- a/configure.py +++ b/configure.py @@ -1497,7 +1497,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_door12"), ActorRel(Matching, "d_a_fallrock"), ActorRel(Matching, "d_a_ff"), - ActorRel(NonMatching, "d_a_gy_ctrl"), + ActorRel(Equivalent, "d_a_gy_ctrl"), ActorRel(NonMatching, "d_a_himo3"), ActorRel(NonMatching, "d_a_hmlif"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_hys"), diff --git a/include/d/actor/d_a_gy.h b/include/d/actor/d_a_gy.h index 4f8fcde04..ac15ea541 100644 --- a/include/d/actor/d_a_gy.h +++ b/include/d/actor/d_a_gy.h @@ -50,7 +50,9 @@ public: bool _delete(); public: - /* 0x2AC */ u8 m2AC[0x2D4 - 0x2AC]; + /* 0x2AC */ u8 m2AC[0x2B0 - 0x2AC]; + /* 0x2B0 */ s32 m2B0; + /* 0x2B4 */ u8 m2B4[0x2D4 - 0x2B4]; /* 0x2D4 */ mDoExt_McaMorf* mpMorf; /* 0x2D8 */ mDoExt_invisibleModel m2D8; /* 0x2E0 */ dBgS_Acch mAcch; diff --git a/include/d/actor/d_a_gy_ctrl.h b/include/d/actor/d_a_gy_ctrl.h index 5e9d64096..d9ca31182 100644 --- a/include/d/actor/d_a_gy_ctrl.h +++ b/include/d/actor/d_a_gy_ctrl.h @@ -2,23 +2,26 @@ #define D_A_GY_CTRL_H #include "f_op/f_op_actor.h" +#include "d/d_cc_d.h" +#include "d/d_bg_s_lin_chk.h" class daGy_Ctrl_c : public fopAc_ac_c { public: enum Proc_e { - + PROC_0_e, + PROC_1_e, }; void getMode() {} void isTargetPlayer() {} void isTargetPlayerShip() {} - void searchNearActor(fopAc_ac_c*); + void* searchNearActor(fopAc_ac_c*); void setTarget(); - void setPathTargetPos(); - void getWaterY(cXyz&); - void lineCheck(cXyz*, cXyz*); - void checkPath(); + bool setPathTargetPos(); + f32 getWaterY(cXyz&); + bool lineCheck(cXyz*, cXyz*); + bool checkPath(); void setPathPos(); void modeProc(Proc_e, int); void modeSwWaitInit(); @@ -34,22 +37,42 @@ public: bool _draw(); void createInitNoArer(); void createInit(); - void getParam(unsigned long, unsigned char, unsigned char); + u8 getParam(unsigned long, unsigned char, unsigned char); void getArg(); - void checkGyCtrlExist(); + bool checkGyCtrlExist(); cPhs_State _create(); bool _delete(); public: - /* Place member variables here */ -}; - -class daGy_Ctrl_HIO_c { -public: - daGy_Ctrl_HIO_c(); - -public: - /* Place member variables here */ -}; + /* 0x290 */ cXyz m290[5]; + /* 0x2CC */ cXyz m2CC[5]; + /* 0x308 */ s16 m308[5]; + /* 0x312 */ u8 m312[5]; + /* 0x318 */ f32 m318; + /* 0x31C */ s32 m31C; + /* 0x320 */ s32 m320; + /* 0x324 */ int m324; + /* 0x328 */ u8 m328; + /* 0x329 */ u8 m329; + /* 0x32C */ f32 m32C; + /* 0x330 */ u8 m330; + /* 0x331 */ u8 m331; + /* 0x334 */ s32 m334; + /* 0x338 */ cXyz m338; + /* 0x344 */ u8 m344; + /* 0x348 */ f32 m348; + /* 0x34C */ s16 m34C; + /* 0x350 */ int m350; + /* 0x354 */ u8 m354[0x358 - 0x354]; + /* 0x358 */ int m358; + /* 0x35C */ s32 m35C; + /* 0x360 */ fpc_ProcID m360[5]; + /* 0x374 */ bool m374[5]; + /* 0x37C */ dBgS_ObjLinChk mLinChk; + /* 0x3E8 */ u8 m3E8; + /* 0x3EC */ cXyz m3EC[16]; + /* 0x4AC */ bool m4AC; + /* 0x4B0 */ int m4B0; +}; // size = 0x4B4 #endif /* D_A_GY_CTRL_H */ diff --git a/src/d/actor/d_a_gy_ctrl.cpp b/src/d/actor/d_a_gy_ctrl.cpp index 43f284224..0cc6fd90f 100644 --- a/src/d/actor/d_a_gy_ctrl.cpp +++ b/src/d/actor/d_a_gy_ctrl.cpp @@ -5,147 +5,560 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep #include "d/actor/d_a_gy_ctrl.h" +#include "d/actor/d_a_ship.h" +#include "d/actor/d_a_gy.h" #include "d/d_procname.h" #include "d/d_priority.h" +#include "d/d_s_play.h" +#include "d/d_com_inf_game.h" +#include "d/d_bg_s_func.h" +#include "d/d_camera.h" +#include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_hostIO.h" + +class daGy_Ctrl_HIO_c : public mDoHIO_entry_c { +public: + daGy_Ctrl_HIO_c(); + virtual ~daGy_Ctrl_HIO_c(); + + void genMessage(JORMContext*); + +public: + /* 0x04 */ u8 m04; + /* 0x05 */ u8 m05; + /* 0x06 */ s16 m06; + /* 0x08 */ s16 m08; + /* 0x0A */ s16 m0A; + /* 0x0C */ s16 m0C; + /* 0x10 */ f32 m10; + /* 0x14 */ u8 m14[0x4]; + /* 0x18 */ f32 m18; + /* 0x1C */ f32 m1C; + /* 0x20 */ f32 m20; + /* 0x24 */ f32 m24; + /* 0x28 */ f32 m28; + /* 0x2C */ f32 m2C; +}; // size = 0x30 + +static daGy_Ctrl_HIO_c l_HIO; /* 000000EC-00000170 .text __ct__15daGy_Ctrl_HIO_cFv */ daGy_Ctrl_HIO_c::daGy_Ctrl_HIO_c() { - /* Nonmatching */ + m04 = 0; + m10 = 10.0f; + m06 = 100; + m08 = 240; + m05 = 0; + m2C = 10.0f; + m20 = 10000.0f; + m24 = DEMO_SELECT(1000.0f, 500.0f); + m28 = DEMO_SELECT(-100.0f, -500.0f); + m1C = 700.0f; + m0A = 200; + m18 = 1000.0f; + m0C = 250; } /* 000001B8-000001E4 .text searchNearActor_CB__FPvPv */ -void searchNearActor_CB(void*, void*) { - /* Nonmatching */ +void* searchNearActor_CB(void* arg0, void* arg1) { + return ((daGy_Ctrl_c*)arg1)->searchNearActor((fopAc_ac_c*)arg0); } /* 000001E4-0000029C .text searchNearActor__11daGy_Ctrl_cFP10fopAc_ac_c */ -void daGy_Ctrl_c::searchNearActor(fopAc_ac_c*) { - /* Nonmatching */ +void* daGy_Ctrl_c::searchNearActor(fopAc_ac_c* arg1) { + if (fopAc_IsActor(arg1)) { + f32 dVar3 = fopAcM_searchActorDistanceXZ(this, arg1); + if (m328 == 0 && fpcM_GetName(arg1) == PROC_GY_CTRLB && dVar3 < 6000.0f) { + return arg1; + } + + if (fpcM_GetName(arg1) == PROC_DAIOCTA || fpcM_GetName(arg1) == PROC_OBJ_IKADA || fpcM_GetName(arg1) == PROC_NPC_SO) { + if (dVar3 < 6000.0f) { + return arg1; + } + } + } + return NULL; } /* 0000029C-00000450 .text setTarget__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::setTarget() { - /* Nonmatching */ + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) || dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK1000000_e)) { + if (m3E8 != 0) { + if (cLib_calcTimer(&m358) == 0) { + m358 = 0x1e; + } + m35C = 2; + } + m320 = 1; + } else { + if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SWIM_e)) { + if (cLib_calcTimer(&m358) == 0) { + m358 = 0x1e; + } + m35C = 1; + m320 = 0; + } else { + m320 = 0; + m358 = 0x1e; + m35C = 0; + } + } + + if (m3E8 == 0 || m344 == 0) { + m35C = 0; + } + +#if VERSION > VERSION_DEMO + m4AC = true; + + for (s32 i = 0; i < m329; i++) { + daGy_c* pfVar2 = (daGy_c*)fopAcM_SearchByID(m360[i]); + if ((pfVar2 != NULL) && (pfVar2 != NULL) && (pfVar2->m2B0 != 0)) { + m4AC = false; + } + } + + if (m4AC) { + m35C = 0; + } +#endif + + switch (m35C) { + case 1: + dCam_getBody()->SetTypeForce("WaterBattle", NULL); + break; + + case 2: + dCam_getBody()->SetTypeForce("BoatBattle", NULL); + break; + } } /* 00000450-00000638 .text setPathTargetPos__11daGy_Ctrl_cFv */ -void daGy_Ctrl_c::setPathTargetPos() { - /* Nonmatching */ +bool daGy_Ctrl_c::setPathTargetPos() { + cXyz sp24; + + switch (m320) { + case 0: + sp24 = dComIfGp_getPlayer(0)->current.pos; + m318 = l_HIO.m1C; + m34C += l_HIO.m0A; + break; + + case 1: + if (dComIfGp_getShipActor() != NULL) { + sp24 = dComIfGp_getShipActor()->current.pos; + m318 = l_HIO.m18; + m34C += l_HIO.m0C; + } + break; + } + + sp24.y = getWaterY(sp24); + + if (m328 == 0) { + current.pos = sp24; + return true; + } + + if ((m338 - sp24).absXZ() < m32C) { + current.pos = sp24; + return true; + } + return false; } /* 00000674-000006AC .text getWaterY__11daGy_Ctrl_cFR4cXyz */ -void daGy_Ctrl_c::getWaterY(cXyz&) { - /* Nonmatching */ +f32 daGy_Ctrl_c::getWaterY(cXyz& arg1) { + arg1.y += 1000.0f; + dBgS_GetWaterHeight(arg1); } /* 000006AC-0000072C .text lineCheck__11daGy_Ctrl_cFP4cXyzP4cXyz */ -void daGy_Ctrl_c::lineCheck(cXyz*, cXyz*) { - /* Nonmatching */ +bool daGy_Ctrl_c::lineCheck(cXyz* arg1, cXyz* arg2) { + mLinChk.Set(arg1, arg2, this); + if (dComIfG_Bgsp()->LineCross(&mLinChk)) { + *arg2 = mLinChk.mLin.GetEnd(); + return true; + } + return false; } /* 0000072C-00000878 .text checkPath__11daGy_Ctrl_cFv */ -void daGy_Ctrl_c::checkPath() { - /* Nonmatching */ +bool daGy_Ctrl_c::checkPath() { + if (dComIfGp_event_runCheck()) { + return false; + } + + for (s32 i = 0; i < ARRAY_SSIZE(m3EC); i++) { + s16 tmp = 0xFFF; + s16 tmp2 = tmp * i; +#if VERSION == VERSION_DEMO + cXyz sp14(m348, 0.0f, l_HIO.m28); +#else + cXyz sp14(m348, 0.0f, 0.0f); +#endif + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(tmp2); + mDoMtx_stack_c::transM(sp14.x, sp14.y, sp14.z); + + m3EC[i].x = mDoMtx_stack_c::get()[0][3]; + m3EC[i].y = mDoMtx_stack_c::get()[1][3]; + m3EC[i].z = mDoMtx_stack_c::get()[2][3]; + +#if VERSION == VERSION_DEMO + m3EC[i].y = getWaterY(m3EC[i]); +#endif + + cXyz sp08 = m3EC[i]; + sp08.y += l_HIO.m24; + +#if VERSION > VERSION_DEMO + m3EC[i].y += l_HIO.m28; +#endif + + if (lineCheck(&sp08, &m3EC[i])) { + return false; + } + } + return true; } /* 00000878-00000AC8 .text setPathPos__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::setPathPos() { - /* Nonmatching */ + for (s32 i = 0; i < m329; i++) { + s16 tmp2 = (s16)(0xffff / m329); + s16 tmp3 = tmp2 * i; + m308[i] = m34C + tmp3; + s16 uVar1 = m308[i]; + s16 uVar2 = uVar1 + 0x500; +#if VERSION == VERSION_DEMO + f32 tmp = l_HIO.m10 * cM_ssin(uVar1); + tmp = m348 + tmp; +#else + f32 tmp = m348 + l_HIO.m10 * cM_ssin(uVar1); +#endif + cXyz sp14; + + sp14.set(tmp, 0.0f, 0.0f); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(uVar1); + mDoMtx_stack_c::transM(sp14.x, sp14.y, sp14.z); + + m290[i].x = mDoMtx_stack_c::get()[0][3]; + m290[i].y = mDoMtx_stack_c::get()[1][3]; + m290[i].z = mDoMtx_stack_c::get()[2][3]; + + m290[i].y = getWaterY(m290[i]); + + sp14.set(tmp, 0.0f, l_HIO.m28); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(uVar2); + mDoMtx_stack_c::transM(sp14.x, sp14.y, sp14.z); + + m2CC[i].x = mDoMtx_stack_c::get()[0][3]; + m2CC[i].y = mDoMtx_stack_c::get()[1][3]; + m2CC[i].z = mDoMtx_stack_c::get()[2][3]; + + cXyz sp08 = m2CC[i]; + sp08.y += l_HIO.m24; + + m2CC[i].y = getWaterY(m2CC[i]); + + if (lineCheck(&sp08, &m2CC[i])) { + m312[i] = 0; + } else { + m312[i] = 1; + } + } + cLib_addCalc2(&m348, m318, 0.1f, l_HIO.m2C); } /* 00000AC8-00000C14 .text modeProc__11daGy_Ctrl_cFQ211daGy_Ctrl_c6Proc_ei */ -void daGy_Ctrl_c::modeProc(daGy_Ctrl_c::Proc_e, int) { - /* Nonmatching */ +void daGy_Ctrl_c::modeProc(daGy_Ctrl_c::Proc_e arg1, int arg2) { + typedef void (daGy_Ctrl_c::*ModeFunc)(); + struct ModeData { + /* 0x00 */ ModeFunc init; + /* 0x0C */ ModeFunc exec; + /* 0x18 */ char* name; + }; // size = 0x1C + + static ModeData mode_tbl[] = { + { + &daGy_Ctrl_c::modeSwWaitInit, + &daGy_Ctrl_c::modeSwWait, + "SW_WAIT", + }, + { + &daGy_Ctrl_c::modeCreateInit, + &daGy_Ctrl_c::modeCreate, + "CREATE", + }, + { + &daGy_Ctrl_c::modeWaitInit, + &daGy_Ctrl_c::modeWait, + "WAIT", + }, + { + &daGy_Ctrl_c::modeHideInit, + &daGy_Ctrl_c::modeHide, + "HIDE", + }, + }; + + if (arg1 == 0) { + m324 = arg2; + (this->*mode_tbl[m324].init)(); + } else if (arg1 == 1) { + (this->*mode_tbl[m324].exec)(); + } } /* 00000C14-00000C18 .text modeSwWaitInit__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeSwWaitInit() { - /* Nonmatching */ } /* 00000C18-00000C8C .text modeSwWait__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeSwWait() { - /* Nonmatching */ + s32 sw; + if (m328 == 1) { + sw = fopAcM_GetRoomNo(this); + } else if (m328 == 0) { + sw = m334; + } + + if (dComIfGs_isSwitch(m330, sw)) { + modeProc(PROC_0_e, 1); + } } /* 00000C8C-00000CA0 .text modeCreateInit__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeCreateInit() { - /* Nonmatching */ + m350 = l_HIO.m06; } /* 00000CA0-00000E50 .text modeCreate__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeCreate() { - /* Nonmatching */ + if (m328 == 1 && m344 == 0) { + modeProc(PROC_0_e, 3); + } else if (m3E8 == 0) { + modeProc(PROC_0_e, 3); + } else if (fopAcM_Search(searchNearActor_CB, this) != NULL) { + modeProc(PROC_0_e, 3); + } else { + if (m31C < m329 && cLib_calcTimer(&m350) == 0) { + cXyz sp18 = m290[m31C]; + csXyz sp10(0, 0, 0); + sp10.y = m308[m31C]; + sp18.y = -1000.0f; + + m360[m31C] = fopAcM_createChild(PROC_GY, fopAcM_GetID(this), 0xffffffff, &sp18, tevStr.mRoomNo, &sp10); + m374[m31C] = true; + m350 = l_HIO.m08; + } + + if (m31C == m329) { + modeProc(PROC_0_e, 2); + } + setPathPos(); + } } /* 00000E50-00000E54 .text modeWaitInit__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeWaitInit() { - /* Nonmatching */ + static const GXColor color_ok = {0x00, 0xFF, 0x00, 0x80}; + static const GXColor color_ng = {0xFF, 0x00, 0x00, 0x80}; } /* 00000E54-00000F00 .text modeWait__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeWait() { - /* Nonmatching */ + if (m328 == 1 && m344 == 0) { + modeProc(PROC_0_e, 3); + } else if (m3E8 == 0) { + modeProc(PROC_0_e, 3); + } else if (fopAcM_Search(searchNearActor_CB, this) != NULL) { + modeProc(PROC_0_e, 3); + } else { + deadCheckGy(); + setPathPos(); + } } /* 00000F00-00000F18 .text modeHideInit__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeHideInit() { - /* Nonmatching */ +#if VERSION > VERSION_DEMO + m4B0 = REG8_S(8) + 30; +#endif } /* 00000F18-00000FFC .text modeHide__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::modeHide() { - /* Nonmatching */ +#if VERSION == VERSION_DEMO + if (m328 == 1) { + if (m344 == 1 && m3E8 == 1) { + modeProc(PROC_0_e, 1); + } + } else if (m328 == 0 && m3E8 == 1) { + modeProc(PROC_0_e, 1); + } +#else + bool bVar1 = false; + if (m328 == 1) { + if (m344 == 1 && m3E8 == 1) { + bVar1 = true; + } + } else if (m328 == 0 && m3E8 == 1) { + bVar1 = true; + } + + if (cLib_calcTimer(&m4B0) == 0) { + if (fopAcM_Search(searchNearActor_CB, this) != NULL) { + bVar1 = false; + m4B0 = REG8_S(9) + 30; + } + } else { + bVar1 = false; + } + + if (bVar1 && m3E8 == 1) { + modeProc(PROC_0_e, 1); + } +#endif } /* 00000FFC-0000109C .text deadCheckGy__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::deadCheckGy() { - /* Nonmatching */ + s32 uVar3 = 0; + for (s32 i = 0; i < m329; i++) { + if (m374[i] == 1 && fopAcM_SearchByID(m360[i]) == NULL) { + uVar3++; + } + } + + if (uVar3 == m329) { + fopAcM_delete(this); + } } /* 0000109C-00001100 .text _execute__11daGy_Ctrl_cFv */ bool daGy_Ctrl_c::_execute() { - /* Nonmatching */ + setTarget(); + m344 = setPathTargetPos(); + m3E8 = checkPath(); + modeProc(PROC_1_e, 4); +#if VERSION > VERSION_DEMO + m334 = fopAcM_GetRoomNo(this); +#endif + return false; } /* 00001100-00001210 .text _draw__11daGy_Ctrl_cFv */ bool daGy_Ctrl_c::_draw() { - /* Nonmatching */ + if (l_HIO.m04 != 0) { + cXyz sp2C = current.pos; + sp2C.y = sp2C.y + 100.0f; + + for (s32 i = 0; i < m329; i++) { + cXyz sp20 = m290[i]; + sp20.y += 500.0f; + } + + for (s32 i = 0; i < ARRAY_SSIZE(m3EC); i++) { + cXyz sp14 = m3EC[i]; + sp14.y += l_HIO.m24; + } + + if (m328 == 1) { + cXyz sp08 = m338; + sp08.y = current.pos.y + 100.0f; + } + } + return true; } /* 00001210-00001250 .text createInitNoArer__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::createInitNoArer() { - /* Nonmatching */ + fopAcM_setStageLayer(this); + m331 = 1; + m334 = fopAcM_GetRoomNo(this); } /* 00001250-000012D4 .text createInit__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::createInit() { - /* Nonmatching */ + if (m330 != 0xff) { + modeProc(PROC_0_e, 0); + } else { + modeProc(PROC_0_e, 1); + } + + m320 = 0; + m338 = current.pos; + + if (m328 == 0) { + createInitNoArer(); + } } /* 000012D4-000012F8 .text getParam__11daGy_Ctrl_cFUlUcUc */ -void daGy_Ctrl_c::getParam(unsigned long, unsigned char, unsigned char) { - /* Nonmatching */ +u8 daGy_Ctrl_c::getParam(unsigned long arg1, unsigned char arg2, unsigned char arg3) { + return ((1 << arg3) - 1) & (arg1 >> arg2); } /* 000012F8-000013F8 .text getArg__11daGy_Ctrl_cFv */ void daGy_Ctrl_c::getArg() { - /* Nonmatching */ + u32 uVar3 = fopAcM_GetParam(this); + m328 = getParam(uVar3, 0, 4); + m329 = getParam(uVar3, 4, 4); + u8 uVar1 = getParam(uVar3, 8, 8); + m330 = getParam(uVar3, 0x18, 8); + + if (m328 == 0xf) { + m328 = 0; + } + + if (m329 == 0xf) { + m329 = 1; + } + + if (uVar1 == 0xff) { + m32C = 10000.0f; + } else { + m32C = uVar1 * 1000.0f; + } } /* 000013F8-00001458 .text checkGyCtrlExist__11daGy_Ctrl_cFv */ -void daGy_Ctrl_c::checkGyCtrlExist() { - /* Nonmatching */ +bool daGy_Ctrl_c::checkGyCtrlExist() { + s32 local_8 = PROC_GY_CTRL; + daGy_Ctrl_c* pfVar1 = (daGy_Ctrl_c*)fopAcM_SearchByName(local_8); + if ((pfVar1 != NULL) && (pfVar1->m328 == 0) && (pfVar1->m331 == 1)) { + return true; + } + return false; } /* 00001458-000016AC .text _create__11daGy_Ctrl_cFv */ cPhs_State daGy_Ctrl_c::_create() { - /* Nonmatching */ + fopAcM_SetupActor(this, daGy_Ctrl_c); + + getArg(); + + if (m328 == 0 && checkGyCtrlExist()) { + return cPhs_ERROR_e; + } + + if (!dComIfGs_checkGetItem(dItem_BOOMERANG_e)) { + return cPhs_ERROR_e; + } + + createInit(); + return cPhs_COMPLEATE_e; } /* 00001C3C-00001C44 .text _delete__11daGy_Ctrl_cFv */ bool daGy_Ctrl_c::_delete() { - /* Nonmatching */ + return true; } /* 00001C44-00001C64 .text daGy_CtrlCreate__FPv */