コード例 #1
0
        private void lateralMove(int direction, GameInit gameInit)
        {
            if (direction == 0)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(0, -2);
                int     level = gameInit.getPlayer().getLevel();

                if (start.Y >= 0)
                {
                    int hits = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                        if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                        {
                            hits++;
                        }
                    }

                    if (hits == 0)
                    {
                        start += new Vector2(0, -2);

                        if (start.Y < 0)
                        {
                            movePlayerUp(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                                if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                                {
                                    hits++;
                                    movePlayerUp(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerUp(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 1)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(0, 2 + gameInit.getPlayer().getWalkingSize().Y - 1);
                int     level = gameInit.getPlayer().getLevel();

                if (start.Y < gameInit.getCurrentZone().getPixelHeight())
                {
                    int hits = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                        if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                        {
                            hits++;
                        }
                    }

                    if (hits == 0)
                    {
                        start += new Vector2(0, 2);

                        if (start.Y >= gameInit.getCurrentZone().getPixelHeight())
                        {
                            movePlayerDown(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                                if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                                {
                                    hits++;
                                    movePlayerDown(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerDown(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 2)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(2 + gameInit.getPlayer().getWalkingSize().X - 1, 0);
                int     level = gameInit.getPlayer().getLevel();

                if (start.X < gameInit.getCurrentZone().getPixelWidth())
                {
                    int hits = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile((int)start.X / 30, ((int)start.Y + i) / 30, level);

                        if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                        {
                            hits++;
                        }
                    }

                    if (hits == 0)
                    {
                        start += new Vector2(2, 0);

                        if (start.X >= gameInit.getCurrentZone().getPixelWidth())
                        {
                            movePlayerRight(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                                if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                                {
                                    hits++;
                                    movePlayerRight(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerRight(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 3)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(-2, 0);
                int     level = gameInit.getPlayer().getLevel();

                if (start.X >= 0)
                {
                    int hits = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile((int)start.X / 30, ((int)start.Y + i) / 30, level);

                        if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                        {
                            hits++;
                        }
                    }

                    if (hits == 0)
                    {
                        start += new Vector2(-2, 0);

                        if (start.X < 0)
                        {
                            movePlayerLeft(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                                if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                                {
                                    hits++;
                                    movePlayerLeft(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerLeft(4, gameInit);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        // check for npcs somewhere before move
        private void checkMove(int direction, GameInit gameInit)
        {
            if (direction == 0)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(0, -2);
                int     level = gameInit.getPlayer().getLevel();

                if (start.Y >= 0)
                {
                    int leftBump   = 0;
                    int rightBump  = 0;
                    int centerBump = 0;
                    int hits       = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                        if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                        {
                            hits++;

                            if (i < BUMP_RIGHT)
                            {
                                rightBump++;
                            }
                            else if (i >= BUMP_LEFT)
                            {
                                leftBump++;
                            }
                            else
                            {
                                centerBump++;
                            }
                        }
                    }
                    if (hits != 0)
                    {
                        if (centerBump == 0)
                        {
                            if (leftBump > 0)
                            {
                                movePlayerLeft(2, gameInit);
                            }
                            else if (rightBump > 0)
                            {
                                movePlayerRight(2, gameInit);
                            }
                        }
                    }
                    else
                    {
                        start += new Vector2(0, -2);

                        if (start.Y < 0)
                        {
                            movePlayerUp(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                                if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                                {
                                    hits++;
                                    movePlayerUp(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerUp(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 1)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(0, 2 - 1 + gameInit.getPlayer().getWalkingSize().Y);
                int     level = gameInit.getPlayer().getLevel();

                if (start.Y < gameInit.getCurrentZone().getPixelHeight())
                {
                    int leftBump   = 0;
                    int rightBump  = 0;
                    int centerBump = 0;
                    int hits       = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                        if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                        {
                            hits++;

                            if (i < BUMP_RIGHT)
                            {
                                rightBump++;
                            }
                            else if (i >= BUMP_LEFT)
                            {
                                leftBump++;
                            }
                            else
                            {
                                centerBump++;
                            }
                        }
                    }
                    if (hits != 0)
                    {
                        if (centerBump == 0)
                        {
                            if (leftBump > 0)
                            {
                                movePlayerLeft(2, gameInit);
                            }
                            else if (rightBump > 0)
                            {
                                movePlayerRight(2, gameInit);
                            }
                        }
                    }
                    else
                    {
                        start += new Vector2(0, 2);

                        if (start.Y >= gameInit.getCurrentZone().getPixelHeight())
                        {
                            movePlayerDown(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().X; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X + i) / 30, (int)start.Y / 30, level);

                                if (!tile.checkAvailability(((int)start.X + i) % 30, (int)start.Y % 30, level))
                                {
                                    hits++;
                                    movePlayerDown(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerDown(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 2)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(2 - 1 + gameInit.getPlayer().getWalkingSize().X, 0);
                int     level = gameInit.getPlayer().getLevel();

                if (start.X < gameInit.getCurrentZone().getPixelWidth())
                {
                    int rightBump  = 0;
                    int leftBump   = 0;
                    int centerBump = 0;
                    int hits       = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                        if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                        {
                            hits++;

                            if (i < BUMP_RIGHT)
                            {
                                rightBump++;
                            }
                            else if (i >= BUMP_LEFT)
                            {
                                leftBump++;
                            }
                            else
                            {
                                centerBump++;
                            }
                        }
                    }
                    if (hits != 0)
                    {
                        if (centerBump == 0)
                        {
                            if (leftBump > 0)
                            {
                                movePlayerDown(2, gameInit);
                            }
                            else if (rightBump > 0)
                            {
                                movePlayerUp(2, gameInit);
                            }
                        }
                    }
                    else
                    {
                        start += new Vector2(2, 0);

                        if (start.X >= gameInit.getCurrentZone().getPixelWidth())
                        {
                            movePlayerRight(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                                if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                                {
                                    hits++;
                                    movePlayerRight(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerRight(4, gameInit);
                            }
                        }
                    }
                }
            }
            else if (direction == 3)
            {
                Vector2 start = gameInit.getPlayer().getLocation() + new Vector2(-2, 0);
                int     level = gameInit.getPlayer().getLevel();

                if (start.X >= 0)
                {
                    int rightBump  = 0;
                    int leftBump   = 0;
                    int centerBump = 0;
                    int hits       = 0;

                    for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                    {
                        Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                        if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                        {
                            hits++;

                            if (i < BUMP_RIGHT)
                            {
                                rightBump++;
                            }
                            else if (i >= BUMP_LEFT)
                            {
                                leftBump++;
                            }
                            else
                            {
                                centerBump++;
                            }
                        }
                    }
                    if (hits != 0)
                    {
                        if (centerBump == 0)
                        {
                            if (leftBump > 0)
                            {
                                movePlayerDown(2, gameInit);
                            }
                            else if (rightBump > 0)
                            {
                                movePlayerUp(2, gameInit);
                            }
                        }
                    }
                    else
                    {
                        start += new Vector2(-2, 0);

                        if (start.X < 0)
                        {
                            movePlayerLeft(2, gameInit);
                        }
                        else
                        {
                            for (int i = 0; i < gameInit.getPlayer().getWalkingSize().Y; i++)
                            {
                                Tile tile = gameInit.getCurrentZone().getTile(((int)start.X) / 30, ((int)start.Y + i) / 30, level);

                                if (!tile.checkAvailability(((int)start.X) % 30, ((int)start.Y + i) % 30, level))
                                {
                                    hits++;
                                    movePlayerLeft(2, gameInit);
                                }
                            }

                            if (hits == 0)
                            {
                                movePlayerLeft(4, gameInit);
                            }
                        }
                    }
                }
            }
        }