Exemple #1
0
 public static AppMain.OBS_RECT ObjRectAllSet(
     AppMain.OBS_RECT pRec,
     AppMain.VecFx32 pos,
     short cLeft,
     short cTop,
     short cBack,
     short cRight,
     short cBottom,
     short cFront)
 {
     pRec.pos.Assign(pos);
     pRec.left   = cLeft;
     pRec.top    = cTop;
     pRec.right  = cRight;
     pRec.bottom = cBottom;
     pRec.back   = cBack;
     pRec.front  = cFront;
     if ((int)pRec.right < (int)pRec.left)
     {
         AppMain.MTM_MATH_SWAP <short>(ref pRec.left, ref pRec.right);
     }
     if ((int)pRec.bottom < (int)pRec.top)
     {
         AppMain.MTM_MATH_SWAP <short>(ref pRec.top, ref pRec.bottom);
     }
     if ((int)pRec.front < (int)pRec.back)
     {
         AppMain.MTM_MATH_SWAP <short>(ref pRec.back, ref pRec.front);
     }
     return(pRec);
 }
Exemple #2
0
    // Token: 0x06000F2F RID: 3887 RVA: 0x00085824 File Offset: 0x00083A24
    private static ushort ObjRectCheck(AppMain.OBS_RECT pObj1, AppMain.OBS_RECT pObj2)
    {
        int    x      = (pObj1.pos.x >> 12) + (int)pObj1.left;
        int    x2     = (pObj1.pos.y >> 12) + (int)pObj1.top;
        int    z      = pObj1.pos.z;
        short  back   = pObj1.back;
        int    x3     = (pObj2.pos.x >> 12) + (int)pObj2.left;
        int    x4     = (pObj2.pos.y >> 12) + (int)pObj2.top;
        int    z2     = pObj2.pos.z;
        short  back2  = pObj2.back;
        ushort w      = (ushort)(pObj1.right - pObj1.left);
        ushort w2     = (ushort)(pObj1.bottom - pObj1.top);
        ushort w3     = (ushort)(pObj2.right - pObj2.left);
        ushort w4     = (ushort)(pObj2.bottom - pObj2.top);
        short  front  = pObj1.front;
        short  back3  = pObj1.back;
        short  front2 = pObj1.front;
        short  back4  = pObj2.back;

        if (AppMain.OBM_LINE_AND_LINE(x, ( int )w, x3, ( int )w3) && AppMain.OBM_LINE_AND_LINE(x2, ( int )w2, x4, ( int )w4))
        {
            return(1);
        }
        return(0);
    }
