Esempio n. 1
0
    private bool MoveSouth(LinkedList<Entity> e, CollisionMap c)
    {
        // Move south.
        DeltaY += Velocity;
        //Check for any interactions.
        if (Interactions(e, Direction.S))
            return true;

        //Move if we have the velocity to.
        while (DeltaY >= DeltaScale)
        {

            for (int i = 0; i != Size; i++)
            {
                if (c.Collide(X + i, Y + Size))
                {
                    DeltaY = DeltaScale - 1;
                    return false;
                }
            }

                DeltaY = DeltaY - DeltaScale;
            Y++;
            if (Interactions(e, Direction.S))
            {
                DeltaY = DeltaScale / 2;
                DeltaX = DeltaScale / 2;
                return true;
            }
        }
        return false;
    }
Esempio n. 2
0
    private bool MoveWest(LinkedList<Entity> e, CollisionMap c)
    {
        // Move south.
        DeltaX -= Velocity;
        //Check for any interactions.
        if (Interactions(e, Direction.W))
            return true;

        //Move if we have the velocity to.
        while (DeltaX < 0)
        {
            for (int i = 0; i != Size; i++)
            {
                if (c.Collide(X - 1, Y + i))
                {
                    DeltaX = 0;
                    return false;
                }
            }
            DeltaX = DeltaX + DeltaScale;
            X--;
            //halt movement.
            if (Interactions(e, Direction.W))
            {
                DeltaY = DeltaScale / 2;
                DeltaX = DeltaScale / 2;
                return true;
            }
        }
        return false;
    }
Esempio n. 3
0
    private bool MoveNorth(LinkedList<Entity> e, CollisionMap c)
    {
        // Move.
        DeltaY -= Velocity;
        //Check for any interactions.
        if (Interactions(e,Direction.N))
            return true;

        //Move if we have the velocity to.
        while (DeltaY < 0)
        {
            for (int i = 0; i != Size; i++)
            {
                if (c.Collide(X + i, Y - 1))
                {
                    DeltaY = 0;
                    return false;
                }
            }

            DeltaY = DeltaY + DeltaScale;
            Y--;
            if (Interactions(e, Direction.N))
            {
                DeltaY = DeltaScale / 2;
                DeltaX = DeltaScale / 2;
                return true;
            }
        }
        return false;
    }