Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace VHE.map_generator
- {
- class Program
- {
- static void WriteColor(ConsoleColor Colour, String Text)
- {
- Console.ForegroundColor = Colour;
- Console.WriteLine(Text.PadRight(Console.WindowWidth - 1));
- }
- static void WriteVheHeader()
- {
- string[] header = { "{", "\"classname\" \"worldspawn\"", "\"MaxRange\" \"4096\"", "\"mapversion\" \"220\"", "\"wad\" \"cstrike\\cs_assault.wad;cstrike\\cs_dust.wad;cstrike\\cstrike.wad;valve\\halflife.wad\"" };
- using (StreamWriter file = new StreamWriter("outmap.map", true))
- {
- foreach (string line in header)
- {
- file.WriteLine(line);
- }
- }
- }
- static void JustWriteEnd()
- {
- using (StreamWriter file = new StreamWriter("outmap.map", true))
- {
- file.WriteLine("}");
- }
- }
- static void JustCreateCube(Int32 X_, Int32 Y_, Int32 Z_, Int32 SizeX, Int32 SizeY, Int32 SizeZ)
- {
- string Texture = "AAATRIGGER";
- S_ObjList tmpobject = new S_ObjList();
- tmpobject.X = X_;
- tmpobject.Y = Y_;
- tmpobject.Z = Z_;
- tmpobject.SizeX = SizeX;
- tmpobject.SizeY = SizeY;
- tmpobject.SizeZ = SizeZ;
- ObjList.Add(tmpobject);
- Int32[] X = new Int32[7];
- Int32[] Y = new Int32[7];
- Int32[] Z = new Int32[7];
- Int32[] X2 = new Int32[7];
- Int32[] Y2 = new Int32[7];
- Int32[] Z2 = new Int32[7];
- Int32[] X3 = new Int32[7];
- Int32[] Y3 = new Int32[7];
- Int32[] Z3 = new Int32[7];
- X[1] = X_;
- Y[1] = Y_;
- Z[1] = SizeZ + Z_;
- X2[1] = X_;
- Y2[1] = SizeY + Y_;
- Z2[1] = SizeZ + Z_;
- X3[1] = SizeX + X_;
- Y3[1] = SizeY + Y_;
- Z3[1] = SizeZ + Z_;
- X[2] = X_;
- Y[2] = SizeY + Y_;
- Z[2] = Z_;
- X2[2] = X_;
- Y2[2] = Y_;
- Z2[2] = Z_;
- X3[2] = SizeX + X_;
- Y3[2] = Y_;
- Z3[2] = Z_;
- X[3] = X_;
- Y[3] = Y_;
- Z[3] = Z_;
- X2[3] = X_;
- Y2[3] = SizeY + Y_;
- Z2[3] = Z_;
- X3[3] = X_;
- Y3[3] = SizeY + Y_;
- Z3[3] = SizeZ + Z_;
- X[4] = SizeX + X_;
- Y[4] = SizeY + Y_;
- Z[4] = Z_;
- X2[4] = SizeX + X_;
- Y2[4] = Y_;
- Z2[4] = Z_;
- X3[4] = SizeX + X_;
- Y3[4] = Y_;
- Z3[4] = SizeZ + Z_;
- X[5] = X_;
- Y[5] = SizeY + Y_;
- Z[5] = Z_;
- X2[5] = SizeX + X_;
- Y2[5] = SizeY + Y_;
- Z2[5] = Z_;
- X3[5] = SizeX + X_;
- Y3[5] = SizeY + Y_;
- Z3[5] = SizeZ + Z_;
- X[6] = SizeX + X_;
- Y[6] = Y_;
- Z[6] = Z_;
- X2[6] = X_;
- Y2[6] = Y_;
- Z2[6] = Z_;
- X3[6] = X_;
- Y3[6] = Y_;
- Z3[6] = SizeZ + Z_;
- using (StreamWriter file = new StreamWriter("outmap.map", true))
- {
- file.WriteLine("{");
- file.WriteLine("( " + X[1] + " " + Y[1] + " " + Z[1] + " ) ( " + X2[1] + " " + Y2[1] + " " + Z2[1] + " ) ( " + X3[1] + " " + Y3[1] + " " + Z3[1] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[2] + " " + Y[2] + " " + Z[2] + " ) ( " + X2[2] + " " + Y2[2] + " " + Z2[2] + " ) ( " + X3[2] + " " + Y3[2] + " " + Z3[2] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[3] + " " + Y[3] + " " + Z[3] + " ) ( " + X2[3] + " " + Y2[3] + " " + Z2[3] + " ) ( " + X3[3] + " " + Y3[3] + " " + Z3[3] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[4] + " " + Y[4] + " " + Z[4] + " ) ( " + X2[4] + " " + Y2[4] + " " + Z2[4] + " ) ( " + X3[4] + " " + Y3[4] + " " + Z3[4] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[5] + " " + Y[5] + " " + Z[5] + " ) ( " + X2[5] + " " + Y2[5] + " " + Z2[5] + " ) ( " + X3[5] + " " + Y3[5] + " " + Z3[5] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[6] + " " + Y[6] + " " + Z[6] + " ) ( " + X2[6] + " " + Y2[6] + " " + Z2[6] + " ) ( " + X3[6] + " " + Y3[6] + " " + Z3[6] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("}");
- }
- }
- static bool CheckCollision(Int32 X, Int32 Y, Int32 Z, Int32 SizeX, Int32 SizeY, Int32 SizeZ)
- {
- bool ret = false;
- for (int i = 0; i < ObjList.Count; i++)
- {
- if (Z > ObjList[i].Z + ObjList[i].SizeZ || Z + SizeZ < ObjList[i].Z)
- ;
- else if (Y + SizeY < ObjList[i].Y || Y > ObjList[i].Y + ObjList[i].SizeY)
- ;
- else if (X + SizeX < ObjList[i].X || X > ObjList[i].X + ObjList[i].SizeX)
- ;
- else
- {
- ret = true;
- }
- }
- // Console.Write("\n" + ret+"\n");
- return ret;
- }
- /* foreach (S_ObjList MyObject in ObjList)
- {
- if ((Z + SizeZ > MyObject.Z && Z + SizeZ < MyObject.Z + MyObject.SizeZ) || (Z + SizeZ > MyObject.Z + MyObject.SizeZ && Z > MyObject.Z) || (Z + SizeZ > MyObject.Z + MyObject.SizeZ && Z < MyObject.Z + MyObject.SizeZ))
- if ((Y + SizeY > MyObject.Y && Y + SizeY < MyObject.Y + MyObject.SizeY) || (Y + SizeY > MyObject.Y + MyObject.SizeY && Y > MyObject.Y) || (Y + SizeY > MyObject.Y + MyObject.SizeY && Y < MyObject.Y + MyObject.SizeY))
- if ((X + SizeX > MyObject.X && X + SizeX < MyObject.X + MyObject.SizeX) || (X + SizeX > MyObject.X + MyObject.SizeX && X > MyObject.X) || (X + SizeX > MyObject.X + MyObject.SizeX && X < MyObject.X + MyObject.SizeX))
- ret = false;
- }
- foreach (S_ObjList MyObject in ObjList)
- {
- if ((Z + SizeZ > MyObject.Z || Z < MyObject.Z + MyObject.SizeZ) && (X + SizeX > MyObject.X || X < MyObject.X + MyObject.SizeX) && (Y + SizeY > MyObject.Y || Y < MyObject.Y + MyObject.SizeY))
- {
- return true;
- }
- }
- if (Z > ObjList[i].Z + ObjList[i].SizeZ || Z + SizeZ < ObjList[i].Z)
- ;
- else if (Y + SizeY < ObjList[i].Y || Y > ObjList[i].Y + ObjList[i].SizeY)
- ;
- else if (X + SizeX < ObjList[i].X || X > ObjList[i].X + ObjList[i].SizeX)
- ;
- else
- {
- ret = true;
- i = ObjList.Count;
- }
- }
- // Console.Write("\n" + ret+"\n");
- return false;
- }*/
- static void JustCreateCubeW(Int32 X_, Int32 Y_, Int32 Z_, Int32 SizeX, Int32 SizeY, Int32 SizeZ, String Texture)
- {
- Int32[] X = new Int32[7];
- Int32[] Y = new Int32[7];
- Int32[] Z = new Int32[7];
- Int32[] X2 = new Int32[7];
- Int32[] Y2 = new Int32[7];
- Int32[] Z2 = new Int32[7];
- Int32[] X3 = new Int32[7];
- Int32[] Y3 = new Int32[7];
- Int32[] Z3 = new Int32[7];
- X[1] = X_;
- Y[1] = Y_;
- Z[1] = SizeZ + Z_;
- X2[1] = X_;
- Y2[1] = SizeY + Y_;
- Z2[1] = SizeZ + Z_;
- X3[1] = SizeX + X_;
- Y3[1] = SizeY + Y_;
- Z3[1] = SizeZ + Z_;
- X[2] = X_;
- Y[2] = SizeY + Y_;
- Z[2] = Z_;
- X2[2] = X_;
- Y2[2] = Y_;
- Z2[2] = Z_;
- X3[2] = SizeX + X_;
- Y3[2] = Y_;
- Z3[2] = Z_;
- X[3] = X_;
- Y[3] = Y_;
- Z[3] = Z_;
- X2[3] = X_;
- Y2[3] = SizeY + Y_;
- Z2[3] = Z_;
- X3[3] = X_;
- Y3[3] = SizeY + Y_;
- Z3[3] = SizeZ + Z_;
- X[4] = SizeX + X_;
- Y[4] = SizeY + Y_;
- Z[4] = Z_;
- X2[4] = SizeX + X_;
- Y2[4] = Y_;
- Z2[4] = Z_;
- X3[4] = SizeX + X_;
- Y3[4] = Y_;
- Z3[4] = SizeZ + Z_;
- X[5] = X_;
- Y[5] = SizeY + Y_;
- Z[5] = Z_;
- X2[5] = SizeX + X_;
- Y2[5] = SizeY + Y_;
- Z2[5] = Z_;
- X3[5] = SizeX + X_;
- Y3[5] = SizeY + Y_;
- Z3[5] = SizeZ + Z_;
- X[6] = SizeX + X_;
- Y[6] = Y_;
- Z[6] = Z_;
- X2[6] = X_;
- Y2[6] = Y_;
- Z2[6] = Z_;
- X3[6] = X_;
- Y3[6] = Y_;
- Z3[6] = SizeZ + Z_;
- using (StreamWriter file = new StreamWriter("outmap.map", true))
- {
- file.WriteLine("{");
- file.WriteLine("( " + X[1] + " " + Y[1] + " " + Z[1] + " ) ( " + X2[1] + " " + Y2[1] + " " + Z2[1] + " ) ( " + X3[1] + " " + Y3[1] + " " + Z3[1] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[2] + " " + Y[2] + " " + Z[2] + " ) ( " + X2[2] + " " + Y2[2] + " " + Z2[2] + " ) ( " + X3[2] + " " + Y3[2] + " " + Z3[2] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[3] + " " + Y[3] + " " + Z[3] + " ) ( " + X2[3] + " " + Y2[3] + " " + Z2[3] + " ) ( " + X3[3] + " " + Y3[3] + " " + Z3[3] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[4] + " " + Y[4] + " " + Z[4] + " ) ( " + X2[4] + " " + Y2[4] + " " + Z2[4] + " ) ( " + X3[4] + " " + Y3[4] + " " + Z3[4] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[5] + " " + Y[5] + " " + Z[5] + " ) ( " + X2[5] + " " + Y2[5] + " " + Z2[5] + " ) ( " + X3[5] + " " + Y3[5] + " " + Z3[5] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[6] + " " + Y[6] + " " + Z[6] + " ) ( " + X2[6] + " " + Y2[6] + " " + Z2[6] + " ) ( " + X3[6] + " " + Y3[6] + " " + Z3[6] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("}");
- }
- }
- static void JustCreateCube(Int32 X_, Int32 Y_, Int32 Z_, Int32 SizeX, Int32 SizeY, Int32 SizeZ, String Texture)
- {
- S_ObjList tmpobject = new S_ObjList();
- tmpobject.X = X_;
- tmpobject.Y = Y_;
- tmpobject.Z = Z_;
- tmpobject.SizeX = SizeX;
- tmpobject.SizeY = SizeY;
- tmpobject.SizeZ = SizeZ;
- ObjList.Add(tmpobject);
- Int32[] X = new Int32[7];
- Int32[] Y = new Int32[7];
- Int32[] Z = new Int32[7];
- Int32[] X2 = new Int32[7];
- Int32[] Y2 = new Int32[7];
- Int32[] Z2 = new Int32[7];
- Int32[] X3 = new Int32[7];
- Int32[] Y3 = new Int32[7];
- Int32[] Z3 = new Int32[7];
- X[1] = X_;
- Y[1] = Y_;
- Z[1] = SizeZ + Z_;
- X2[1] = X_;
- Y2[1] = SizeY + Y_;
- Z2[1] = SizeZ + Z_;
- X3[1] = SizeX + X_;
- Y3[1] = SizeY + Y_;
- Z3[1] = SizeZ + Z_;
- X[2] = X_;
- Y[2] = SizeY + Y_;
- Z[2] = Z_;
- X2[2] = X_;
- Y2[2] = Y_;
- Z2[2] = Z_;
- X3[2] = SizeX + X_;
- Y3[2] = Y_;
- Z3[2] = Z_;
- X[3] = X_;
- Y[3] = Y_;
- Z[3] = Z_;
- X2[3] = X_;
- Y2[3] = SizeY + Y_;
- Z2[3] = Z_;
- X3[3] = X_;
- Y3[3] = SizeY + Y_;
- Z3[3] = SizeZ + Z_;
- X[4] = SizeX + X_;
- Y[4] = SizeY + Y_;
- Z[4] = Z_;
- X2[4] = SizeX + X_;
- Y2[4] = Y_;
- Z2[4] = Z_;
- X3[4] = SizeX + X_;
- Y3[4] = Y_;
- Z3[4] = SizeZ + Z_;
- X[5] = X_;
- Y[5] = SizeY + Y_;
- Z[5] = Z_;
- X2[5] = SizeX + X_;
- Y2[5] = SizeY + Y_;
- Z2[5] = Z_;
- X3[5] = SizeX + X_;
- Y3[5] = SizeY + Y_;
- Z3[5] = SizeZ + Z_;
- X[6] = SizeX + X_;
- Y[6] = Y_;
- Z[6] = Z_;
- X2[6] = X_;
- Y2[6] = Y_;
- Z2[6] = Z_;
- X3[6] = X_;
- Y3[6] = Y_;
- Z3[6] = SizeZ + Z_;
- using (StreamWriter file = new StreamWriter("outmap.map", true))
- {
- file.WriteLine("{");
- file.WriteLine("( " + X[1] + " " + Y[1] + " " + Z[1] + " ) ( " + X2[1] + " " + Y2[1] + " " + Z2[1] + " ) ( " + X3[1] + " " + Y3[1] + " " + Z3[1] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[2] + " " + Y[2] + " " + Z[2] + " ) ( " + X2[2] + " " + Y2[2] + " " + Z2[2] + " ) ( " + X3[2] + " " + Y3[2] + " " + Z3[2] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ");
- file.WriteLine("( " + X[3] + " " + Y[3] + " " + Z[3] + " ) ( " + X2[3] + " " + Y2[3] + " " + Z2[3] + " ) ( " + X3[3] + " " + Y3[3] + " " + Z3[3] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[4] + " " + Y[4] + " " + Z[4] + " ) ( " + X2[4] + " " + Y2[4] + " " + Z2[4] + " ) ( " + X3[4] + " " + Y3[4] + " " + Z3[4] + " ) " + Texture + " [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[5] + " " + Y[5] + " " + Z[5] + " ) ( " + X2[5] + " " + Y2[5] + " " + Z2[5] + " ) ( " + X3[5] + " " + Y3[5] + " " + Z3[5] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("( " + X[6] + " " + Y[6] + " " + Z[6] + " ) ( " + X2[6] + " " + Y2[6] + " " + Z2[6] + " ) ( " + X3[6] + " " + Y3[6] + " " + Z3[6] + " ) " + Texture + " [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ");
- file.WriteLine("}");
- }
- }
- /* Cube from cubes / Создаем "куб" из "кубов" */
- static void CreateSky(Int32 X__, Int32 Y__, Int32 Z__, Int32 SizeX_, Int32 SizeY_, Int32 SizeZ_)
- {
- /* S_ObjList tmpobject = new S_ObjList();
- tmpobject.X = X__;
- tmpobject.Y = Y__;
- tmpobject.Z = Z__;
- tmpobject.SizeX = SizeX_;
- tmpobject.SizeY = SizeY_;
- tmpobject.SizeZ = SizeZ_;
- ObjList.Add(tmpobject);
- */
- JustCreateCube(X__, Y__, Z__, 32, SizeY_, SizeZ_, "SKY");
- JustCreateCube(X__, Y__, Z__ + SizeZ_, SizeX_, SizeY_, 32, "SKY");
- JustCreateCube(X__, Y__ + SizeY_, Z__, SizeX_ + 32, 32, SizeZ_ + 32, "SKY");
- JustCreateCube(X__ + SizeX_, Y__, Z__, 32, SizeY_, SizeZ_ + 32, "SKY");
- JustCreateCube(X__ + 32, Y__, Z__, SizeX_ - 32, 32, SizeZ_, "SKY");
- JustCreateCube(X__ + 32, Y__ + 32, Z__, SizeX_ - 32, SizeY_ - 32, 32, "SKY");
- }
- /* Objects list / Список объектов */
- private struct S_ObjList
- {
- public Int32 X;
- public Int32 Y;
- public Int32 Z;
- public Int32 SizeX;
- public Int32 SizeY;
- public Int32 SizeZ;
- }
- static List<S_ObjList> ObjList = new List<S_ObjList>();
- static void Main(string[] args)
- {
- if (File.Exists("outmap.map"))
- {
- File.Delete("outmap.bak.map");
- File.Move("outmap.map", "outmap.bak.map");
- }
- else
- File.Create("outmap.map");
- /* TEST */
- WriteVheHeader();
- CreateSky(-500, 1000, 500, 2000, 3000, 2500);
- /* args 1:SKY_X+32+1 2:SKY_Y+32+1 3:SKY_Z+32+1 4:SIZE_X < SKY_SIZE_X - SKY_X && SIZE_X > SKY_X
- 5: SIZE_Y < SKY_SIZE_Y - SKY_Y && SIZE_Y > SKY_Y 6: SIZE_Z < SKY_SIZE_Z - SKY_Z && SIZE_Z > SKY_Z */
- Random rnd = new Random();
- for (int i = 0; i < 100; )
- {
- int _x = rnd.Next(-467, 1467);
- int _y = rnd.Next(1033, 3967);
- int _z = rnd.Next(532, 600);
- int _sx = rnd.Next(10, 200);
- int _sy = rnd.Next(10, 200);
- int _sz = rnd.Next(5, 500);
- if (!CheckCollision(_x, _y, _z, _sx, _sy, _sz))
- {
- ++i;
- JustCreateCube(_x, _y, _z, _sx, _sy, _sz);
- }
- }
- /* CheckCollision(0, 0, 0, 10, 20, 30);
- JustCreateCube(0, 0, 0, 10, 20, 30);
- CheckCollision(0, 0, 0, 10, 20, 30);
- CheckCollision(10, 0, 0, 10, 20, 30);*/
- JustWriteEnd();
- /* END TEST */
- Int32 Size = -1, Objects = -1;
- ConsoleKey CKey;
- Console.Title = "VHE .map generator by Absol";
- WriteColor(ConsoleColor.Red, "Console C# OpenSource valve random .map generator");
- WriteColor(ConsoleColor.Green, "Select the necessary map settings:\n\n\n");
- WriteColor(ConsoleColor.Blue, "\nMap size:\n 1 - Big \n 2 - Medium \n 3 - Small\n");
- Retry1:
- CKey = Console.ReadKey(true).Key;
- if (CKey == ConsoleKey.D1 || CKey == ConsoleKey.D2 || CKey == ConsoleKey.D3)
- Size = (Int32)CKey - 48;
- else
- goto Retry1;
- WriteColor(ConsoleColor.Cyan, "\nNumber of objects:\n 1 - Many \n 2 - Less \n 3 - Little\n");
- Retry2:
- CKey = Console.ReadKey(true).Key;
- if (CKey == ConsoleKey.D1 || CKey == ConsoleKey.D2 || CKey == ConsoleKey.D3)
- Objects = (Int32)CKey - 48;
- else
- goto Retry2;
- Console.Write("\n\n\n\n");
- Console.Read();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement