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); }
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); }
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); }
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; } }