// 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; } }
// 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; } }
// 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); }
// 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; }
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(); }
// 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(); }
// 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 }