Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 // 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));
 }
Ejemplo n.º 3
0
 private static int objBlockColEmpty(AppMain.OBS_COL_CHK_DATA pData)
 {
     if (pData.dir != null)
     {
         pData.dir[0] = (ushort)0;
     }
     return(AppMain.objBlockCalcEmpty(pData));
 }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
    // 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);
    }
Ejemplo n.º 7
0
    // 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);
        }
    }
Ejemplo n.º 8
0
    // 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);
    }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
    // 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));
    }
Ejemplo n.º 11
0
    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);
    }
Ejemplo n.º 12
0
    // 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);
    }
Ejemplo n.º 13
0
    // 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);
    }
Ejemplo n.º 14
0
    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);
    }