//
// Generated by dtk
// Translation Unit: d_a_coming2.cpp
//

#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_coming2.h"
#include "d/d_bg_s_lin_chk.h"
#include "d/d_bg_s_wtr_chk.h"
#include "d/d_bg_s_gnd_chk.h"
#include "d/actor/d_a_player.h"
#include "d/actor/d_a_ship.h"
#include "d/actor/d_a_sea.h"
#include "d/actor/d_a_obj_barrel2.h"

s32 daComing2::coming_make_item_no_table[] = {
    dItemNo_GREEN_RUPEE_e,
    dItemNo_GREEN_RUPEE_e,
    dItemNo_GREEN_RUPEE_e,
    dItemNo_GREEN_RUPEE_e,
    dItemNo_GREEN_RUPEE_e,
    dItemNo_BLUE_RUPEE_e,
    dItemNo_BLUE_RUPEE_e,
    dItemNo_BLUE_RUPEE_e,
    dItemNo_BLUE_RUPEE_e,
    dItemNo_BLUE_RUPEE_e,
    dItemNo_YELLOW_RUPEE_e,
    dItemNo_YELLOW_RUPEE_e,
    dItemNo_YELLOW_RUPEE_e,
    dItemNo_YELLOW_RUPEE_e,
    dItemNo_YELLOW_RUPEE_e,
};

static void dummy() {
    // This may have been used in some debug drawing function.
    static GXColor colorR = {255, 100, 100, 255};
}

namespace daComing2 {
    namespace {
        const static u8 L_attr[] = {
            0, 0, 0, 0xC, 0x2, 0x58, 0x00, 0x87, 0x05, 0x46,
        };
    }
}

/* 000000EC-00000164       .text chase_ship__Q29daComing25Act_cFv */
void daComing2::Act_c::chase_ship() {
    fpc_ProcID proc = fopAcM_GetLinkId(this);
    fopAc_ac_c* actor = fopAcM_SearchByID(proc);
    if (actor != NULL) {
        current.pos = actor->current.pos;
        shape_angle = actor->shape_angle;
    }
}

/* 00000164-00000200       .text get_speed__9daComing2FP10fopAc_ac_c */
f32 daComing2::get_speed(fopAc_ac_c* actor) {
    f32 x = actor->current.pos.x - actor->old.pos.x;
    f32 z = actor->current.pos.z - actor->old.pos.z;
    return std::sqrtf(x * x + z * z);
}

/* 00000200-0000033C       .text renew_scope_info__Q29daComing25Act_cFv */
void daComing2::Act_c::renew_scope_info() {
    Mtx sp24;
    cXyz sp18;
    cXyz sp0C;

    unk_2A0 = get_speed(this);
    f32 fVar1 = unk_2A0;
    if (fVar1 < 35.0f) {
        fVar1 = 35.0f;
    } else {
        fVar1 = unk_2A0;
    }
    sp18.x = 0.0f;
    sp18.y = 100.0f;
    sp18.z = fVar1 * 135.0f;

    s16 arr[2] = {0x546, -0x546};
    s16 sVar3 = arr[(unk_2A4 + unk_29C) & 1];
    sVar3 = sVar3 > 0 ? sVar3 + ((unk_2A4 >> 2) & 0xF) * 0x168 : sVar3 - ((unk_2A4 >> 2) & 0xF) * 0x168;
    s16 rot = mStartStat.unk_00 + sVar3;

    cXyz* paVar5;
    if (unk_2A4 == 0) {
        paVar5 = &current.pos;
    } else {
        paVar5 = &mBarrelInfo[unk_2A4 - 1].unk_08;
    }
    sp0C = *paVar5;

    mDoMtx_stack_c::transS(sp0C);
    mDoMtx_stack_c::YrotM(rot);
    MTXCopy(mDoMtx_stack_c::get(), sp24);
    cMtx_multVec(sp24, &sp18, &unk_4A8);
}

/* 0000033C-0000052C       .text no_ship_obstacle__Q29daComing25Act_cFP4cXyz */
BOOL daComing2::Act_c::no_ship_obstacle(cXyz* pos) {
    static dBgS_ObjLinChk M_wall_work;
    M_wall_work.Set(&current.pos, pos, NULL);
    if (!dComIfG_Bgsp()->LineCross(&M_wall_work)) {
        return TRUE;
    }
    return FALSE;
}

