Пример #1
0
 public void genMap()
 {
     for (int x = 0; x < 1000; x++)
     {
         for (int y = 0; y < 1000; y++)
         {
             map[x, y] = Tile.stoneWall;
             gold[x, y] = 0;
         }
     }
     int sX = rand.Next(250, 750);
     int sY = rand.Next(250, 750);
     map[sX + (1 - rand.Next(3)), sY + (1 - rand.Next(3))] = Tile.stairCase;
     Program.renderX = sX;
     Program.renderY = sY;
     //Mob.spawnMob(Mob._mobZombie, Program.renderX + 5, Program.renderY + 5);
     int cX = 0;
     int cY = 0;
     bool genWater = false;
     bool genDeep = false;
     bool genSwamp = false;
     for (int z = 0; z < 6; z++)
     {
         for (int a = 0; a < rand.Next(80000, 150000); a++)
         {
             if (map[sX + cX, sY + cY] != Tile.stoneWall && rand.Next(4) == 0)
             {
                 a--;
             }
             if (rand.Next(2) == 0)
             {
                 if (rand.Next(2) == 0)
                 {
                     cX++;
                 }
                 else
                 {
                     cY--;
                 }
             }
             else
             {
                 if (rand.Next(2) == 0)
                 {
                     cX--;
                 }
                 else
                 {
                     cY++;
                 }
             }
             while (sX + cX < 1)
             {
                 cX++;
             }
             while (sX + cX > 998)
             {
                 cX--;
             }
             while (sY + cY < 1)
             {
                 cY++;
             }
             while (sY + cY > 998)
             {
                 cY--;
             }
             if (rand.Next(6000) == 0 && !genWater)
             {
                 genWater = !genWater;
                 if (rand.Next(250) == 0)
                 {
                     genSwamp = true;
                 }
             }
             if (rand.Next(400) == 0 && genWater)
             {
                 genWater = !genWater;
                 genSwamp = false;
             }
             if (!genWater)
             {
                 if (rand.Next(600) != 0)
                 {
                     map[sX + cX, sY + cY] = Tile.stoneFloor;
                 }
                 else
                 {
                     map[sX + cX, sY + cY] = Tile.stairCase;
                     suggestedExit = new Point(sX + cX, sY + cY);
                 }
                 if (map[sX + cX, sY + cY] != Tile.deepWater && map[sX + cX, sY + cY] != Tile.shallowWater && map[sX + cX, sY + cY] != Tile.stairCase)
                 {
                     if (rand.Next(1200) == 0)
                     {
                         gold[sX + cX, sY + cY] = rand.Next(1, 30);
                     }
                     if (rand.Next(1400) == 0)
                     {
                         items[sX + cX, sY + cY] = new ItemCache();
                         if (rand.Next(2) == 0)
                         {
                             items[sX + cX, sY + cY].addItem(Item.items[0], rand.Next(2) + 1);
                         }
                         else
                         {
                             if (Program.player.species != Species._darkElf)
                             {
                                 items[sX + cX, sY + cY].addItem(Item.get(1).setBound(rand.chooseBound()), 1);
                             }
                             else
                             {
                                 items[sX + cX, sY + cY].addItem(Item.get(3).setBound(rand.chooseBound()), 1);
                             }
                         }
                     }
                 }
             }
             else
             {
                 if (rand.Next(70) == 0)
                 {
                     genDeep = !genDeep;
                 }
                 if (genSwamp)
                 {
                     genDeep = false;
                     map[sX + cX, sY + cY] = Tile.swampWater;
                 }
                 else
                 {
                     if (genDeep)
                     {
                         map[sX + cX, sY + cY] = Tile.deepWater;
                     }
                     else
                     {
                         map[sX + cX, sY + cY] = Tile.shallowWater;
                     }
                 }
             }
         }
     }
     if (Program.floor > 1)
     {
         map[Program.renderX, Program.renderY] = Tile.upStairCase;
     }
     //Program.levelMap.Add(Program.area + ":" + Program.floor, this);
 }
Пример #2
0
 public void addToInventory(ItemCache i)
 {
     foreach (KeyValuePair<Item, int> pair in i.items)
     {
         addToInventory(pair.Key, pair.Value);
     }
 }
