// Token: 0x06001245 RID: 4677 RVA: 0x0009FA78 File Offset: 0x0009DC78
 private static void gmGmkDrainTankOutSinkRing()
 {
     AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.GmRingGetWork();
     for (AppMain.GMS_RING_WORK gms_RING_WORK = gms_RING_SYS_WORK.damage_ring_list_start; gms_RING_WORK != null; gms_RING_WORK = gms_RING_WORK.post_ring)
     {
         gms_RING_WORK.spd_y  = 4096;
         gms_RING_WORK.spd_x /= 2;
     }
 }
Exemple #2
0
 // Token: 0x06001562 RID: 5474 RVA: 0x000B9AE8 File Offset: 0x000B7CE8
 private static void gmGmkLoopExecuteRing(int loop_x, int loop_y)
 {
     AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.GmRingGetWork();
     for (AppMain.GMS_RING_WORK gms_RING_WORK = gms_RING_SYS_WORK.damage_ring_list_start; gms_RING_WORK != null; gms_RING_WORK = gms_RING_WORK.post_ring)
     {
         AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
         gms_RING_WORK2.pos.x = gms_RING_WORK2.pos.x + loop_x;
         AppMain.GMS_RING_WORK gms_RING_WORK3 = gms_RING_WORK;
         gms_RING_WORK3.pos.y = gms_RING_WORK3.pos.y + loop_y;
     }
 }
Exemple #3
0
 // Token: 0x06000D94 RID: 3476 RVA: 0x00076A14 File Offset: 0x00074C14
 public static void gmRingAttachRingList(AppMain.GMS_RING_WORK ring_work)
 {
     if (AppMain.gm_ring_sys_work.ring_list_end != null)
     {
         AppMain.gm_ring_sys_work.ring_list_end.post_ring = ring_work;
         ring_work.pre_ring  = AppMain.gm_ring_sys_work.ring_list_end;
         ring_work.post_ring = null;
         AppMain.gm_ring_sys_work.ring_list_end = ring_work;
         return;
     }
     AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
     AppMain.gm_ring_sys_work.ring_list_end = ring_work;
     gms_RING_SYS_WORK.ring_list_start      = ring_work;
     ring_work.pre_ring = (ring_work.post_ring = null);
 }
Exemple #4
0
    // Token: 0x06000DA2 RID: 3490 RVA: 0x000783E0 File Offset: 0x000765E0
    private static void gmRingDrawFuncRing3D(AppMain.GMS_RING_WORK ring_work)
    {
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        vecU.x = 0;
        vecU.y = AppMain.gm_ring_sys_work.dir;
        AppMain.OBS_CAMERA obs_CAMERA = AppMain.ObjCameraGet(AppMain.g_obj.glb_camera_id);
        vecU.z = ( ushort )(-( ushort )obs_CAMERA.roll);
        int draw_ring_count = (int)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].x = ring_work.pos.x;
        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].y = ring_work.pos.y;
        AppMain.gm_ring_sys_work.draw_ring_pos[draw_ring_count].z = ring_work.pos.z;
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        gms_RING_SYS_WORK.draw_ring_count += 1;
    }