Exemple #3
0
    // Token: 0x060008C0 RID: 2240 RVA: 0x0004F090 File Offset: 0x0004D290
    private static OBS_OBJECT_WORK GmGmkNeedleInit(AppMain.GMS_EVE_RECORD_EVENT eve_rec, int pos_x, int pos_y, byte type)
    {
        OBS_OBJECT_WORK obs_OBJECT_WORK = AppMain.GMM_ENEMY_CREATE_WORK(eve_rec, pos_x, pos_y, () => new AppMain.GMS_GMK_NEEDLE_WORK(), "GMK_NEEDLE_MAIN");

        AppMain.GMS_ENEMY_3D_WORK   gms_ENEMY_3D_WORK   = (AppMain.GMS_ENEMY_3D_WORK)obs_OBJECT_WORK;
        AppMain.GMS_GMK_NEEDLE_WORK gms_GMK_NEEDLE_WORK = (AppMain.GMS_GMK_NEEDLE_WORK)gms_ENEMY_3D_WORK;
        gms_GMK_NEEDLE_WORK.needle_type = AppMain.GmGmkNeedleGetType(eve_rec.id);
        AppMain.ObjObjectCopyAction3dNNModel(obs_OBJECT_WORK, AppMain.gm_gmk_needle_obj_3d_list[0], gms_ENEMY_3D_WORK.obj_3d);
        obs_OBJECT_WORK.ppOut = AppMain.gmGmkNeedleDrawFunc;
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.obj    = obs_OBJECT_WORK;
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.width  = ( ushort )AppMain.gm_gmk_col_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][0];
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.height = ( ushort )AppMain.gm_gmk_col_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][1];
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.ofst_x = ( short )AppMain.gm_gmk_col_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][2];
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.ofst_y = ( short )AppMain.gm_gmk_col_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][3];
        gms_ENEMY_3D_WORK.ene_com.col_work.obj_col.dir    = ( ushort )(16384 * gms_GMK_NEEDLE_WORK.needle_type);
        obs_OBJECT_WORK.pos.z = -4096;
        AppMain.OBS_RECT_WORK obs_RECT_WORK = gms_ENEMY_3D_WORK.ene_com.rect_work[1];
        AppMain.ObjRectWorkZSet(obs_RECT_WORK, ( short )AppMain.gm_gmk_atk_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][0], ( short )AppMain.gm_gmk_atk_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][1], -500, ( short )AppMain.gm_gmk_atk_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][2], ( short )AppMain.gm_gmk_atk_rect_tbl[( int )gms_GMK_NEEDLE_WORK.needle_type][3], 500);
        if (AppMain.g_gs_main_sys_info.stage_id == 9)
        {
            if (gms_GMK_NEEDLE_WORK.needle_type == 1)
            {
                AppMain.OBS_RECT rect = obs_RECT_WORK.rect;
                rect.left -= 16;
            }
            else if (gms_GMK_NEEDLE_WORK.needle_type == 3)
            {
                AppMain.OBS_RECT rect2 = obs_RECT_WORK.rect;
                rect2.right += 16;
            }
        }
        obs_RECT_WORK.flag |= 4U;
        obs_RECT_WORK.flag |= 1024U;
        if (AppMain.g_gs_main_sys_info.stage_id == 14)
        {
            AppMain.ObjDrawObjectActionSet(obs_OBJECT_WORK, 0);
            obs_OBJECT_WORK.obj_3d.use_light_flag &= 4294967294U;
            obs_OBJECT_WORK.obj_3d.use_light_flag |= 4U;
        }
        obs_OBJECT_WORK.move_flag |= 8449U;
        obs_OBJECT_WORK.disp_flag |= 4194304U;
        gms_GMK_NEEDLE_WORK.state  = 0U;
        AppMain.gmGmkNeedleFwInit(obs_OBJECT_WORK);
        obs_OBJECT_WORK.flag     |= 1073741824U;
        gms_GMK_NEEDLE_WORK.color = uint.MaxValue;
        if (AppMain.g_gs_main_sys_info.stage_id == 2 || AppMain.g_gs_main_sys_info.stage_id == 3)
        {
            gms_GMK_NEEDLE_WORK.color = 4288717055U;
        }
        else if (AppMain.g_gs_main_sys_info.stage_id == 14)
        {
            gms_GMK_NEEDLE_WORK.color = 2694881535U;
        }
        return(obs_OBJECT_WORK);
    }
Exemple #4
0
    private static ushort ObjRectPointCheck(AppMain.OBS_RECT pObj, int lX, int lY, int lZ)
    {
        int    x0_1  = (int)pObj.left + (pObj.pos.x >> 12);
        int    x0_2  = (int)pObj.top + (pObj.pos.y >> 12);
        int    back1 = (int)pObj.back;
        int    z     = pObj.pos.z;
        int    x1_1  = lX;
        int    x1_2  = lY;
        ushort num1  = (ushort)((uint)pObj.right - (uint)pObj.left);
        ushort num2  = (ushort)((uint)pObj.bottom - (uint)pObj.top);
        int    front = (int)pObj.front;
        int    back2 = (int)pObj.back;

        return(AppMain.OBM_POINT_IN_LINE(x0_1, (int)num1, x1_1) && AppMain.OBM_POINT_IN_LINE(x0_2, (int)num2, x1_2) ? (ushort)1 : (ushort)0);
    }
