Exemplo n.º 1
0
    // Token: 0x0600053F RID: 1343 RVA: 0x0002C71C File Offset: 0x0002A91C
    private static void gmGmkTarzanRopeUpdatePlayerMotion(OBS_OBJECT_WORK obj_work, int angle_target, int angle_current)
    {
        AppMain.UNREFERENCED_PARAMETER(obj_work);
        GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];
        OBS_OBJECT_WORK obj_work2       = gms_PLAYER_WORK.obj_work;

        AppMain.OBS_ACTION3D_NN_WORK obj_3d = obj_work2.obj_3d;
        float num  = 34f;
        int   num2 = AppMain.MTM_MATH_ABS(angle_target);
        int   num3 = AppMain.MTM_MATH_ABS(angle_current);

        if (num2 < 1792 && num3 < 1792)
        {
            int a = AppMain.gmGmkTarzanRopeGetGimmickRotZ(gms_PLAYER_WORK);
            if (gms_PLAYER_WORK.act_state != 64 && AppMain.MTM_MATH_ABS(a) < 208)
            {
                GmPlayer.ActionChange(gms_PLAYER_WORK, 64);
                obj_work2.disp_flag |= 4U;
            }
            return;
        }
        if (gms_PLAYER_WORK.act_state == 64)
        {
            GmPlayer.ActionChange(gms_PLAYER_WORK, 63);
            obj_work2.disp_flag |= 4U;
            return;
        }
        if ((obj_work2.disp_flag & 1U) != 0U)
        {
            if (angle_target > 0 && angle_current > 0)
            {
                if (obj_3d.frame[0] > num)
                {
                    obj_work2.disp_flag |= 16U;
                    return;
                }
            }
            else if (angle_target < 0 && angle_current < 0 && obj_3d.frame[0] < num)
            {
                obj_work2.disp_flag |= 16U;
                return;
            }
        }
        else if (angle_target > 0 && angle_current > 0)
        {
            if (obj_3d.frame[0] < num)
            {
                obj_work2.disp_flag |= 16U;
                return;
            }
        }
        else if (angle_target < 0 && angle_current < 0 && obj_3d.frame[0] > num)
        {
            obj_work2.disp_flag |= 16U;
        }
    }
