Esempio n. 1
0
        public mapSector generateSector(MapPlanetQuad template)
        {
            mapSector s = new mapSector();

            s.quadTemplate = template;
            s.buildings    = new Building[mapSector.sectorQuadsCount];
            s.natures      = new nature[mapSector.sectorQuadsCount];

            return(s);
        }
Esempio n. 2
0
        public void drawQuad(MapPlanetQuad quad, float xi, float xj)
        {
            if (quad.forRender == null)
            {
                nullSetup.makeRender(ref quad, quadSize);
            }

            textureObject t = quad.forRender as textureObject;

            t.x = xi;
            t.y = xj;

            display.drawObject(t);
        }
Esempio n. 3
0
        public MapPlanet generatePlanet(List <MapPlanet> exists, int sizeX, int sizeY, MapPlanetQuad defQuad, int waterPercent, int forestPercent, int icePercent, int desertPercent, mapPlanetResource enviroment)
        {
            MapPlanet res = new MapPlanet();

            res.name        = makeName(exists);
            res.defaultQuad = defQuad;

            lastX += distansePlanetX;
            res.x  = lastX;
            res.y  = lastY;
            if (inLineCurrent >= planetsPerLine)
            {
                lastY        += distansePlanetY;
                inLineCurrent = 0;
                lastX         = 0;
            }

            res.sizeX = sizeX;
            res.sizeY = sizeY;

            res.quads   = new MapPlanetQuad[sizeX, sizeY];
            res.objects = new GameObject[sizeX, sizeY];
            res.sectors = new mapSector[sizeX, sizeY];

            int Ssize = sizeX * sizeY;

            int oceanTotal  = Ssize * waterPercent / 100;
            int forestTotal = Ssize * forestPercent / 100;


            for (int i = 0; i < oceanTotal; i++)
            {
                int rx = rand.Next(0, sizeX);
                int ry = rand.Next(0, sizeY);

                res.quads[rx, ry]      = new MapPlanetQuad();
                res.quads[rx, ry].type = typeOfquad.water;
            }

            int LineIce = res.sizeY * icePercent / 100;

            for (int j = 0; j < LineIce; j++)
            {
                for (int i = 0; i < sizeX; i++)
                {
                    if (j == LineIce - 1)
                    {
                        if (res.quads[i, j] == null)
                        {
                            res.quads[i, j] = new MapPlanetQuad();
                        }
                        res.quads[i, j].type          = typeOfquad.snow;
                        res.quads[i, j].textureParams = 1;
                    }

                    else
                    {
                        if (res.quads[i, j] != null && res.quads[i, j].type == typeOfquad.water)
                        {
                            res.quads[i, j].type = typeOfquad.ice;
                        }
                        else
                        {
                            if (res.quads[i, j] == null)
                            {
                                res.quads[i, j] = new MapPlanetQuad();
                            }
                            res.quads[i, j].type          = typeOfquad.snow;
                            res.quads[i, j].textureParams = 0;
                        }
                    }
                }
            }



            int LineDesert = res.sizeY - res.sizeY * desertPercent / 100;

            for (int j = sizeY - 1; j >= LineDesert; j--)
            {
                for (int i = 0; i < sizeX; i++)
                {
                    if (j == LineDesert)
                    {
                        if (res.quads[i, j] == null)
                        {
                            res.quads[i, j] = new MapPlanetQuad();
                        }
                        res.quads[i, j].type          = typeOfquad.desert;
                        res.quads[i, j].textureParams = 1;
                    }

                    else
                    {
                        if (res.quads[i, j] != null && res.quads[i, j].type == typeOfquad.water)
                        {
                            if (rand.Next(0, 10) == 0)
                            {
                                res.quads[i, j].type = typeOfquad.oasis;
                            }
                            else
                            {
                                res.quads[i, j].type          = typeOfquad.desert;
                                res.quads[i, j].textureParams = 0;
                            }
                        }
                        else
                        {
                            if (res.quads[i, j] == null)
                            {
                                res.quads[i, j] = new MapPlanetQuad();
                            }
                            res.quads[i, j].type          = typeOfquad.desert;
                            res.quads[i, j].textureParams = 0;
                        }
                    }
                }
            }

            setupWaterTurns(ref res.quads, typeOfquad.water);
            setupWaterTurns(ref res.quads, typeOfquad.ice);



            for (int i = 0; i < forestTotal; i++)
            {
                int rx = rand.Next(0, sizeX);
                int ry = rand.Next(0, sizeY);

                typeOfquad tQuad = defQuad.type;
                if (res.quads[rx, ry] != null)
                {
                    tQuad = res.quads[rx, ry].type;
                }


                switch (tQuad)
                {
                case typeOfquad.snow:
                    res.objects[rx, ry] = new forest();
                    res.objects[rx, ry].textureParams = 0;
                    break;

                case typeOfquad.grass:
                    res.objects[rx, ry] = new forest();
                    res.objects[rx, ry].textureParams = 1;
                    break;

                case typeOfquad.desert:
                    res.objects[rx, ry] = new forest();
                    if (rand.Next(0, 2) == 0)
                    {
                        res.objects[rx, ry].textureParams = 2;
                    }
                    else
                    {
                        res.objects[rx, ry].textureParams = 3;
                    }
                    break;
                }
            }

            res.enviroment      = enviroment;
            res.enviroment.d_o2 = forestTotal;


            return(res);
        }
Esempio n. 4
0
        public static void makeRender(ref MapPlanetQuad quad, float quadSize)
        {
            switch (quad.type)
            {
            case typeOfquad.snow:
                if ((int)quad.textureParams == 0)
                {
                    quad.forRender = new textureObject(@"planet/snow/default", 0, quadSize, quadSize);
                }
                else
                {
                    quad.forRender = new textureObject(@"planet/snow/border", 0, quadSize, quadSize);
                }
                break;

            case typeOfquad.grass:
                quad.forRender = new textureObject(@"planet/planetGrass", 0, quadSize, quadSize);
                break;

            case typeOfquad.oasis:
                quad.forRender = new textureObject(@"planet/desert/oazis", 0, quadSize, quadSize);
                break;

            case typeOfquad.ice:
            case typeOfquad.water:
                int[] param = (int[])quad.textureParams;

                string wut = @"planet/water/water";
                if (quad.type == typeOfquad.ice)
                {
                    wut = @"planet/ice/ice";
                }

                string name      = wut + "0";
                int    angle     = param[1];
                int    animation = 0;

                switch (param[0])
                {
                case 0:
                    animation = 300;
                    break;

                case 1:
                    name = wut + "1";
                    break;

                case 2:
                    if (param[1] < 0)
                    {
                        name = wut + "2I";
                    }
                    else
                    {
                        name = wut + "2T";
                    }
                    break;

                case 3:
                    name = wut + "3";
                    break;

                case 4:
                    name = wut + "4";
                    break;
                }


                quad.forRender = new textureObject(name, animation, quadSize, quadSize);
                (quad.forRender as textureObject).angle = angle;
                break;

            case typeOfquad.desert:
                if ((int)quad.textureParams == 0)
                {
                    quad.forRender = new textureObject(@"planet/desert/default", 0, quadSize, quadSize);
                }
                else
                {
                    quad.forRender = new textureObject(@"planet/desert/border", 0, quadSize, quadSize);
                }
                break;
            }
        }