Exemple #5
0
    private static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= (ushort)0 || !AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU16 = new AppMain.VecU16();
        vecU16.x = (ushort)0;
        vecU16.y = AppMain.gm_ring_sys_work.dir;
        vecU16.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gmRingSysWork = AppMain.gm_ring_sys_work;
        uint drawRingCount = (uint)AppMain.gm_ring_sys_work.draw_ring_count;

        AppMain.SNNS_VECTOR disp_pos;
        AppMain.ObjCameraDispPosGet(0, out disp_pos);
        float s1;
        float c1;

        AppMain.nnSinCos((int)vecU16.z - 8192, out s1, out c1);
        s1 *= 13.57638f;
        float num1 = c1 * 13.57638f;
        float s2;
        float c2;

        AppMain.nnSinCos((int)vecU16.z - 24576, out s2, out c2);
        float num2 = s2 * 13.57638f;
        float num3 = c2 * 13.57638f;

        AppMain.VecFx32     vecFx32    = new AppMain.VecFx32(gmRingSysWork.draw_ring_pos[0]);
        AppMain.SNNS_MATRIX snnsMatrix = new AppMain.SNNS_MATRIX();
        AppMain.nnMakeUnitMatrix(ref snnsMatrix);
        AppMain.nnTranslateMatrix(ref snnsMatrix, ref snnsMatrix, AppMain.FX_FX32_TO_F32(vecFx32.x), -AppMain.FX_FX32_TO_F32(vecFx32.y), AppMain.FX_FX32_TO_F32(vecFx32.z));
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = 6 * (int)drawRingCount - 2;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = (short)0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = (short)1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        for (int index1 = 0; (long)index1 < (long)drawRingCount; ++index1)
        {
            int    index2 = offset + 6 * index1;
            ushort num4   = (ushort)((uint)AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4U);
            buffer[index2].Tex.u     = buffer[index2 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4];
            buffer[index2 + 2].Tex.u = buffer[index2 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num4] + 0.25f;
            buffer[index2].Tex.v     = buffer[index2 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4];
            buffer[index2 + 1].Tex.v = buffer[index2 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num4] + 0.25f;
            buffer[index2].Col       = color;
            buffer[index2 + 1].Col   = buffer[index2 + 2].Col = buffer[index2 + 3].Col = buffer[index2].Col;
            buffer[index2].Pos.x     = s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 1].Pos.x = num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 2].Pos.x = -num2 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2 + 3].Pos.x = -s1 + AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].x - vecFx32.x);
            buffer[index2].Pos.y     = num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 1].Pos.y = num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 2].Pos.y = -num3 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2 + 3].Pos.y = -num1 - AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].y - vecFx32.y);
            buffer[index2].Pos.z     = buffer[index2 + 1].Pos.z = buffer[index2 + 2].Pos.z = buffer[index2 + 3].Pos.z = AppMain.FX_FX32_TO_F32(gmRingSysWork.draw_ring_pos[index1].z - vecFx32.z) - 1f;
            if (index1 != 0)
            {
                buffer[index2 - 1] = buffer[index2];
            }
            if ((long)(index1 + 1) < (long)drawRingCount)
            {
                buffer[index2 + 4] = buffer[index2 + 3];
            }
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref disp_pos);
        AppMain.amMatrixPush(ref snnsMatrix);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }
Exemple #6
0
    // Token: 0x06000D9A RID: 3482 RVA: 0x0007781C File Offset: 0x00075A1C
    public static void gmRingDrawEnd()
    {
        if (AppMain.gm_ring_sys_work.draw_ring_count <= 0)
        {
            return;
        }
        if (!AppMain.GmMainIsDrawEnable())
        {
            return;
        }
        AppMain.VecU16 vecU = default(AppMain.VecU16);
        vecU.x = 0;
        vecU.y = AppMain.gm_ring_sys_work.dir;
        vecU.z = AppMain.GmMainGetObjectRotation();
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        uint        draw_ring_count = (uint)AppMain.gm_ring_sys_work.draw_ring_count;
        SNNS_VECTOR snns_VECTOR;

        ObjCamera.DispPosGet(0, out snns_VECTOR);
        float num;
        float num2;

        AppMain.nnSinCos((int)vecU.z + -8192, out num, out num2);
        num  *= 13.576385f;
        num2 *= 13.576385f;
        float num3;
        float num4;

        AppMain.nnSinCos((int)vecU.z + -24576, out num3, out num4);
        num3 *= 13.576385f;
        num4 *= 13.576385f;
        AppMain.VecFx32 vecFx       = new AppMain.VecFx32(gms_RING_SYS_WORK.draw_ring_pos[0]);
        SNNS_MATRIX     snns_MATRIX = default(SNNS_MATRIX);

        AppMain.nnMakeUnitMatrix(ref snns_MATRIX);
        AppMain.nnTranslateMatrix(ref snns_MATRIX, ref snns_MATRIX, AppMain.FX_FX32_TO_F32(vecFx.x), -AppMain.FX_FX32_TO_F32(vecFx.y), AppMain.FX_FX32_TO_F32(vecFx.z));
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.type    = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.count   = (int)(6U * draw_ring_count - 2U);
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.ablend  = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldSrc  = 768;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldDst  = 774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.bldMode = 32774;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.aTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zMask   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.zTest   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.noSort  = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texlist = AppMain.gm_ring_obj_3d.texlist;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.texId   = 0;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.uwrap   = 1;
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vwrap   = 1;
        uint color = AppMain.gm_ring_sys_work.color;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D = AppMain.amDrawAlloc_NNS_PRIM3D_PCT(AppMain._AMS_PARAM_DRAW_PRIMITIVE.count);
        AppMain.NNS_PRIM3D_PCT[] buffer = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.buffer;
        int offset = AppMain._AMS_PARAM_DRAW_PRIMITIVE.vtxPCT3D.offset;

        AppMain._AMS_PARAM_DRAW_PRIMITIVE.format3D = 4;
        int num5 = 0;

        while ((long)num5 < (long)((ulong)draw_ring_count))
        {
            int    num6 = offset + 6 * num5;
            ushort num7 = (ushort)(AppMain.gm_ring_sys_work.draw_ring_uv_frame / 4);
            buffer[num6].Tex.u     = (buffer[num6 + 1].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num7]);
            buffer[num6 + 2].Tex.u = (buffer[num6 + 3].Tex.u = AppMain.gm_ring_roll_uv[0][(int)num7] + 0.25f);
            buffer[num6].Tex.v     = (buffer[num6 + 2].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num7]);
            buffer[num6 + 1].Tex.v = (buffer[num6 + 3].Tex.v = AppMain.gm_ring_roll_uv[1][(int)num7] + 0.25f);
            buffer[num6].Col       = color;
            buffer[num6 + 1].Col   = (buffer[num6 + 2].Col = (buffer[num6 + 3].Col = buffer[num6].Col));
            buffer[num6].Pos.x     = num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 1].Pos.x = num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 2].Pos.x = -num3 + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6 + 3].Pos.x = -num + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].x - vecFx.x);
            buffer[num6].Pos.y     = num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 1].Pos.y = num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 2].Pos.y = -num4 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6 + 3].Pos.y = -num2 - AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].y - vecFx.y);
            buffer[num6].Pos.z     = (buffer[num6 + 1].Pos.z = (buffer[num6 + 2].Pos.z = (buffer[num6 + 3].Pos.z = -1f + AppMain.FX_FX32_TO_F32(gms_RING_SYS_WORK.draw_ring_pos[num5].z - vecFx.z))));
            if (num5 != 0)
            {
                buffer[num6 - 1] = buffer[num6];
            }
            if ((long)(num5 + 1) < (long)((ulong)draw_ring_count))
            {
                buffer[num6 + 4] = buffer[num6 + 3];
            }
            num5++;
        }
        AppMain._AMS_PARAM_DRAW_PRIMITIVE.sortZ = AppMain.nnDistanceVector(ref buffer[offset].Pos, ref snns_VECTOR);
        AppMain.amMatrixPush(ref snns_MATRIX);
        AppMain.ObjDraw3DNNDrawPrimitive(AppMain._AMS_PARAM_DRAW_PRIMITIVE);
        AppMain.amMatrixPop();
    }
