public Canvas(int sizeX, int sizeY, int positionX, int positionY) { size = new IntXYPair(sizeX, sizeY); position = new IntXYPair(positionX, positionY); bitmap = new int[sizeX, sizeY]; bitmap.FillArray(16); }
public Canvas(IntXYPair size, IntXYPair position) { this.size = size; this.position = position; bitmap = new int[size.x, size.y]; bitmap.FillArray(16); }
public void PrintImage(string name, IntXYPair position) { if (images.ContainsKey(name)) { Renderer.PrintImage(images[name], position); } }
public void DrawToCanvas(string canvasName, string imageName, IntXYPair position) { if (canvases.ContainsKey(canvasName) && images.ContainsKey(imageName)) { canvases[canvasName].DrawImage(images[imageName], position); } }
public void MoveCanvas(string name, IntXYPair position) { if (canvases.ContainsKey(name)) { canvases[name].Move(position); } }
public void FreeStringDemo() { cHandler.Reset(); IntXYPair textPosition = new IntXYPair(30, 10); cHandler.SetFreeString("Hello", new FreeString("Hello World!", textPosition, Color.Black, Color.Green)); cHandler.SetBorder("DialogBorder", new Border(18, 9, 25, 3)); bool exit = false; while (!exit) { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.Clear(); Console.SetCursorPosition(10, 20); Console.Write("Q | LeftAlign, W | CenterAlign, E | RightAlign"); cHandler.PrintAllBorders(); cHandler.PrintAllFreeStrings(); var input = Console.ReadKey(true); switch (input.Key) { case ConsoleKey.Escape: exit = true; break; case ConsoleKey.UpArrow: cHandler.MoveFreeString("Hello", 0, -1); cHandler.MoveBorder("DialogBorder", 0, -1); break; case ConsoleKey.DownArrow: cHandler.MoveFreeString("Hello", 0, 1); cHandler.MoveBorder("DialogBorder", 0, 1); break; case ConsoleKey.LeftArrow: cHandler.MoveFreeString("Hello", -1, 0); cHandler.MoveBorder("DialogBorder", -1, 0); break; case ConsoleKey.RightArrow: cHandler.MoveFreeString("Hello", 1, 0); cHandler.MoveBorder("DialogBorder", 1, 0); break; case ConsoleKey.Q: cHandler.ChangeFreeStringAlignment("Hello", Alignment.Left); break; case ConsoleKey.W: cHandler.ChangeFreeStringAlignment("Hello", Alignment.Center); break; case ConsoleKey.E: cHandler.ChangeFreeStringAlignment("Hello", Alignment.Right); break; } } }
public void DrawImage(Image image, IntXYPair position) { //load the colors, and keep track of the color conversion Dictionary <int, int> colorMap = new Dictionary <int, int> { // black and white [15] = 15, [16] = 16 }; //get the correct number for each color in the image int initialIndex = colors.Count(); for (int i = 0; i < image.Colors.Count; i++) { if (colors.Any(x => x.ToArgb() == image.Colors[i].ToArgb())) { colorMap[i] = colors.FindIndex(x => x.ToArgb() == image.Colors[i].ToArgb()); } else { colors.Add(image.Colors[i]); colorMap[i] = colors.Count - 1; } } //calculating where to start and where to end int rowStart = Math.Max(0, 0 - position.y); int rowEnd = Math.Min(bitmap.GetLength(1), position.y + image.Bitmap.Count) - position.y; int leftLimit = Math.Max(0, 0 - position.x); int rightLimit = Math.Min(bitmap.GetLength(0), position.x + image.Bitmap[0].Length) - position.x; for (int y = rowStart; y < rowEnd; y++) { for (int x = leftLimit; x < rightLimit; x++) { char currentPixel = image.Bitmap[y][x]; if (currentPixel != 'T') { if (currentPixel == 'W') { bitmap[x + position.x, y + position.y] = 15; } else if (currentPixel == 'Z') { bitmap[x + position.x, y + position.y] = 16; } else { bitmap[x + position.x, y + position.y] = colorMap[Convert.ToInt32(image.Bitmap[y][x].ToString())]; } } } } }
public void ImageDemo() { cHandler.Reset(); IntXYPair pikachuPosition = new IntXYPair(5, 5); bool exit = false; while (!exit) { Console.Clear(); cHandler.PrintImage("Pikachu", pikachuPosition); var input = Console.ReadKey(true); switch (input.Key) { case ConsoleKey.Escape: exit = true; break; case ConsoleKey.LeftArrow: pikachuPosition.x--; break; case ConsoleKey.UpArrow: pikachuPosition.y--; break; case ConsoleKey.RightArrow: pikachuPosition.x++; break; case ConsoleKey.DownArrow: pikachuPosition.y++; break; } } }
public void CanvasDemo() { cHandler.Reset(); bool exit = false; IntXYPair canvasPosition = new IntXYPair(5, 5); IntXYPair pikachuPosition = new IntXYPair(5, 5); cHandler.SetCanvas("BaseCanvas", new IntXYPair(20, 20), canvasPosition); while (!exit) { cHandler.ClearCanvas("BaseCanvas"); cHandler.MoveCanvas("BaseCanvas", canvasPosition); cHandler.DrawToCanvas("BaseCanvas", "Pikachu", pikachuPosition); Console.Clear(); cHandler.PrintCanvas("BaseCanvas"); var input = Console.ReadKey(true); switch (input.Key) { case ConsoleKey.Escape: exit = true; break; case ConsoleKey.LeftArrow: pikachuPosition.x--; break; case ConsoleKey.UpArrow: pikachuPosition.y--; break; case ConsoleKey.RightArrow: pikachuPosition.x++; break; case ConsoleKey.DownArrow: pikachuPosition.y++; break; case ConsoleKey.A: canvasPosition.x--; break; case ConsoleKey.D: canvasPosition.x++; break; case ConsoleKey.S: canvasPosition.y++; break; case ConsoleKey.W: canvasPosition.y--; break; default: break; } } }
public void Move(IntXYPair position) { this.position = position; }
public void MoveTo(IntXYPair newPosition) { position = newPosition; }
public void MoveTo(int x, int y) { position = new IntXYPair(x, y); }
public FreeString(string text, IntXYPair position, Color foregroundColor, Color backgroundColor) : this(text, position.GetX(), position.GetY(), foregroundColor, backgroundColor) { }
public FreeString(string text, IntXYPair position) : this(text, position.GetX(), position.GetY()) { }
public FreeString(string text, int x, int y) { this.text = text; position = new IntXYPair(x, y); }
public void SetCanvas(string name, IntXYPair size, IntXYPair position) { canvases[name] = new Canvas(size, position); }