public void Run() { DrawingBuffer mainBuffer = new DrawingBuffer(); dataBase = new GODataBase(); dataBase.Load(); mainWorld = new World("world1", dataBase); mainWorld.Load(); mainWorld.player = new Player(); mainWorld.player.SetCurrentRoom(mainWorld.GetRoomAt(0, 0)); mainWorld.player.SetPosition(30, 11); ConsoleKey input; while ((input = Console.ReadKey(true).Key) != ConsoleKey.Q) { mainWorld.player.Step(input); mainBuffer.Clear(); mainBuffer.DrawAreaAt(mainWorld.BuildRoomImage(mainWorld.player.GetCurrentRoom()), 0, 0); mainBuffer.DrawTextAt("Name: " + mainWorld.player.GetName(), 35, 2); mainBuffer.DrawTextAt("Position X: " + mainWorld.player.GetPosition().X, 35, 3); mainBuffer.DrawTextAt("Position Y: " + mainWorld.player.GetPosition().Y, 35, 4); mainBuffer.Render(); } }
/** * Конструктор класса. Принимает путь к директории с файлами комнат, * и ссылку на объект базы данных статических объектов. * Заполняет массив комнат пустыми объектами для последующей работы с ними. */ public World(string pathWorld, GODataBase dataBase) { this.pathWorld = pathWorld; this.dataBase = dataBase; for (int y = 0; y < WORLD_SIZE; y++) { for (int x = 0; x < WORLD_SIZE; x++) { rooms[y, x] = new Room(); } } }
private void LoadStatic(StreamReader roomReader, GODataBase dataBase) { int[] parsedLine; for (int y = 0; y < 32; y++) { parsedLine = StringArrayToInt(roomReader.ReadLine().Split(",")); for (int x = 0; x < 32; x++) { SetStaticAt(x, y, dataBase.CloneByID(parsedLine[x])); GetStaticAt(x, y).SetPosition(x, y); } } }
public void Load(StreamReader roomReader, GODataBase dataBase) { LoadStatic(roomReader, dataBase); LoadObjects(roomReader); //Sort(); //todo??? }