Exemplo n.º 2
0
    // Token: 0x06001B0B RID: 6923 RVA: 0x000F62C4 File Offset: 0x000F44C4
    private static void gmGmkPulleyMove(OBS_OBJECT_WORK obj_work)
    {
        AppMain.GMS_ENEMY_3D_WORK gms_ENEMY_3D_WORK = (AppMain.GMS_ENEMY_3D_WORK)obj_work;
        GMS_PLAYER_WORK           gms_PLAYER_WORK   = AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)];

        if (gms_PLAYER_WORK.gmk_obj != obj_work)
        {
            AppMain.gmGmkPulleySecedeSet(obj_work, 0);
            obj_work.flag      |= 2U;
            obj_work.user_timer = 36;
            return;
        }
        if (obj_work.spd.x > 0)
        {
            obj_work.spd.x = obj_work.spd.x - 64;
            if (obj_work.spd.x < 0)
            {
                obj_work.spd.x = 0;
            }
        }
        else
        {
            obj_work.spd.x = obj_work.spd.x + 64;
            if (obj_work.spd.x > 0)
            {
                obj_work.spd.x = 0;
            }
        }
        if ((gms_ENEMY_3D_WORK.ene_com.eve_rec.flag & 2) != 0)
        {
            if ((gms_ENEMY_3D_WORK.ene_com.eve_rec.flag & 1) != 0)
            {
                obj_work.spd.x = obj_work.spd.x - 128;
            }
            else
            {
                obj_work.spd.x = obj_work.spd.x + 128;
            }
        }
        if ((AppMain.g_gs_main_sys_info.game_flag & 1U) != 0U)
        {
            int num = AppMain.MTM_MATH_CLIP(GmPlayer.KeyGetGimmickRotZ(gms_PLAYER_WORK), -24576, 24576);
            num            = num * 160 / 24576;
            obj_work.spd.x = obj_work.spd.x + num;
        }
        else
        {
            int num2 = AppMain.MTM_MATH_CLIP(gms_PLAYER_WORK.key_rot_z, -24576, 24576);
            num2           = num2 * 160 / 24576;
            obj_work.spd.x = obj_work.spd.x + num2;
        }
        if (gms_PLAYER_WORK.act_state != 59 && obj_work.spd.x > -256 && obj_work.spd.x < 256)
        {
            obj_work.user_flag |= 32768U;
        }
        if ((gms_PLAYER_WORK.act_state != 59 && gms_PLAYER_WORK.act_state != 66) || (gms_PLAYER_WORK.obj_work.disp_flag & 8U) != 0U)
        {
            int num3;
            int id;
            if ((gms_PLAYER_WORK.obj_work.disp_flag & 1U) != 0U)
            {
                num3 = 56;
                id   = 0;
            }
            else
            {
                num3 = 56;
                id   = 0;
            }
            if ((obj_work.spd.x < -256 || obj_work.spd.x > 256) && (obj_work.user_flag & 32768U) != 0U)
            {
                GmPlayer.ActionChange(gms_PLAYER_WORK, 59);
                AppMain.ObjDrawObjectActionSet3DNN(obj_work, 4, 0);
                obj_work.user_flag = ( uint )(( ulong )obj_work.user_flag & 18446744073709518847UL);
            }
            else if (gms_PLAYER_WORK.act_state != num3)
            {
                GmPlayer.ActionChange(gms_PLAYER_WORK, num3);
                gms_PLAYER_WORK.obj_work.disp_flag |= 4U;
                AppMain.ObjDrawObjectActionSet3DNN(obj_work, id, 0);
                obj_work.disp_flag |= 4U;
            }
        }
        obj_work.dir.z = ( ushort )AppMain.MTM_MATH_CLIP(( int )(( short )(obj_work.spd.x / 4)), -10240, 10240);
        gms_ENEMY_3D_WORK.ene_com.target_dp_dir.z = obj_work.dir.z;
        int num4;
        int num5;

        if ((gms_ENEMY_3D_WORK.ene_com.eve_rec.flag & 1) != 0)
        {
            num4 = gms_ENEMY_3D_WORK.ene_com.born_pos_x - ( int )(gms_ENEMY_3D_WORK.ene_com.eve_rec.left * 64) * 4096;
            num5 = gms_ENEMY_3D_WORK.ene_com.born_pos_x;
        }
        else
        {
            num4 = gms_ENEMY_3D_WORK.ene_com.born_pos_x;
            num5 = gms_ENEMY_3D_WORK.ene_com.born_pos_x + ( int )(gms_ENEMY_3D_WORK.ene_com.eve_rec.left * 64) * 4096;
        }
        if (obj_work.pos.x < num4)
        {
            if (gms_PLAYER_WORK.obj_work.pos.x > num4 + 32768)
            {
                gms_PLAYER_WORK.obj_work.pos.x = num4 + 32768;
            }
            AppMain.gmGmkPulleySonicTakeOffSet(gms_PLAYER_WORK, obj_work.spd.x);
            AppMain.gmGmkPulleySecedeSet(obj_work, num4);
            obj_work.user_timer = 0;
        }
        else if (obj_work.pos.x > num5)
        {
            if (gms_PLAYER_WORK.obj_work.pos.x < num5 - 32768)
            {
                gms_PLAYER_WORK.obj_work.pos.x = num5 - 32768;
            }
            AppMain.gmGmkPulleySonicTakeOffSet(gms_PLAYER_WORK, obj_work.spd.x);
            AppMain.gmGmkPulleySecedeSet(obj_work, num5);
            obj_work.user_timer = 0;
        }
        if (obj_work.ppFunc == AppMain.gmGmkPulleyMove && AppMain.MTM_MATH_ABS(obj_work.spd.x) > 4096)
        {
            AppMain.gmGmkPulleySparkInit(obj_work);
        }
        else
        {
            AppMain.gmGmkPulleySparkKill(obj_work);
        }
        AppMain.ObjObjectMove(obj_work);
        if ((gms_ENEMY_3D_WORK.ene_com.eve_rec.flag & 2) != 0)
        {
            int num6 = AppMain.MTM_MATH_ABS(gms_ENEMY_3D_WORK.ene_com.born_pos_x - obj_work.pos.x);
            num6          /= 2;
            obj_work.pos.y = gms_ENEMY_3D_WORK.ene_com.born_pos_y + num6;
        }
    }