struct SafetyCallback {
    /* 0x00 */ cXyz* pos;
    /* 0x04 */ BOOL ret;
}; // size = 0x08

/* 00000AB8-00000B50       .text position_is_safety_call_back__9daComing2FPvPv */
void* daComing2::position_is_safety_call_back(void* ac, void* cb) {
    SafetyCallback* callback = (SafetyCallback*)cb;

    if (fopAc_IsActor(ac)) {
        fopAc_ac_c* actor = (fopAc_ac_c*)ac;
        if (fopAcM_GetGroup(actor) == fopAc_ENEMY_e) {
            f32 x = actor->current.pos.x - callback->pos->x;
            f32 z = actor->current.pos.z - callback->pos->z;
            if (x * x + z * z < 200.0f) {
                callback->ret = FALSE;
                return NULL;
            }
        }
    }
    return ac;
}

/* 00000B50-00000B98       .text position_is_none_obj__9daComing2FP4cXyz */
BOOL daComing2::position_is_none_obj(cXyz* pos) {
    SafetyCallback callback;
    callback.pos = pos;
    callback.ret = TRUE;
    fopAcM_Search(position_is_safety_call_back, &callback);
    if (callback.ret == TRUE) {
        return TRUE;
    }
    return FALSE;
}

/* 00000B98-00000BD8       .text check_in_large_sea__Q29daComing25Act_cFPC4cXyz */
BOOL daComing2::Act_c::check_in_large_sea(const cXyz* pos) {
    if (std::fabsf(pos->x) < 349000.0f && std::fabsf(pos->z) < 349000.0f) {
        return TRUE;
    }
    return FALSE;
}

/* 00000BD8-00000E60       .text get_water_height__Q29daComing25Act_cFPfPC4cXyz */
BOOL daComing2::Act_c::get_water_height(float* outHeight, const cXyz* pos) {
    f32 waveHeight = -G_CM3D_F_INF;

    if (daSea_ChkArea(pos->x, pos->z)) {
        waveHeight = daSea_calcWave(pos->x, pos->z);
    } else {
        static dBgS_WtrChk wtr;

        cXyz sp14(
            pos->x,
            pos->y - 1000.0f,
            pos->z
        );

        wtr.Set(sp14, pos->y + 1000.0f);

        if (dComIfG_Bgsp()->WaterChk(&wtr)) {
            waveHeight = wtr.GetHeight();
        }
    }

    *outHeight = waveHeight;

    if (waveHeight > -G_CM3D_F_INF) {
        static dBgS_ObjGndChk gnd_work;

        cXyz sp08 = *pos;
        sp08.y += 20000.0f;

        gnd_work.SetPos(&sp08);
        if (dComIfG_Bgsp()->GroundCross(&gnd_work) > waveHeight - 100.0f) {
            return FALSE;
        }
        return TRUE;
    }
    return FALSE;
}

/* 0000125C-00001294       .text init_barrelN_info__Q29daComing25Act_cFi */
void daComing2::Act_c::init_barrelN_info(int idx) {
    mBarrelInfo[idx].unk_00 = fpcM_ERROR_PROCESS_ID_e;
    mBarrelInfo[idx].unk_04 = 0;
    mBarrelInfo[idx].unk_06 = 0;
    mBarrelInfo[idx].unk_08 = current.pos;
}

/* 00001294-000012E0       .text init_barrel_info__Q29daComing25Act_cFv */
void daComing2::Act_c::init_barrel_info() {
    for (u32 i = 0; i < 15; i++) {
        init_barrelN_info(i);
    }
}

/* 000012E0-000012F0       .text init_flag_info__Q29daComing25Act_cFv */
void daComing2::Act_c::init_flag_info() {
    mStartBuoy[0].unk_00 = -1;
    mStartBuoy[1].unk_00 = -1;
}

/* 000012F0-00001354       .text init_coming_info__Q29daComing25Act_cFv */
void daComing2::Act_c::init_coming_info() {
    unk_2A4 = 0;
    unk_2A6 = 600;
    unk_29C = (s32)cM_rndF(2.0f) & 1;
    unk_29A = 0;
    unk_2A8 = 0;
}

