private static int objBlockColLimit(AppMain.OBS_COL_CHK_DATA pData) { switch (pData.vec) { case 0: if (AppMain._obj_bcol.right - 1 < pData.pos_x) { return(AppMain._obj_bcol.right - 1 - pData.pos_x); } goto case 1; case 1: if (AppMain._obj_bcol.left > pData.pos_x) { return(pData.pos_x - AppMain._obj_bcol.left); } break; case 2: if (AppMain._obj_bcol.bottom - 1 < pData.pos_y) { return(AppMain._obj_bcol.bottom - 1 - pData.pos_y); } goto case 3; case 3: if (AppMain._obj_bcol.top > pData.pos_y) { return(pData.pos_y - AppMain._obj_bcol.top); } goto case 0; } return(1); }
// Token: 0x06000019 RID: 25 RVA: 0x00002591 File Offset: 0x00000791 private static int objBlockColBlockFill(AppMain.OBS_COL_CHK_DATA pData) { if (pData.dir != null) { pData.dir[0] = 0; } return(AppMain.objBlockCalcFill(pData)); }
private static int objBlockColEmpty(AppMain.OBS_COL_CHK_DATA pData) { if (pData.dir != null) { pData.dir[0] = (ushort)0; } return(AppMain.objBlockCalcEmpty(pData)); }
private static int objBlockColBlockFillThrough(AppMain.OBS_COL_CHK_DATA pData) { if (pData.dir != null) { pData.dir[0] = (ushort)0; } if (pData.attr != null) { pData.attr[0] |= 2U; } return(((int)pData.flag & 128) != 0 ? AppMain.objBlockCalcEmpty(pData) : AppMain.objBlockCalcFill(pData)); }
public AppMain.OBS_COL_CHK_DATA Assign(AppMain.OBS_COL_CHK_DATA data) { if (this != data) { this.pos_x = data.pos_x; this.pos_y = data.pos_y; this.dir = data.dir; this.dir = data.dir; this.attr = data.attr; this.attr = data.attr; this.flag = data.flag; this.vec = data.vec; } return(this); }
// Token: 0x06000012 RID: 18 RVA: 0x000020E8 File Offset: 0x000002E8 private static int ObjBlockCollisionDet(int lPosX, int lPosY, ushort usFlag, ushort usVec, ushort[] pDir, uint[] pAttr) { AppMain.OBS_COL_CHK_DATA obs_COL_CHK_DATA = GlobalPool <AppMain.OBS_COL_CHK_DATA> .Alloc(); obs_COL_CHK_DATA.pos_x = lPosX; obs_COL_CHK_DATA.pos_y = lPosY; obs_COL_CHK_DATA.dir = pDir; obs_COL_CHK_DATA.attr = pAttr; obs_COL_CHK_DATA.flag = usFlag; obs_COL_CHK_DATA.vec = usVec; int result = AppMain.ObjBlockCollision(obs_COL_CHK_DATA); GlobalPool <AppMain.OBS_COL_CHK_DATA> .Release(obs_COL_CHK_DATA); return(result); }
// Token: 0x06000017 RID: 23 RVA: 0x00002518 File Offset: 0x00000718 private static int objBlockCalcFill(AppMain.OBS_COL_CHK_DATA pData) { switch (pData.vec) { case 0: return(-(pData.pos_x & 15)); case 1: return(-(15 - (pData.pos_x & 15))); case 2: return(-(pData.pos_y & 15)); case 3: return(-(15 - (pData.pos_y & 15))); default: return(15); } }
// Token: 0x06000015 RID: 21 RVA: 0x000023F4 File Offset: 0x000005F4 private static int objBlockColLimit(AppMain.OBS_COL_CHK_DATA pData) { switch (pData.vec) { case 0: goto IL_6E; case 1: goto IL_96; case 2: if (AppMain._obj_bcol.bottom - 1 < pData.pos_y) { return(AppMain._obj_bcol.bottom - 1 - pData.pos_y); } break; case 3: break; default: return(1); } if (AppMain._obj_bcol.top > pData.pos_y) { return(pData.pos_y - AppMain._obj_bcol.top); } IL_6E: if (AppMain._obj_bcol.right - 1 < pData.pos_x) { return(AppMain._obj_bcol.right - 1 - pData.pos_x); } IL_96: if (AppMain._obj_bcol.left > pData.pos_x) { return(pData.pos_x - AppMain._obj_bcol.left); } return(1); }
private static int ObjBlockCollisionDet( int lPosX, int lPosY, ushort usFlag, ushort usVec, ushort[] pDir, uint[] pAttr) { AppMain.OBS_COL_CHK_DATA pData = AppMain.GlobalPool <AppMain.OBS_COL_CHK_DATA> .Alloc(); pData.pos_x = lPosX; pData.pos_y = lPosY; pData.dir = pDir; pData.attr = pAttr; pData.flag = usFlag; pData.vec = usVec; int num = AppMain.ObjBlockCollision(pData); AppMain.GlobalPool <AppMain.OBS_COL_CHK_DATA> .Release(pData); return(num); }
// Token: 0x06000014 RID: 20 RVA: 0x00002348 File Offset: 0x00000548 private static int objGetBlockColData(AppMain.OBS_COL_CHK_DATA pData) { int num = 0; int num2 = 0; if ((pData.flag & 64) != 0) { int num3 = AppMain.objBlockColLimit(pData); if (num3 < 0) { return(num3); } } else { num = AppMain.MTM_MATH_CLIP(pData.pos_x, AppMain._obj_bcol.left, AppMain._obj_bcol.right - 1); num2 = AppMain.MTM_MATH_CLIP(pData.pos_y, AppMain._obj_bcol.top, AppMain._obj_bcol.bottom - 1); } uint num4 = (uint)((long)(num2 >> 4) * (long)((ulong)AppMain._obj_bcol.width) + (long)(num >> 4)); ushort num5 = (ushort)AppMain._obj_bcol.pData[(int)(pData.flag & 1)][(int)((UIntPtr)num4)]; return(AppMain._obj_block_collision_func[( int )num5](pData)); }
private static void gmRingMoveCollsion(AppMain.GMS_RING_WORK ring_work) { int num1 = 0; int spdY = ring_work.spd_y; AppMain.OBS_COL_CHK_DATA pData = AppMain.GlobalPool <AppMain.OBS_COL_CHK_DATA> .Alloc(); if (((int)ring_work.flag & 4) != 0) { int num2 = -spdY; } pData.flag = ((int)ring_work.flag & 2) == 0 ? (ushort)0 : (ushort)1; pData.dir = (ushort[])null; pData.attr = (uint[])null; pData.pos_x = ring_work.pos.x >> 12; pData.pos_y = ring_work.pos.y >> 12; if (ring_work.spd_y > 0) { pData.pos_y += 9; pData.vec = (ushort)2; num1 = AppMain.ObjDiffCollisionFast(pData); if (num1 < 0) { if (((int)ring_work.flag & 4) != 0) { ring_work.pos.y -= num1 << 12; } else { ring_work.pos.y += num1 << 12; } } } else if (ring_work.spd_y < 0) { pData.pos_y += -9; pData.vec = (ushort)3; num1 = AppMain.ObjDiffCollisionFast(pData); if (num1 < 0) { if (((int)ring_work.flag & 4) != 0) { ring_work.pos.y += num1 << 12; } else { ring_work.pos.y -= num1 << 12; } } } if (num1 < 0) { ring_work.spd_y -= ring_work.spd_y >> 2; ring_work.spd_y = -ring_work.spd_y; } int num3 = 0; pData.pos_y = ring_work.pos.y >> 12; if (ring_work.spd_x > 0) { pData.pos_x += 9; pData.vec = (ushort)0; num3 = AppMain.ObjDiffCollisionFast(pData); if (num3 < 0) { ring_work.pos.x += num3 << 12; } } else if (ring_work.spd_x < 0) { pData.pos_x += -9; pData.vec = (ushort)1; num3 = AppMain.ObjDiffCollisionFast(pData); if (num3 < 0) { ring_work.pos.x -= num3 << 12; } } if (num3 < 0) { ring_work.spd_x -= ring_work.spd_x >> 2; ring_work.spd_x = -ring_work.spd_x; } AppMain.GlobalPool <AppMain.OBS_COL_CHK_DATA> .Release(pData); }
// Token: 0x06000D9C RID: 3484 RVA: 0x00077F0C File Offset: 0x0007610C public static void gmRingMoveCollsion(AppMain.GMS_RING_WORK ring_work) { int num = 0; int num2 = ring_work.spd_y; AppMain.OBS_COL_CHK_DATA obs_COL_CHK_DATA = GlobalPool <AppMain.OBS_COL_CHK_DATA> .Alloc(); if ((ring_work.flag & 4) != 0) { num2 = -num2; } if ((ring_work.flag & 2) != 0) { obs_COL_CHK_DATA.flag = 1; } else { obs_COL_CHK_DATA.flag = 0; } obs_COL_CHK_DATA.dir = null; obs_COL_CHK_DATA.attr = null; obs_COL_CHK_DATA.pos_x = ring_work.pos.x >> 12; obs_COL_CHK_DATA.pos_y = ring_work.pos.y >> 12; if (ring_work.spd_y > 0) { obs_COL_CHK_DATA.pos_y += 9; obs_COL_CHK_DATA.vec = 2; num = AppMain.ObjDiffCollisionFast(obs_COL_CHK_DATA); if (num < 0) { if ((ring_work.flag & 4) != 0) { ring_work.pos.y = ring_work.pos.y - (num << 12); } else { ring_work.pos.y = ring_work.pos.y + (num << 12); } } } else if (ring_work.spd_y < 0) { obs_COL_CHK_DATA.pos_y += -9; obs_COL_CHK_DATA.vec = 3; num = AppMain.ObjDiffCollisionFast(obs_COL_CHK_DATA); if (num < 0) { if ((ring_work.flag & 4) != 0) { ring_work.pos.y = ring_work.pos.y + (num << 12); } else { ring_work.pos.y = ring_work.pos.y - (num << 12); } } } if (num < 0) { ring_work.spd_y -= ring_work.spd_y >> 2; ring_work.spd_y = -ring_work.spd_y; } num = 0; obs_COL_CHK_DATA.pos_y = ring_work.pos.y >> 12; if (ring_work.spd_x > 0) { obs_COL_CHK_DATA.pos_x += 9; obs_COL_CHK_DATA.vec = 0; num = AppMain.ObjDiffCollisionFast(obs_COL_CHK_DATA); if (num < 0) { ring_work.pos.x = ring_work.pos.x + (num << 12); } } else if (ring_work.spd_x < 0) { obs_COL_CHK_DATA.pos_x += -9; obs_COL_CHK_DATA.vec = 1; num = AppMain.ObjDiffCollisionFast(obs_COL_CHK_DATA); if (num < 0) { ring_work.pos.x = ring_work.pos.x - (num << 12); } } if (num < 0) { ring_work.spd_x -= ring_work.spd_x >> 2; ring_work.spd_x = -ring_work.spd_x; } GlobalPool <AppMain.OBS_COL_CHK_DATA> .Release(obs_COL_CHK_DATA); }
// Token: 0x06000013 RID: 19 RVA: 0x00002138 File Offset: 0x00000338 private static int ObjBlockCollision(AppMain.OBS_COL_CHK_DATA pData) { int num = 0; short num2 = 0; short num3 = 0; if (AppMain._obj_bcol.pData[0] == null) { switch (pData.vec) { case 0: num = AppMain._obj_bcol.right - pData.pos_x; break; case 1: num = pData.pos_x - AppMain._obj_bcol.left; break; case 2: num = AppMain._obj_bcol.bottom - pData.pos_y; break; case 3: num = pData.pos_y - AppMain._obj_bcol.top; break; } return(AppMain.MTM_MATH_CLIP(num, -31, 31)); } if (pData.dir != null) { ushort num4 = pData.dir[0]; } if (pData.attr != null) { uint num5 = pData.attr[0]; } num = AppMain.objGetBlockColData(pData); if ((pData.vec & 2) != 0) { short num6 = (short)(pData.pos_y & 15); if ((pData.vec & 1) != 0) { num6 -= ( short )num; } else { num6 += ( short )num; } if (num6 == 0) { num3 = -16; } else if (num6 == 15) { num3 = 16; } } else { short num6 = (short)(pData.pos_x & 15); if ((pData.vec & 1) != 0) { num6 -= ( short )num; } else { num6 += ( short )num; } if (num6 == 0) { num2 = -16; } else if (num6 == 15) { num2 = 16; } } if (num2 != 0 || num3 != 0) { uint num7 = 0U; ushort num8 = 0; if (pData.dir != null) { num8 = pData.dir[0]; } if (pData.attr != null) { num7 = pData.attr[0]; } pData.pos_x += ( int )num2; pData.pos_y += ( int )num3; num = AppMain.objGetBlockColData(pData); pData.pos_x -= ( int )num2; pData.pos_y -= ( int )num3; if (num >= 0) { if (pData.dir != null) { pData.dir[0] = num8; } if (pData.attr != null) { pData.attr[0] = num7; } } if (num2 < 0) { num2 += 1; } if (num2 > 0) { num2 -= 1; } if (num3 < 0) { num3 += 1; } if (num3 > 0) { num3 -= 1; } if ((pData.vec & 1) != 0) { num -= ( int )(num2 + num3); } else { num += ( int )(num2 + num3); } } return(num); }
private static int ObjBlockCollision(AppMain.OBS_COL_CHK_DATA pData) { int a = 0; short num1 = 0; short num2 = 0; if (AppMain._obj_bcol.pData[0] == null) { switch (pData.vec) { case 0: a = AppMain._obj_bcol.right - pData.pos_x; break; case 1: a = pData.pos_x - AppMain._obj_bcol.left; break; case 2: a = AppMain._obj_bcol.bottom - pData.pos_y; break; case 3: a = pData.pos_y - AppMain._obj_bcol.top; break; } return(AppMain.MTM_MATH_CLIP(a, -31, 31)); } if (pData.dir != null) { int num3 = (int)pData.dir[0]; } if (pData.attr != null) { int num4 = (int)pData.attr[0]; } int num5 = AppMain.objGetBlockColData(pData); if (((int)pData.vec & 2) != 0) { short num6 = (short)(pData.pos_y & 15); switch (((int)pData.vec & 1) == 0 ? (short)((int)num6 + (int)(short)num5) : (short)((int)num6 - (int)(short)num5)) { case 0: num2 = (short)-16; break; case 15: num2 = (short)16; break; } } else { short num6 = (short)(pData.pos_x & 15); switch (((int)pData.vec & 1) == 0 ? (short)((int)num6 + (int)(short)num5) : (short)((int)num6 - (int)(short)num5)) { case 0: num1 = (short)-16; break; case 15: num1 = (short)16; break; } } if (num1 != (short)0 || num2 != (short)0) { uint num6 = 0; ushort num7 = 0; if (pData.dir != null) { num7 = pData.dir[0]; } if (pData.attr != null) { num6 = pData.attr[0]; } pData.pos_x += (int)num1; pData.pos_y += (int)num2; int blockColData = AppMain.objGetBlockColData(pData); pData.pos_x -= (int)num1; pData.pos_y -= (int)num2; if (blockColData >= 0) { if (pData.dir != null) { pData.dir[0] = num7; } if (pData.attr != null) { pData.attr[0] = num6; } } if (num1 < (short)0) { ++num1; } if (num1 > (short)0) { --num1; } if (num2 < (short)0) { ++num2; } if (num2 > (short)0) { --num2; } num5 = ((int)pData.vec & 1) == 0 ? blockColData + ((int)num1 + (int)num2) : blockColData - ((int)num1 + (int)num2); } return(num5); }