Exemple #5
0
    // Token: 0x06000F31 RID: 3889 RVA: 0x00085998 File Offset: 0x00083B98
    private static ushort ObjRectPointCheck(AppMain.OBS_RECT pObj, int lX, int lY, int lZ)
    {
        int    x     = (int)pObj.left + (pObj.pos.x >> 12);
        int    x2    = (int)pObj.top + (pObj.pos.y >> 12);
        short  back  = pObj.back;
        int    z     = pObj.pos.z;
        ushort w     = (ushort)(pObj.right - pObj.left);
        ushort w2    = (ushort)(pObj.bottom - pObj.top);
        short  front = pObj.front;
        short  back2 = pObj.back;

        if (AppMain.OBM_POINT_IN_LINE(x, ( int )w, lX) && AppMain.OBM_POINT_IN_LINE(x2, ( int )w2, lY))
        {
            return(1);
        }
        return(0);
    }
Exemple #6
0
 // Token: 0x06000F06 RID: 3846 RVA: 0x00084320 File Offset: 0x00082520
 public static AppMain.OBS_RECT ObjRectSet(AppMain.OBS_RECT pRec, short cLeft, short cTop, short cRight, short cBottom)
 {
     pRec.left   = cLeft;
     pRec.top    = cTop;
     pRec.right  = cRight;
     pRec.bottom = cBottom;
     pRec.back   = -16;
     pRec.front  = 16;
     if (pRec.right < pRec.left)
     {
         AppMain.MTM_MATH_SWAP <short>(ref pRec.left, ref pRec.right);
     }
     if (pRec.bottom < pRec.top)
     {
         AppMain.MTM_MATH_SWAP <short>(ref pRec.top, ref pRec.bottom);
     }
     AppMain.VEC_Set(ref pRec.pos, 0, 0, 0);
     return(pRec);
 }
Exemple #7
0
    private static ushort ObjRectCheck(AppMain.OBS_RECT pObj1, AppMain.OBS_RECT pObj2)
    {
        int    x0_1   = (pObj1.pos.x >> 12) + (int)pObj1.left;
        int    x0_2   = (pObj1.pos.y >> 12) + (int)pObj1.top;
        int    z1     = pObj1.pos.z;
        int    back1  = (int)pObj1.back;
        int    x1_1   = (pObj2.pos.x >> 12) + (int)pObj2.left;
        int    x1_2   = (pObj2.pos.y >> 12) + (int)pObj2.top;
        int    z2     = pObj2.pos.z;
        int    back2  = (int)pObj2.back;
        ushort num1   = (ushort)((uint)pObj1.right - (uint)pObj1.left);
        ushort num2   = (ushort)((uint)pObj1.bottom - (uint)pObj1.top);
        ushort num3   = (ushort)((uint)pObj2.right - (uint)pObj2.left);
        ushort num4   = (ushort)((uint)pObj2.bottom - (uint)pObj2.top);
        int    front1 = (int)pObj1.front;
        int    back3  = (int)pObj1.back;
        int    front2 = (int)pObj1.front;
        int    back4  = (int)pObj2.back;

        return(AppMain.OBM_LINE_AND_LINE(x0_1, (int)num1, x1_1, (int)num3) && AppMain.OBM_LINE_AND_LINE(x0_2, (int)num2, x1_2, (int)num4) ? (ushort)1 : (ushort)0);
    }
Exemple #8
0
 // Token: 0x06000F07 RID: 3847 RVA: 0x000843A8 File Offset: 0x000825A8
 public static AppMain.OBS_RECT ObjRectZSet(AppMain.OBS_RECT pRec, short cLeft, short cTop, short cBack, short cRight, short cBottom, short cFront)
 {
     pRec.left   = cLeft;
     pRec.top    = cTop;
     pRec.right  = cRight;
     pRec.bottom = cBottom;
     pRec.back   = cBack;
     pRec.front  = cFront;
     if (pRec.right < pRec.left)
     {
         MTM_MATH_SWAP(ref pRec.left, ref pRec.right);
     }
     if (pRec.bottom < pRec.top)
     {
         MTM_MATH_SWAP(ref pRec.top, ref pRec.bottom);
     }
     if (pRec.front < pRec.back)
     {
         MTM_MATH_SWAP(ref pRec.back, ref pRec.front);
     }
     VEC_Set(ref pRec.pos, 0, 0, 0);
     return(pRec);
 }