/* 00001354-0000141C       .text make_coming_param__Q29daComing25Act_cFP4cXyzPQ212daObjBarrel26Type_ePiPb */
BOOL daComing2::Act_c::make_coming_param(cXyz* outPos, daObjBarrel2::Type_e* outType, int* outDroppedItem, bool* outHasFlag) {
    cXyz sp0C = unk_4A8;

    if (get_water_height(&sp0C.y, &sp0C)) {
        *outPos = sp0C;

        *outType = daObjBarrel2::Type_01_e;
        *outHasFlag = false;

        *outDroppedItem = (unk_2A4 < 0xFu) ? coming_make_item_no_table[unk_2A4] : dItemNo_RECOVER_FAIRY_e;
        return TRUE;
    }
    return FALSE;
}

/* 0000141C-00001488       .text request_barrel_exitN__Q29daComing25Act_cFi */
BOOL daComing2::Act_c::request_barrel_exitN(int idx) {
    fpc_ProcID barrelProc = mBarrelInfo[idx].unk_00;
    daObjBarrel2::Act_c* barrel;

    if (barrelProc != fpcM_ERROR_PROCESS_ID_e) {
        if (fopAcM_SearchByID(barrelProc, (fopAc_ac_c**)&barrel) != NULL && barrel != NULL) {
            barrel->exit_req();
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        return TRUE;
    }
    return FALSE;
}

/* 00001488-000014F0       .text request_all_barrel_exit__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::request_all_barrel_exit() {
    u32 i;
    s32 count = 0;
    for (i = 0; i < 15; i++) {
        if (request_barrel_exitN(i)) {
            count++;
        }
    }
    return count == 15 ? TRUE : FALSE;
}

/* 000014F0-00001610       .text checkLineCrossXZ__9daComing2FP4cXyzP4cXyzP4cXyzP4cXyz */
BOOL daComing2::checkLineCrossXZ(cXyz* arg0, cXyz* arg1, cXyz* arg2, cXyz* arg3) {
    cXyz sp44(arg1->x - arg0->x, 0.0f, arg1->z - arg0->z);
    cXyz sp38(arg2->x - arg0->x, 0.0f, arg2->z - arg0->z);
    cXyz sp2C(arg3->x - arg0->x, 0.0f, arg3->z - arg0->z);

    if ((sp44.x * sp38.z - sp44.z * sp38.x) * (sp44.x * sp2C.z - sp44.z * sp2C.x) < 0.0f) {
        cXyz sp20(arg2->x - arg3->x, 0.0f, arg2->z - arg3->z);
        cXyz sp14(arg0->x - arg3->x, 0.0f, arg0->z - arg3->z);
        cXyz sp08(arg1->x - arg3->x, 0.0f, arg1->z - arg3->z);
    
        if ((sp20.x * sp14.z - sp20.z * sp14.x) * (sp20.x * sp08.z - sp20.z * sp08.x) < 0.0f) {
            return TRUE;
        }
    }

    return FALSE;
}

/* 00001610-000016C4       .text request_all_flag_exit__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::request_all_flag_exit() {
    for (s32 i = 0; i < 2; i++) {
        fpc_ProcID buoyProc = mStartBuoy[i].unk_00;
        daObjBarrel2::Act_c* buoy;

        if (buoyProc != fpcM_ERROR_PROCESS_ID_e && fopAcM_SearchByID(buoyProc, (fopAc_ac_c**)&buoy) != NULL && buoy != NULL) {
            buoy->exit_req();
            mStartBuoy[i].unk_00 = fpcM_ERROR_PROCESS_ID_e;
        }
    }

    if ((mStartBuoy[0].unk_00 == fpcM_ERROR_PROCESS_ID_e) && (mStartBuoy[1].unk_00 == fpcM_ERROR_PROCESS_ID_e)) {
        return TRUE;
    }
    return FALSE;
}

/* 000016C4-000017E0       .text barrel_execute__Q29daComing25Act_cFi */
void daComing2::Act_c::barrel_execute(int idx) {
    fpc_ProcID barrelProc = mBarrelInfo[idx].unk_00;
    daObjBarrel2::Act_c* barrel;
    
    if (barrelProc != fpcM_ERROR_PROCESS_ID_e) {
        if ((BOOL)fopAcM_SearchByID(barrelProc, (fopAc_ac_c**)&barrel) == TRUE) {
            if (barrel != NULL) {
                mBarrelInfo[idx].unk_06 = barrel->chk_item_give();
            }

            if (mBarrelInfo[idx].unk_04 == 0) {
                request_barrel_exitN(idx);
            } else if (mBarrelInfo[idx].unk_04 > 0) {
                mBarrelInfo[idx].unk_04--;
            }
        } else if (mBarrelInfo[idx].unk_06 == 0) {
            init_barrelN_info(idx);
            coming_process_init(0);
        }

        if (mBarrelInfo[idx].unk_06 == 1) {
            if (unk_2A4 >= 15u) {
                coming_process_init(0);
            } else {
                request_barrel_exitN(idx);
                init_barrelN_info(idx);
                unk_29A = 1;
            }
        }
    }
}

/* 000017E0-0000182C       .text barrel_main__Q29daComing25Act_cFv */
void daComing2::Act_c::barrel_main() {
    for (u32 i = 0; i < 15; i++) {
        barrel_execute(i);
    }
}

/* 0000182C-00001850       .text coming_clear_init__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::coming_clear_init() {
    daPy_py_c* player = daPy_getPlayerActorClass();
    if (player != NULL) {
        unk_299 = player->current.roomNo;
    }
    return TRUE;
}

/* 00001850-000018B8       .text coming_clear_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_clear_main() {
    if (request_all_barrel_exit() && request_all_flag_exit()) {
        init_barrel_info();
        init_coming_info();
        init_flag_info();
        coming_process_init(1);
    }
}

/* 000018B8-000018D0       .text coming_wait_init__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::coming_wait_init() {
    unk_2A6 = 600;
    unk_2A4 = 0;
    return TRUE;
}

/* 000018D0-000019D4       .text coming_wait_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_wait_main() {
    daPy_py_c* player = daPy_getPlayerActorClass();
    if (player != NULL) {
        if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
            if (unk_2A0 > 35.0f && get_coming_point() >= 2) {
                if (unk_2A6 > 0) {
                    unk_2A6--;
                }

                if (unk_299 != fopAcM_GetRoomNo(player) && unk_2A6 == 0) {
                    mStartStat.unk_00 = shape_angle.y;
                    unk_440 = current.pos;
                    coming_process_init(2);
                }
            } else {
                coming_process_init(1);
            }
        } else  {
            unk_299 = player->current.roomNo;
            coming_process_init(1);
        }
    }
}

/* 000019D4-00001A7C       .text coming_setF_init__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::coming_setF_init() {
    daPy_py_c* player = daPy_getPlayerActorClass();
    if (player != NULL) {
        unk_298 = player->current.roomNo;
        minus_coming_point2();
        return TRUE;
    }
    return FALSE;
}

/* 00001A7C-00001CB8       .text coming_setF_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_setF_main() {
    Mtx sp4C;
    cXyz sp34[2];
    cXyz sp28;
    cXyz sp1C;
    cXyz sp10;

    f32 local_a0 = 0.0f;
    while (std::fabsf(local_a0) <= 700.0f) {
        local_a0 = cM_rndFX(1600.0f);
    }

    f32 z = unk_2A0 * 120.0f;

    sp1C.x = local_a0 + 500.0f;
    sp1C.y = 0.0f;
    sp1C.z = z;

    sp34[0].x = local_a0 + 500.0f;
    sp34[0].y = 0.0f;
    sp34[0].z = z;

    sp10.x = local_a0 + -500.0f;
    sp10.y = 0.0f;
    sp10.z = z;

    sp34[1].x = local_a0 + -500.0f;
    sp34[1].y = 0.0f;
    sp34[1].z = z;

    mDoMtx_stack_c::transS(current.pos);
    mDoMtx_stack_c::YrotM(shape_angle.y);
    MTXCopy(mDoMtx_stack_c::get(), sp4C);

    for (s32 i = 0; i < 2; i++) {
        if (mStartBuoy[i].unk_00 == fpcM_ERROR_PROCESS_ID_e) {
            cMtx_multVec(sp4C, &sp34[i], &sp28);
            if (get_water_height(&sp28.y, &sp28) && check_in_large_sea(&sp28) && 
                position_is_none_obj(&sp28) && no_ship_obstacle(&sp28)) {
                daObjBarrel2::Type_e type(daObjBarrel2::Type_01_e);
                fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(
                    &sp28,
                    -1,
                    DEMO_SELECT(daObjBarrel2::Type_01_e, type),
                    0x3F,
                    true,
                    mStartStat.unk_00,
                    daObjBuoyflag::Texture_01_e
                );
                mStartBuoy[i].unk_00 = barrel;
                if (barrel != fpcM_ERROR_PROCESS_ID_e) {
                    mStartBuoy[i].unk_04 = sp28;
                }
            }
        }
    }

    if ((mStartBuoy[0].unk_00 != fpcM_ERROR_PROCESS_ID_e) && (mStartBuoy[1].unk_00 != fpcM_ERROR_PROCESS_ID_e)) {
        coming_process_init(3);
    } else {
        coming_process_init(0);
    }
}

/* 00001CB8-00001CC8       .text coming_checkS_init__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::coming_checkS_init() {
    unk_46C = 0;
    return TRUE;
}

/* 00001CC8-00001D60       .text coming_checkS_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_checkS_main() {
    if (unk_46C < 0xB4) {
        if (checkLineCrossXZ(&old.pos, &current.pos, &mStartBuoy[0].unk_04, &mStartBuoy[1].unk_04)) {
            request_all_flag_exit();
            coming_process_init(4);
        }
        unk_46C++;
    } else {
        daPy_py_c* player = daPy_getPlayerActorClass();
        if (player != NULL) {
            unk_299 = player->current.roomNo;
            coming_process_init(0);
        }
    }
}

/* 00001D60-00001D8C       .text coming_game_init__Q29daComing25Act_cFv */
BOOL daComing2::Act_c::coming_game_init() {
    unk_29A = 1;
    unk_2A8 = 0;
    unk_299 = unk_298;
    unk_294++;
    return TRUE;
}

/* 00001D8C-00001F58       .text coming_game_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_game_main() {
    cXyz sp1C;
    daObjBarrel2::Type_e type;
    int droppedItem;
    bool hasFlag;
    u32 unk294 = unk_2A4;

    if (unk294 >= 15) {
        return;
    }

    if (unk_29A == 1) {
        if ((mBarrelInfo[unk_2A4].unk_00 == fpcM_ERROR_PROCESS_ID_e && make_coming_param(&sp1C, &type, &droppedItem, &hasFlag))) {
            if (check_in_large_sea(&sp1C) != 0) {
                if (position_is_none_obj(&sp1C) && no_ship_obstacle(&sp1C)) {
                    fpc_ProcID barrel = daObjBarrel2::Act_c::make_coming(
                        &sp1C,
                        -1,
                        type,
                        droppedItem,
                        hasFlag,
                        mStartStat.unk_00,
                        daObjBuoyflag::Texture_00_e
                    );
                    mBarrelInfo[unk_2A4].unk_00 = barrel;
                    if (barrel != fpcM_ERROR_PROCESS_ID_e) {
                        unk_29A = 0;
                        mBarrelInfo[unk294].unk_06 = 0;
                        mBarrelInfo[unk_2A4].unk_08 = sp1C;
                        mBarrelInfo[unk_2A4].unk_04 = 0x93 - unk_2A4;
                        unk_2A8 = 0;
                        unk_2A4++;
                    }
                }
            } else {
                coming_process_init(0);
            }
        }

        if (unk_2A8++ >= 60) {
            coming_process_init(0);
        }
    } else {
        unk_2A8 = 0;
    }
}

/* 00001F58-00002070       .text coming_process_init__Q29daComing25Act_cFs */
bool daComing2::Act_c::coming_process_init(short arg1) {
    typedef BOOL (daComing2::Act_c::*init_func)();
    static init_func init_table[5] = {
        &daComing2::Act_c::coming_clear_init,
        &daComing2::Act_c::coming_wait_init,
        &daComing2::Act_c::coming_setF_init,
        &daComing2::Act_c::coming_checkS_init,
        &daComing2::Act_c::coming_game_init
    };

    if (arg1 >= 0 && arg1 < 5) {
        if ((this->*init_table[arg1])()) {
            unk_46E = arg1;
            return true;
        }
    }
    return false;
}

/* 00002070-00002154       .text coming_process_main__Q29daComing25Act_cFv */
void daComing2::Act_c::coming_process_main() {
    typedef void (daComing2::Act_c::*main_func)();
    static main_func main_table[5] = {
        &daComing2::Act_c::coming_clear_main,
        &daComing2::Act_c::coming_wait_main,
        &daComing2::Act_c::coming_setF_main,
        &daComing2::Act_c::coming_checkS_main,
        &daComing2::Act_c::coming_game_main
    };

    if (unk_46E >= 0 && unk_46E < 5) {
        (this->*main_table[unk_46E])();
    }
}

/* 00002154-00002264       .text _create__Q29daComing25Act_cFv */
cPhs_State daComing2::Act_c::_create() {
    fopAcM_ct(this, daComing2::Act_c);
    unk_299 = -1;
    init_barrel_info();
    init_coming_info();
    init_flag_info();
    coming_process_init(0);

    daPy_py_c* player = daPy_getPlayerActorClass();

    mStartStat.unk_00 = shape_angle.y;
    unk_440.x = current.pos.x;
    unk_440.y = current.pos.y;
    unk_440.z = current.pos.z;

    if (player != NULL) {
        unk_299 = player->current.roomNo;
    }

    return cPhs_COMPLEATE_e;
}

/* 000022E4-000022EC       .text _delete__Q29daComing25Act_cFv */
bool daComing2::Act_c::_delete() {
    return true;
}

/* 000022EC-000023B0       .text _execute__Q29daComing25Act_cFv */
bool daComing2::Act_c::_execute() {
    daShip_c* ship = (daShip_c*)fopAcM_SearchByID(fopAcM_GetLinkId(this));
    if (ship != NULL) {
        chase_ship();
        renew_scope_info();
        if (dComIfGp_event_runCheck() || ship->getTornadoActor() != NULL || ship->getWhirlActor() != NULL) {
            daPy_py_c* player = daPy_getPlayerActorClass();
            unk_299 = player->current.roomNo;
            coming_process_init(0);
        } else {
            coming_process_main();
        }
        barrel_main();
    }
    return true;
}

/* 000023B0-000023B8       .text _draw__Q29daComing25Act_cFv */
bool daComing2::Act_c::_draw() {
    return true;
}

namespace daComing2 {
namespace {
/* 000023B8-000023D8       .text Mthd_Create__Q29daComing225@unnamed@d_a_coming2_cpp@FPv */
cPhs_State Mthd_Create(void* i_this) {
    return ((daComing2::Act_c*)i_this)->_create();
}

/* 000023D8-000023FC       .text Mthd_Delete__Q29daComing225@unnamed@d_a_coming2_cpp@FPv */
BOOL Mthd_Delete(void* i_this) {
    return ((daComing2::Act_c*)i_this)->_delete();
}

/* 000023FC-00002420       .text Mthd_Execute__Q29daComing225@unnamed@d_a_coming2_cpp@FPv */
BOOL Mthd_Execute(void* i_this) {
    return ((daComing2::Act_c*)i_this)->_execute();
}

/* 00002420-00002444       .text Mthd_Draw__Q29daComing225@unnamed@d_a_coming2_cpp@FPv */
BOOL Mthd_Draw(void* i_this) {
    return ((daComing2::Act_c*)i_this)->_draw();
}

/* 00002444-0000244C       .text Mthd_IsDelete__Q29daComing225@unnamed@d_a_coming2_cpp@FPv */
BOOL Mthd_IsDelete(void*) {
    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,
};
}; // namespace
}; // namespace daComing2

actor_process_profile_definition g_profile_Coming2 = {
    /* Layer ID     */ fpcLy_CURRENT_e,
    /* List ID      */ 0x0007,
    /* List Prio    */ fpcPi_CURRENT_e,
    /* Proc Name    */ fpcNm_Coming2_e,
    /* Proc SubMtd  */ &g_fpcLf_Method.base,
    /* Size         */ sizeof(daComing2::Act_c),
    /* Size Other   */ 0,
    /* Parameters   */ 0,
    /* Leaf SubMtd  */ &g_fopAc_Method.base,
    /* Draw Prio    */ fpcDwPi_Coming2_e,
    /* Actor SubMtd */ &daComing2::Mthd_Table,
    /* Status       */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e,
    /* Group        */ fopAc_ACTOR_e,
    /* Cull Type    */ fopAc_CULLBOX_CUSTOM_e,
};