Exemple #7
0
    // Token: 0x06000D96 RID: 3478 RVA: 0x00076CF4 File Offset: 0x00074EF4
    public static void gmRingMain(MTS_TASK_TCB tcb)
    {
        if ((AppMain.gm_ring_sys_work.flag & 1U) != 0U)
        {
#if !NICE_PHYSICS
            AppMain.gm_ring_sys_work.ring_se_cnt = 0;
#endif
            return;
        }
        if (AppMain.g_obj.glb_camera_id >= 0)
        {
            AppMain.ObjDraw3DNNSetCamera(AppMain.g_obj.glb_camera_id, AppMain.g_obj.glb_camera_type);
        }
        if (AppMain.gm_ring_sys_work.se_wait > 0)
        {
            AppMain.gm_ring_sys_work.se_wait--;
        }
        AppMain.gmRingDrawBegin();
        AppMain.GMS_RING_WORK gms_RING_WORK;
        if (AppMain.ObjObjectPauseCheck(0U) != 0U)
        {
            gms_RING_WORK = AppMain.gm_ring_sys_work.ring_list_start;
            while (gms_RING_WORK != null)
            {
                AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
                gms_RING_WORK = gms_RING_WORK2.post_ring;
                AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
            }
            gms_RING_WORK = AppMain.gm_ring_sys_work.damage_ring_list_start;
            while (gms_RING_WORK != null)
            {
                AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
                gms_RING_WORK = gms_RING_WORK2.post_ring;
                if (gms_RING_WORK2.timer > 32 || (gms_RING_WORK2.timer & 2) != 0)
                {
                    AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
                }
            }
            gms_RING_WORK = AppMain.gm_ring_sys_work.slot_ring_list_start;
            while (gms_RING_WORK != null)
            {
                AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
                gms_RING_WORK = gms_RING_WORK2.post_ring;
                AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
            }
            AppMain.gmRingDrawEnd();
#if !NICE_PHYSICS
            AppMain.gm_ring_sys_work.ring_se_cnt = 0;
#endif
            return;
        }
        for (int i = 0; i < (int)AppMain.gm_ring_sys_work.player_num; i++)
        {
            GMS_PLAYER_WORK       gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[i];
            AppMain.OBS_RECT_WORK obs_RECT_WORK   = gms_PLAYER_WORK.rect_work[2];
            AppMain.ply_rect[i].pos.x = gms_PLAYER_WORK.obj_work.pos.x;
            AppMain.ply_rect[i].pos.y = gms_PLAYER_WORK.obj_work.pos.y;
            AppMain.ply_rect[i].pos.z = gms_PLAYER_WORK.obj_work.pos.z;
            short num;
            short num2;
            if (((gms_PLAYER_WORK.obj_work.disp_flag & 1U) ^ (obs_RECT_WORK.flag & 1U)) != 0U)
            {
                num  = (short)-obs_RECT_WORK.rect.right;
                num2 = (short)-obs_RECT_WORK.rect.left;
            }
            else
            {
                num  = obs_RECT_WORK.rect.left;
                num2 = obs_RECT_WORK.rect.right;
            }
            if (gms_PLAYER_WORK.obj_work.scale.x != 4096)
            {
                num  = (short)AppMain.FX_Mul((int)num, gms_PLAYER_WORK.obj_work.scale.x);
                num2 = (short)AppMain.FX_Mul((int)num2, gms_PLAYER_WORK.obj_work.scale.x);
            }
            AppMain.ply_rect[i].left  = num;
            AppMain.ply_rect[i].right = num2;
            if (((gms_PLAYER_WORK.obj_work.disp_flag & 2U) ^ (obs_RECT_WORK.flag & 2U)) != 0U)
            {
                num  = (short)-obs_RECT_WORK.rect.bottom;
                num2 = (short)-obs_RECT_WORK.rect.top;
            }
            else
            {
                num  = obs_RECT_WORK.rect.top;
                num2 = obs_RECT_WORK.rect.bottom;
            }
            if (gms_PLAYER_WORK.obj_work.scale.y != 4096)
            {
                num  = (short)AppMain.FX_Mul((int)num, gms_PLAYER_WORK.obj_work.scale.y);
                num2 = (short)AppMain.FX_Mul((int)num2, gms_PLAYER_WORK.obj_work.scale.y);
            }
            AppMain.ply_rect[i].top    = num;
            AppMain.ply_rect[i].bottom = num2;
            AppMain.ply_rect[i].back   = 0;
            AppMain.ply_rect[i].front  = 0;
        }
        AppMain.ring_rect.left   = -9;
        AppMain.ring_rect.top    = -9;
        AppMain.ring_rect.right  = 9;
        AppMain.ring_rect.bottom = 9;
        AppMain.ring_rect.back   = -8;
        AppMain.ring_rect.front  = 8;
        AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK = AppMain.gm_ring_sys_work;
        if ((gms_RING_SYS_WORK.draw_ring_uv_frame += 1) >= 64)
        {
            AppMain.gm_ring_sys_work.draw_ring_uv_frame = 0;
        }
        if ((AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)].player_flag & 262144U) != 0U)
        {
            AppMain.gm_ring_fall_acc_x = (short)AppMain.FX_Mul(-288, AppMain.mtMathSin((int)AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)].obj_work.dir_fall));
            AppMain.gm_ring_fall_acc_y = (short)AppMain.FX_Mul(288, AppMain.mtMathCos((int)AppMain.g_gm_main_system.ply_work[(int)((UIntPtr)0)].obj_work.dir_fall));
        }
        if (AppMain.gm_ring_sys_work.wait_slot_ring_num != 0)
        {
            AppMain.gm_ring_sys_work.slot_ring_timer--;
            if (AppMain.gm_ring_sys_work.slot_ring_timer <= 0)
            {
                if (AppMain.gm_ring_sys_work.wait_slot_ring_num >= 2)
                {
                    AppMain.GmRingCreateSlotRing(AppMain.gm_ring_sys_work.slot_target_obj, 1048576, AppMain.gm_ring_sys_work.slot_ring_create_dir);
                    AppMain.GmRingCreateSlotRing(AppMain.gm_ring_sys_work.slot_target_obj, 1048576, (ushort)(AppMain.gm_ring_sys_work.slot_ring_create_dir + 32768 - 2048));
                    AppMain.gm_ring_sys_work.wait_slot_ring_num -= 2;
                }
                else
                {
                    AppMain.GmRingCreateSlotRing(AppMain.gm_ring_sys_work.slot_target_obj, 1048576, AppMain.gm_ring_sys_work.slot_ring_create_dir);
                    AppMain.gm_ring_sys_work.wait_slot_ring_num--;
                }
                AppMain.GMS_RING_SYS_WORK gms_RING_SYS_WORK2 = AppMain.gm_ring_sys_work;
                gms_RING_SYS_WORK2.slot_ring_create_dir -= 2048;
                AppMain.gm_ring_sys_work.slot_ring_timer = 4;
            }
        }
        gms_RING_WORK = AppMain.gm_ring_sys_work.ring_list_start;
        while (gms_RING_WORK != null)
        {
            AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
            gms_RING_WORK = gms_RING_WORK2.post_ring;
            if (AppMain.ObjViewOutCheck(gms_RING_WORK2.pos.x, gms_RING_WORK2.pos.y, AppMain.gm_ring_die_offset, 0, 0, 0, 0) != 0)
            {
                if (gms_RING_WORK2.eve_rec != null)
                {
                    gms_RING_WORK2.eve_rec.pos_x = (byte)(gms_RING_WORK2.pos.x >> 12 & 255);
                }
                AppMain.gmRingDetachRingList(gms_RING_WORK2);
                AppMain.gmRingFreeRingWork(gms_RING_WORK2);
            }
            else
            {
                AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
                AppMain.ring_rect.pos.z = 0;
                int i    = 0;
                int num3 = 0;
                while (i < (int)AppMain.gm_ring_sys_work.player_num)
                {
                    GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[i];
                    if ((gms_PLAYER_WORK.player_flag & 1024U) == 0U)
                    {
                        AppMain.ring_rect.pos.x = gms_RING_WORK2.pos.x;
                        AppMain.ring_rect.pos.y = gms_RING_WORK2.pos.y;
                        if (AppMain.gm_ring_sys_work.rec_func(AppMain.ply_rect[i], AppMain.ring_rect) != 0)
                        {
                            num3 = 1;
                            GmPlayer.RingGet(gms_PLAYER_WORK, 1);
                            AppMain.GmComEfctCreateRing(AppMain.ring_rect.pos.x, AppMain.ring_rect.pos.y);
                        }
                    }
                    i++;
                }
                if (num3 != 0)
                {
                    gms_RING_WORK2.timer = 0;
                    AppMain.gmRingDetachRingList(gms_RING_WORK2);
                    AppMain.gmRingFreeRingWork(gms_RING_WORK2);
                }
            }
        }
        gms_RING_WORK = AppMain.gm_ring_sys_work.damage_ring_list_start;
        while (gms_RING_WORK != null)
        {
            AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
            gms_RING_WORK = gms_RING_WORK2.post_ring;
            if (AppMain.ObjViewOutCheck(gms_RING_WORK2.pos.x, gms_RING_WORK2.pos.y, 196, 0, 0, 0, 0) != 0)
            {
                AppMain.gmRingDetachDamageRingList(gms_RING_WORK2);
                AppMain.gmRingFreeRingWork(gms_RING_WORK2);
            }
            else
            {
                AppMain.GMS_RING_WORK gms_RING_WORK3 = gms_RING_WORK2;
                gms_RING_WORK3.pos.x = gms_RING_WORK3.pos.x + gms_RING_WORK2.spd_x;
                if ((gms_RING_WORK2.flag & 4) != 0)
                {
                    AppMain.GMS_RING_WORK gms_RING_WORK4 = gms_RING_WORK2;
                    gms_RING_WORK4.pos.y = gms_RING_WORK4.pos.y - gms_RING_WORK2.spd_y;
                }
                else
                {
                    AppMain.GMS_RING_WORK gms_RING_WORK5 = gms_RING_WORK2;
                    gms_RING_WORK5.pos.y = gms_RING_WORK5.pos.y + gms_RING_WORK2.spd_y;
                }
                gms_RING_WORK2.spd_x += (int)AppMain.gm_ring_fall_acc_x;
                gms_RING_WORK2.spd_y += (int)AppMain.gm_ring_fall_acc_y;
                AppMain.gm_ring_sys_work.col_func(gms_RING_WORK2);
                AppMain.GMS_RING_WORK gms_RING_WORK6 = gms_RING_WORK2;
                gms_RING_WORK6.timer -= 1;
                if (gms_RING_WORK2.timer == 0)
                {
                    AppMain.gmRingDetachDamageRingList(gms_RING_WORK2);
                    AppMain.gmRingFreeRingWork(gms_RING_WORK2);
                }
                else
                {
                    if (gms_RING_WORK2.timer <= 216)
                    {
                        AppMain.ring_rect.pos.z = 0;
                        int i    = 0;
                        int num3 = 0;
                        while (i < (int)AppMain.gm_ring_sys_work.player_num)
                        {
                            GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[i];
                            if ((gms_PLAYER_WORK.player_flag & 1024U) == 0U)
                            {
                                AppMain.ring_rect.pos.x = gms_RING_WORK2.pos.x;
                                AppMain.ring_rect.pos.y = gms_RING_WORK2.pos.y;
                                if (AppMain.gm_ring_sys_work.rec_func(AppMain.ply_rect[i], AppMain.ring_rect) != 0)
                                {
                                    num3 = 1;
                                    short ring_stage_num = gms_PLAYER_WORK.ring_stage_num;
                                    GmPlayer.RingGet(gms_PLAYER_WORK, 1);
                                    if (ring_stage_num < 999)
                                    {
                                        GMS_PLAYER_WORK gms_PLAYER_WORK2 = gms_PLAYER_WORK;
                                        gms_PLAYER_WORK2.ring_stage_num -= 1;
                                    }
                                    AppMain.GmComEfctCreateRing(AppMain.ring_rect.pos.x, AppMain.ring_rect.pos.y);
                                    if ((AppMain.gm_ring_sys_work.flag & 16777216U << i) != 0U)
                                    {
                                        AppMain.gm_ring_sys_work.flag &= ~(16777216U << i);
                                    }
                                }
                            }
                            i++;
                        }
                        if (num3 != 0)
                        {
                            gms_RING_WORK2.timer = 0;
                            AppMain.gmRingDetachDamageRingList(gms_RING_WORK2);
                            AppMain.gmRingFreeRingWork(gms_RING_WORK2);
                        }
                    }
                    if (gms_RING_WORK2.timer > 32 || (gms_RING_WORK2.timer & 2) != 0)
                    {
                        AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
                    }
                }
            }
        }
        if (AppMain.gm_ring_sys_work.damage_ring_list_start == null)
        {
            for (int i = 0; i < (int)AppMain.gm_ring_sys_work.player_num; i++)
            {
                if ((AppMain.gm_ring_sys_work.flag & 16777216U << i) != 0U)
                {
                    AppMain.gm_ring_sys_work.damage_num[i] = 0;
                    AppMain.gm_ring_sys_work.flag         &= ~(16777216U << i);
                }
            }
        }
        gms_RING_WORK = AppMain.gm_ring_sys_work.slot_ring_list_start;
        while (gms_RING_WORK != null)
        {
            AppMain.GMS_RING_WORK gms_RING_WORK2 = gms_RING_WORK;
            gms_RING_WORK = gms_RING_WORK2.post_ring;
            if (AppMain.ObjViewOutCheck(gms_RING_WORK2.pos.x, gms_RING_WORK2.pos.y, 512, 0, 0, 0, 0) != 0)
            {
                AppMain.gmRingDetachSlotRingList(gms_RING_WORK2);
                AppMain.gmRingFreeRingWork(gms_RING_WORK2);
            }
            else
            {
                AppMain.GMS_RING_WORK gms_RING_WORK7 = gms_RING_WORK2;
                gms_RING_WORK7.pos.x = gms_RING_WORK7.pos.x + gms_RING_WORK2.spd_x;
                AppMain.GMS_RING_WORK gms_RING_WORK8 = gms_RING_WORK2;
                gms_RING_WORK8.pos.y = gms_RING_WORK8.pos.y + gms_RING_WORK2.spd_y;
                AppMain.gm_ring_sys_work.ring_draw_func(gms_RING_WORK2);
                AppMain.ring_rect.pos.z = 0;
                int i    = 0;
                int num3 = 0;
                while (i < (int)AppMain.gm_ring_sys_work.player_num)
                {
                    GMS_PLAYER_WORK gms_PLAYER_WORK = AppMain.g_gm_main_system.ply_work[i];
                    if ((gms_PLAYER_WORK.player_flag & 1024U) == 0U)
                    {
                        AppMain.ring_rect.pos.x = gms_RING_WORK2.pos.x;
                        AppMain.ring_rect.pos.y = gms_RING_WORK2.pos.y;
                        if (AppMain.gm_ring_sys_work.rec_func(AppMain.ply_rect[i], AppMain.ring_rect) != 0)
                        {
                            num3 = 1;
                            GmPlayer.RingGet(gms_PLAYER_WORK, 1);
                            AppMain.GmComEfctCreateRing(AppMain.ring_rect.pos.x, AppMain.ring_rect.pos.y);
                        }
                    }
                    i++;
                }
                if (num3 != 0)
                {
                    gms_RING_WORK2.timer = 0;
                    AppMain.gmRingDetachSlotRingList(gms_RING_WORK2);
                    AppMain.gmRingFreeRingWork(gms_RING_WORK2);
                }
            }
        }
        AppMain.gmRingDrawEnd();
#if !NICE_PHYSICS
        AppMain.gm_ring_sys_work.ring_se_cnt = 0;
#endif
    }