Пример #3
0
        public void genMap()
        {
            for (int x = 0; x < 1000; x++)
            {
                for (int y = 0; y < 1000; y++)
                {
                    map[x, y]  = Tile.stoneWall;
                    gold[x, y] = 0;
                }
            }
            int sX = rand.Next(250, 750);
            int sY = rand.Next(250, 750);

            map[sX + (1 - rand.Next(3)), sY + (1 - rand.Next(3))] = Tile.stairCase;
            Program.renderX = sX;
            Program.renderY = sY;
            //Mob.spawnMob(Mob._mobZombie, Program.renderX + 5, Program.renderY + 5);
            int  cX       = 0;
            int  cY       = 0;
            bool genWater = false;
            bool genDeep  = false;
            bool genSwamp = false;

            for (int z = 0; z < 6; z++)
            {
                for (int a = 0; a < rand.Next(80000, 150000); a++)
                {
                    if (map[sX + cX, sY + cY] != Tile.stoneWall && rand.Next(4) == 0)
                    {
                        a--;
                    }
                    if (rand.Next(2) == 0)
                    {
                        if (rand.Next(2) == 0)
                        {
                            cX++;
                        }
                        else
                        {
                            cY--;
                        }
                    }
                    else
                    {
                        if (rand.Next(2) == 0)
                        {
                            cX--;
                        }
                        else
                        {
                            cY++;
                        }
                    }
                    while (sX + cX < 1)
                    {
                        cX++;
                    }
                    while (sX + cX > 998)
                    {
                        cX--;
                    }
                    while (sY + cY < 1)
                    {
                        cY++;
                    }
                    while (sY + cY > 998)
                    {
                        cY--;
                    }
                    if (rand.Next(6000) == 0 && !genWater)
                    {
                        genWater = !genWater;
                        if (rand.Next(250) == 0)
                        {
                            genSwamp = true;
                        }
                    }
                    if (rand.Next(400) == 0 && genWater)
                    {
                        genWater = !genWater;
                        genSwamp = false;
                    }
                    if (!genWater)
                    {
                        if (rand.Next(600) != 0)
                        {
                            map[sX + cX, sY + cY] = Tile.stoneFloor;
                        }
                        else
                        {
                            map[sX + cX, sY + cY] = Tile.stairCase;
                            suggestedExit         = new Point(sX + cX, sY + cY);
                        }
                        if (map[sX + cX, sY + cY] != Tile.deepWater && map[sX + cX, sY + cY] != Tile.shallowWater && map[sX + cX, sY + cY] != Tile.stairCase)
                        {
                            if (rand.Next(1200) == 0)
                            {
                                gold[sX + cX, sY + cY] = rand.Next(1, 30);
                            }
                            if (rand.Next(1400) == 0)
                            {
                                items[sX + cX, sY + cY] = new ItemCache();
                                if (rand.Next(2) == 0)
                                {
                                    items[sX + cX, sY + cY].addItem(Item.items[0], rand.Next(2) + 1);
                                }
                                else
                                {
                                    if (Program.player.species != Species._darkElf)
                                    {
                                        items[sX + cX, sY + cY].addItem(Item.get(1).setBound(rand.chooseBound()), 1);
                                    }
                                    else
                                    {
                                        items[sX + cX, sY + cY].addItem(Item.get(3).setBound(rand.chooseBound()), 1);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (rand.Next(70) == 0)
                        {
                            genDeep = !genDeep;
                        }
                        if (genSwamp)
                        {
                            genDeep = false;
                            map[sX + cX, sY + cY] = Tile.swampWater;
                        }
                        else
                        {
                            if (genDeep)
                            {
                                map[sX + cX, sY + cY] = Tile.deepWater;
                            }
                            else
                            {
                                map[sX + cX, sY + cY] = Tile.shallowWater;
                            }
                        }
                    }
                }
            }
            if (Program.floor > 1)
            {
                map[Program.renderX, Program.renderY] = Tile.upStairCase;
            }
            //Program.levelMap.Add(Program.area + ":" + Program.floor, this);
        }