예제 #1
0
 private int checkLeftCollision(Player player, Zone currentZone)
 {
     int i = 0;
     Point startingCollision = new Point(player.getGlobalLocation().X - player.getMoveSpeed(), player.getGlobalLocation().Y);
     for (int j = 0; j < player.getWalkingOffset(); j++)
     {
         if (currentZone.getCollisionMap()[player.getCurrentZoneLevel()].getCollisionMap()[startingCollision.Y + j, startingCollision.X] == false || currentZone.getTrafficMap()[player.getCurrentZoneLevel()].getTrafficMap()[startingCollision.Y + j, startingCollision.X] == true)
         {
             if (i < player.getMoveSpeed())
             {
                 startingCollision.X++;
                 i++;
                 j = 0;
             }
             else
             {
                 return 0;
             }
         }
     }
     return player.getMoveSpeed() - i;
 }
예제 #2
0
 private int isTransition(Point start, Player player, Zone currentZone)
 {
     for (int i = 0; i < 30; i++)
     {
         for (int j = 0; j < 30; j++)
         {
             int transNum = currentZone.getTransitionMap()[player.getCurrentZoneLevel()].getTransitionMap()[start.Y + i, start.X + j];
             if (transNum != 0)
             {
                 return transNum;
             }
         }
     }
     return 0;
 }
예제 #3
0
        public void drawZone(Graphics g, Player player, Zone currentZone)
        {
            int playerDrawLocationX;
            int playerDrawLocationY;
            int zoneDrawLocationX;
            int zoneDrawLocationY;

            if (player.getGlobalLocation().X + player.getXOffset() >= 450 && player.getGlobalLocation().X + player.getXOffset() < currentZone.getWidth() - 450)
            {
                playerDrawLocationX = 450 - player.getXOffset();
                zoneDrawLocationX = -(player.getGlobalLocation().X + player.getXOffset()) + 450;
            }
            else
            {
                if (player.getGlobalLocation().X + player.getXOffset() < 450)
                {
                    playerDrawLocationX = player.getGlobalLocation().X;
                    zoneDrawLocationX = 0;
                }
                else
                {
                    playerDrawLocationX = 900 - (currentZone.getWidth() - player.getGlobalLocation().X);
                    zoneDrawLocationX = -currentZone.getWidth() + 900;
                }
            }
            if (player.getGlobalLocation().Y + player.getYOffset() >= 300 && player.getGlobalLocation().Y + player.getYOffset() < currentZone.getHeight() - 300) // add in the image height stuff
            {
                playerDrawLocationY = 300 - player.getYOffset() - player.getDrawOffsetY();
                zoneDrawLocationY = -(player.getGlobalLocation().Y + player.getYOffset()) + 300;
            }
            else
            {
                if (player.getGlobalLocation().Y + player.getYOffset() < 300)
                {
                    playerDrawLocationY = player.getGlobalLocation().Y - player.getDrawOffsetY();
                    zoneDrawLocationY = 0;
                }
                else
                {
                    playerDrawLocationY = 600 - (currentZone.getHeight() - player.getGlobalLocation().Y + player.getDrawOffsetY());
                    zoneDrawLocationY = -currentZone.getHeight() + 600;
                }
            }

            int drawWindowTopX = player.getGlobalLocation().X - playerDrawLocationX;
            int drawWindowTopY = player.getGlobalLocation().Y - playerDrawLocationY - player.getDrawOffsetY();

            for (int i = 0; i < currentZone.getLevels().Count; i++) //drawing of npcs doesn't work properly
            {
                if (player.getCurrentZoneLevel() == i)
                {
                    g.DrawImage(currentZone.getLevels()[i], new Point(zoneDrawLocationX, zoneDrawLocationY));

                    List<NPC> inFrontNPCs = new List<NPC>();
                    List<NPC> behindNPCs = new List<NPC>();

                    for (int j = 0; j < currentZone.getNPCs().Count; j++)
                    {
                        if (currentZone.getNPCs()[j].getCurrentLocation().Y > player.getGlobalLocation().Y)
                        {
                            inFrontNPCs.Add(currentZone.getNPCs()[j]);
                        }
                        else
                        {
                            behindNPCs.Add(currentZone.getNPCs()[j]);
                        }
                    }
                    drawNPCs(g, behindNPCs, drawWindowTopX, drawWindowTopY, i);
                    drawPlayer(g, player, new Point(playerDrawLocationX, playerDrawLocationY));
                    drawNPCs(g, inFrontNPCs, drawWindowTopX, drawWindowTopY, i);

                }
                else
                {
                    g.DrawImage(currentZone.getLevels()[i], new Point(zoneDrawLocationX, zoneDrawLocationY));
                    drawNPCs(g, currentZone.getNPCs(), drawWindowTopX, drawWindowTopY, i);
                }
            }

            //g.DrawLine(new Pen(Color.Black), new Point(0, 300), new Point(900, 300));
            //g.DrawLine(new Pen(Color.Black), new Point(450, 0), new Point(450, 600));
            //g.DrawLine(new Pen(Color.Blue), new Point(0, playerDrawLocationY + player.getDrawOffsetY()), new Point(900, playerDrawLocationY + player.getDrawOffsetY()));
        }