Exemple #9
0
 private static ushort gmRingHitFuncNormal(AppMain.OBS_RECT ply_rect, AppMain.OBS_RECT ring_rect)
 {
     return(AppMain.ObjRectCheck(ply_rect, ring_rect));
 }
Exemple #10
0
    // Token: 0x060008E5 RID: 2277 RVA: 0x000512EC File Offset: 0x0004F4EC
    private static void gmGmkBreakObjHit(AppMain.OBS_RECT_WORK mine_rect, AppMain.OBS_RECT_WORK match_rect)
    {
        OBS_OBJECT_WORK parent_obj      = mine_rect.parent_obj;
        GMS_PLAYER_WORK gms_PLAYER_WORK = (GMS_PLAYER_WORK)match_rect.parent_obj;

        if (gms_PLAYER_WORK == AppMain.g_gm_main_system.ply_work[( int )(( UIntPtr )0)])
        {
            AppMain.GMS_GMK_BOBJ_WORK gms_GMK_BOBJ_WORK = (AppMain.GMS_GMK_BOBJ_WORK)parent_obj;
            AppMain.OBS_RECT_WORK     obs_RECT_WORK     = gms_GMK_BOBJ_WORK.gmk_work.ene_com.obj_work.rect_work[0];
            if (gms_PLAYER_WORK.act_state == 39 || gms_PLAYER_WORK.act_state == 31 || (gms_PLAYER_WORK.player_flag & 262144U) != 0U)
            {
                short  num3;
                short  num2;
                short  num  = num2 = (num3 = 0);
                ushort vect = 0;
                if (parent_obj.pos.x >= gms_PLAYER_WORK.obj_work.pos.x)
                {
                    num2 = ( short )((parent_obj.pos.x >> 12) + ( int )obs_RECT_WORK.rect.left - ( int )match_rect.rect.right);
                    num2 = ( short )((gms_PLAYER_WORK.obj_work.pos.x >> 12) - ( int )num2);
                    gms_GMK_BOBJ_WORK.hitcheck = 1;
                }
                else
                {
                    num = ( short )((parent_obj.pos.x >> 12) + ( int )obs_RECT_WORK.rect.right - ( int )match_rect.rect.left - (gms_PLAYER_WORK.obj_work.pos.x >> 12));
                    gms_GMK_BOBJ_WORK.hitcheck = 1;
                    vect = 32768;
                }
                if (parent_obj.pos.y >= gms_PLAYER_WORK.obj_work.pos.y)
                {
                    num3 = ( short )((parent_obj.pos.y >> 12) + ( int )obs_RECT_WORK.rect.top - ( int )match_rect.rect.bottom);
                    num3 = ( short )((gms_PLAYER_WORK.obj_work.pos.y >> 12) - ( int )num3);
                    gms_GMK_BOBJ_WORK.hitcheck = 1;
                }
                if (obs_RECT_WORK.rect.right > gms_GMK_BOBJ_WORK.breakrect_right)
                {
                    AppMain.OBS_RECT rect = obs_RECT_WORK.rect;
                    rect.right -= num;
                    if (obs_RECT_WORK.rect.right < gms_GMK_BOBJ_WORK.breakrect_right)
                    {
                        obs_RECT_WORK.rect.right = gms_GMK_BOBJ_WORK.breakrect_right;
                    }
                }
                if (obs_RECT_WORK.rect.left < gms_GMK_BOBJ_WORK.breakrect_left)
                {
                    AppMain.OBS_RECT rect2 = obs_RECT_WORK.rect;
                    rect2.left += num2;
                    if (obs_RECT_WORK.rect.left > gms_GMK_BOBJ_WORK.breakrect_left)
                    {
                        obs_RECT_WORK.rect.left = gms_GMK_BOBJ_WORK.breakrect_left;
                    }
                }
                if (obs_RECT_WORK.rect.top < gms_GMK_BOBJ_WORK.breakrect_top)
                {
                    AppMain.OBS_RECT rect3 = obs_RECT_WORK.rect;
                    rect3.top += num3;
                    if (obs_RECT_WORK.rect.top > gms_GMK_BOBJ_WORK.breakrect_top)
                    {
                        obs_RECT_WORK.rect.top = gms_GMK_BOBJ_WORK.breakrect_top;
                    }
                }
                gms_GMK_BOBJ_WORK.hitpass = true;
                short num4 = (short)(gms_PLAYER_WORK.obj_work.spd.x >> 12);
                short num5 = (short)(gms_PLAYER_WORK.obj_work.spd.y >> 12);
                if ((obs_RECT_WORK.rect.right + num4 <= gms_GMK_BOBJ_WORK.breakrect_right || obs_RECT_WORK.rect.left + num4 >= gms_GMK_BOBJ_WORK.breakrect_left) && obs_RECT_WORK.rect.top + num5 >= gms_GMK_BOBJ_WORK.breakrect_top)
                {
                    ushort efct_zone_idx = AppMain.tbl_gmk_breakobj_effect[gms_GMK_BOBJ_WORK.zone_type];
                    switch (gms_GMK_BOBJ_WORK.zone_type)
                    {
                    case 0:
                        if (AppMain.g_gs_main_sys_info.stage_id == 2)
                        {
                            efct_zone_idx = 3;
                        }
                        break;

                    case 2:
                        if (AppMain.g_gm_main_system.water_level != 65535 && ( int )AppMain.g_gm_main_system.water_level < (parent_obj.pos.y >> 12) + ( int )gms_GMK_BOBJ_WORK.breakrect_top)
                        {
                            efct_zone_idx = 11;
                        }
                        break;
                    }
                    OBS_OBJECT_WORK obs_OBJECT_WORK = (OBS_OBJECT_WORK)AppMain.GmEfctZoneEsCreate(null, gms_GMK_BOBJ_WORK.zone_type, (int)efct_zone_idx);
                    obs_OBJECT_WORK.pos.x = parent_obj.pos.x;
                    obs_OBJECT_WORK.pos.y = parent_obj.pos.y;
                    obs_OBJECT_WORK.pos.z = parent_obj.pos.z;
                    AppMain.gmGmkBreakObj_CreateParts(parent_obj, gms_GMK_BOBJ_WORK.zone_type, vect);
                    gms_GMK_BOBJ_WORK.gmk_work.ene_com.obj_work.col_work.obj_col.obj = null;
                    AppMain.GmEnemyDefaultDefFunc(mine_rect, match_rect);
                    GmSound.PlaySE("BreakOBJ");
                    GmPlayer.AddScore(gms_PLAYER_WORK, 100, parent_obj.pos.x, parent_obj.pos.y);
                }
            }
        }
    }
    // Token: 0x0600158E RID: 5518 RVA: 0x000BB54C File Offset: 0x000B974C
    private static void gmGmkBreakWallHit(AppMain.OBS_RECT_WORK mine_rect, AppMain.OBS_RECT_WORK match_rect)
    {
        AppMain.OBS_OBJECT_WORK parent_obj      = mine_rect.parent_obj;
        AppMain.GMS_PLAYER_WORK gms_PLAYER_WORK = (AppMain.GMS_PLAYER_WORK)match_rect.parent_obj;
        if (gms_PLAYER_WORK == AppMain.g_gm_main_system.ply_work[( int )(( UIntPtr )0)])
        {
            AppMain.GMS_GMK_BWALL_WORK gms_GMK_BWALL_WORK = (AppMain.GMS_GMK_BWALL_WORK)parent_obj;
            AppMain.OBS_RECT_WORK      obs_RECT_WORK      = gms_GMK_BWALL_WORK.gmk_work.ene_com.rect_work[2];
            switch (AppMain.GMM_GMK_TYPE_CHECK(gms_GMK_BWALL_WORK.obj_type))
            {
            case 0:
                if ((gms_PLAYER_WORK.player_flag & 262144U) != 0U)
                {
                    if (AppMain.MTM_MATH_ABS(gms_PLAYER_WORK.obj_work.spd_m) < gms_PLAYER_WORK.spd3 && AppMain.MTM_MATH_ABS(gms_PLAYER_WORK.obj_work.spd.x) < gms_PLAYER_WORK.spd3)
                    {
                        return;
                    }
                }
                else if (gms_PLAYER_WORK.act_state == 30 || gms_PLAYER_WORK.act_state == 29 || gms_PLAYER_WORK.act_state == 26 || gms_PLAYER_WORK.act_state == 27)
                {
                    if ((( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BWALL_HARD_SPIN_D) != 0U)
                    {
                        return;
                    }
                    if (gms_PLAYER_WORK.act_state != 26 && gms_PLAYER_WORK.act_state != 27)
                    {
                        gms_GMK_BWALL_WORK.gmk_work.ene_com.col_work.obj_col.obj = null;
                        gms_GMK_BWALL_WORK.hitcheck = 1;
                        gms_GMK_BWALL_WORK.hitpass  = 1;
                    }
                    else if (AppMain.MTM_MATH_ABS(gms_PLAYER_WORK.obj_work.spd_m) < AppMain.g_gm_player_parameter[( int )(( UIntPtr )0)].spd_max_spin / 4)
                    {
                        return;
                    }
                }
                else if (gms_PLAYER_WORK.act_state == 39)
                {
                    if ((( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BWALL_HARD_SPIN_J) != 0U)
                    {
                        return;
                    }
                }
                else
                {
                    if (gms_PLAYER_WORK.act_state != 22 && gms_PLAYER_WORK.act_state != 22 && gms_PLAYER_WORK.act_state != 21)
                    {
                        break;
                    }
                    if ((( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BWALL_HARD_DASH) != 0U)
                    {
                        return;
                    }
                }
                if (AppMain.GMM_GMK_TYPE_IS_VECT(gms_GMK_BWALL_WORK.obj_type) != 0)
                {
                    if (parent_obj.pos.x >= gms_PLAYER_WORK.obj_work.pos.x)
                    {
                        short num = (short)((parent_obj.pos.x >> 12) + (int)obs_RECT_WORK.rect.left - (int)match_rect.rect.right);
                        num = ( short )((gms_PLAYER_WORK.obj_work.pos.x >> 12) - ( int )num);
                        AppMain.OBS_RECT rect = obs_RECT_WORK.rect;
                        rect.left += num;
                        gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BWALL_HIT_LEFT;
                    }
                    else
                    {
                        short            num2  = (short)((parent_obj.pos.x >> 12) + (int)obs_RECT_WORK.rect.right - (int)match_rect.rect.left - (gms_PLAYER_WORK.obj_work.pos.x >> 12));
                        AppMain.OBS_RECT rect2 = obs_RECT_WORK.rect;
                        rect2.right -= num2;
                        gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BWALL_HIT_RIGHT;
                    }
                    gms_GMK_BWALL_WORK.gmk_work.ene_com.col_work.obj_col.obj = null;
                    gms_GMK_BWALL_WORK.hitpass = 1;
                    if (obs_RECT_WORK.rect.left >= -16 || obs_RECT_WORK.rect.right <= 16)
                    {
                        gms_GMK_BWALL_WORK.hitcheck = ( short )-gms_GMK_BWALL_WORK.hitcheck;
                        return;
                    }
                }
                else
                {
                    if (parent_obj.pos.y >= gms_PLAYER_WORK.obj_work.pos.y)
                    {
                        short num3 = (short)((parent_obj.pos.y >> 12) + (int)obs_RECT_WORK.rect.top - (int)match_rect.rect.bottom);
                        num3 = ( short )((gms_PLAYER_WORK.obj_work.pos.y >> 12) - ( int )num3);
                        AppMain.OBS_RECT rect3 = obs_RECT_WORK.rect;
                        rect3.top += num3;
                        gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BFLOOR_HIT_TOP;
                    }
                    else
                    {
                        short num4 = (short)((parent_obj.pos.y >> 12) + (int)obs_RECT_WORK.rect.bottom - (int)match_rect.rect.top);
                        num4 -= ( short )(gms_PLAYER_WORK.obj_work.pos.y >> 12);
                        AppMain.OBS_RECT rect4 = obs_RECT_WORK.rect;
                        rect4.bottom -= num4;
                        gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BFLOOR_HIT_BOTTOM;
                    }
                    gms_GMK_BWALL_WORK.gmk_work.ene_com.col_work.obj_col.obj = null;
                    gms_GMK_BWALL_WORK.hitpass = 1;
                    if (obs_RECT_WORK.rect.top >= -16 || obs_RECT_WORK.rect.bottom <= 16)
                    {
                        gms_GMK_BWALL_WORK.hitcheck = ( short )-gms_GMK_BWALL_WORK.hitcheck;
                        return;
                    }
                }
                break;

            case 1:
                if ((( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BFLOOR_HARD_CANNON) == 0U || gms_PLAYER_WORK.act_state == 67)
                {
                    if ((( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BFLOOR_HARD_CANNON) != 0U && gms_PLAYER_WORK.act_state == 67 && gms_PLAYER_WORK.obj_work.spd.y > 0)
                    {
                        return;
                    }
                    if ((gms_PLAYER_WORK.act_state == 39 || (( uint )gms_GMK_BWALL_WORK.broketype & AppMain.GMD_GMK_BFLOOR_HARD_CANNON) != 0U) && (gms_PLAYER_WORK.obj_work.pos.y > parent_obj.pos.y || gms_PLAYER_WORK.obj_work.spd.y > 0))
                    {
                        if (gms_PLAYER_WORK.obj_work.pos.y >= parent_obj.pos.y && gms_PLAYER_WORK.obj_work.spd.y >= 0)
                        {
                            return;
                        }
                        if (parent_obj.pos.y >= gms_PLAYER_WORK.obj_work.pos.y)
                        {
                            short num5 = (short)((parent_obj.pos.y >> 12) + (int)obs_RECT_WORK.rect.top - (int)match_rect.rect.bottom);
                            num5 = ( short )((gms_PLAYER_WORK.obj_work.pos.y >> 12) - ( int )num5);
                            AppMain.OBS_RECT rect5 = obs_RECT_WORK.rect;
                            rect5.top += num5;
                            gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BFLOOR_HIT_TOP;
                        }
                        else
                        {
                            short num6 = (short)((parent_obj.pos.y >> 12) + (int)obs_RECT_WORK.rect.bottom - (int)match_rect.rect.top);
                            num6 -= ( short )(gms_PLAYER_WORK.obj_work.pos.y >> 12);
                            AppMain.OBS_RECT rect6 = obs_RECT_WORK.rect;
                            rect6.bottom -= num6;
                            gms_GMK_BWALL_WORK.hitcheck = AppMain.GMD_GMK_BFLOOR_HIT_BOTTOM;
                        }
                        gms_GMK_BWALL_WORK.gmk_work.ene_com.col_work.obj_col.obj = null;
                        gms_GMK_BWALL_WORK.hitpass = 1;
                        if (obs_RECT_WORK.rect.top >= -16 || obs_RECT_WORK.rect.bottom <= 16)
                        {
                            gms_GMK_BWALL_WORK.hitcheck = ( short )-gms_GMK_BWALL_WORK.hitcheck;
                        }
                    }
                }
                break;

            default:
                return;
            }
        }
    }