project structure changed
This commit is contained in:
42
ConsoleGUI/Container.cs
Normal file
42
ConsoleGUI/Container.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DTLib.ConsoleGUI
|
||||
{
|
||||
public class Container : List<IDrawable>, IDrawable
|
||||
{
|
||||
public (ushort x, ushort y) AnchorPoint { get; set; }
|
||||
public ushort Width { get; set; }
|
||||
public ushort Height { get; set; }
|
||||
public char[] Textmap { get; private set; }
|
||||
public char[] Colormap { get; private set; }
|
||||
|
||||
public Container() { }
|
||||
|
||||
public Container(ushort width, ushort height)
|
||||
{
|
||||
Width = width;
|
||||
Height = height;
|
||||
}
|
||||
|
||||
public void GenTextmap()
|
||||
{
|
||||
Textmap = new char[Width * Height];
|
||||
for (int i = 0; i < Textmap.Length; i++)
|
||||
Textmap[i] = ' ';
|
||||
foreach (var element in this)
|
||||
{
|
||||
for (ushort y = 0; y < element.Height; y++)
|
||||
for (ushort x = 0; x < element.Width; x++)
|
||||
{
|
||||
element.GenTextmap();
|
||||
Textmap[(element.AnchorPoint.y + y) * Width + element.AnchorPoint.x + x] = element.Textmap[y * element.Width + x];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void GenColormap()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
21
ConsoleGUI/Control.cs
Normal file
21
ConsoleGUI/Control.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace DTLib.ConsoleGUI
|
||||
{
|
||||
public class Control : IDrawable
|
||||
{
|
||||
public (ushort x, ushort y) AnchorPoint { get; set; }
|
||||
public ushort Width { get; }
|
||||
public ushort Height { get; }
|
||||
public char[] Textmap { get; private set; }
|
||||
public char[] Colormap { get; private set; }
|
||||
|
||||
public void GenColormap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void GenTextmap()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
16
ConsoleGUI/IDrawable.cs
Normal file
16
ConsoleGUI/IDrawable.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace DTLib.ConsoleGUI
|
||||
{
|
||||
public interface IDrawable
|
||||
{
|
||||
public (ushort x, ushort y) AnchorPoint { get; set; }
|
||||
public ushort Width { get; }
|
||||
public ushort Height { get; }
|
||||
public char[] Textmap { get; }
|
||||
public char[] Colormap { get; }
|
||||
|
||||
public void GenTextmap();
|
||||
|
||||
public void GenColormap();
|
||||
|
||||
}
|
||||
}
|
||||
32
ConsoleGUI/Label.cs
Normal file
32
ConsoleGUI/Label.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
namespace DTLib.ConsoleGUI
|
||||
{
|
||||
public class Label : IDrawable
|
||||
{
|
||||
public (ushort x, ushort y) AnchorPoint { get; set; }
|
||||
public ushort Width { get; }
|
||||
public ushort Height { get; }
|
||||
public char[] Textmap { get; private set; }
|
||||
public char[] Colormap { get; private set; }
|
||||
|
||||
public string TextmapFile { get; set; }
|
||||
public string ColormapFile { get; set; }
|
||||
|
||||
public Label() { }
|
||||
|
||||
public Label(string textmapFile, string colormapFile)
|
||||
{
|
||||
TextmapFile = textmapFile;
|
||||
ColormapFile = colormapFile;
|
||||
}
|
||||
|
||||
public void GenColormap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void GenTextmap()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
189
ConsoleGUI/Window.cs
Normal file
189
ConsoleGUI/Window.cs
Normal file
@@ -0,0 +1,189 @@
|
||||
using DTLib.Filesystem;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace DTLib.ConsoleGUI
|
||||
{
|
||||
//
|
||||
// создание gui из текста в консоли
|
||||
//
|
||||
public class Window
|
||||
{
|
||||
public int WindowWidth { get; private set; }
|
||||
public int WindowHeight { get; private set; }
|
||||
public char[,] Text;
|
||||
public char[,] nowText;
|
||||
public char[,] TextColors;
|
||||
public char[,] nowTextColors;
|
||||
|
||||
public Container WindowContainer;
|
||||
|
||||
public Window(int windowWidth, int windowHeight)
|
||||
{
|
||||
WindowWidth = windowWidth;
|
||||
WindowHeight = windowHeight;
|
||||
Text = new char[windowWidth, windowHeight];
|
||||
TextColors = new char[windowWidth, windowHeight];
|
||||
nowText = TextColors;
|
||||
nowTextColors = new char[windowWidth, windowHeight];
|
||||
Console.WindowWidth = WindowWidth + 1;
|
||||
Console.WindowHeight = WindowHeight + 1;
|
||||
Console.BufferWidth = WindowWidth + 1;
|
||||
Console.BufferHeight = WindowHeight + 1;
|
||||
Console.OutputEncoding = Encoding.Unicode;
|
||||
Console.InputEncoding = Encoding.Unicode;
|
||||
Console.CursorVisible = false;
|
||||
// заполнение массивов
|
||||
for (sbyte y = 0; y < WindowHeight; y++)
|
||||
{
|
||||
for (sbyte x = 0; x < WindowWidth; x++)
|
||||
{
|
||||
Text[x, y] = ' ';
|
||||
TextColors[x, y] = 'w';
|
||||
}
|
||||
}
|
||||
nowText = TextColors;
|
||||
}
|
||||
|
||||
/*// считывает массив символов из файла
|
||||
// ширина и высота текста должны быть как указанные при инициализации объекта этого класса
|
||||
public void ReadFromFile(string path)
|
||||
{
|
||||
var r = new StreamReader(path, SimpleConverter.UTF8);
|
||||
char[] s = new char[1];
|
||||
// считывание текста
|
||||
sbyte y = 0, x = 0;
|
||||
r.Read(s, 0, 1);
|
||||
while (!r.EndOfStream && y < WindowHeight)
|
||||
{
|
||||
if (x == WindowWidth)
|
||||
{
|
||||
r.Read(s, 0, 1);
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Text[x, y] = s[0];
|
||||
x++;
|
||||
}
|
||||
r.Read(s, 0, 1);
|
||||
}
|
||||
r.Read(s, 0, 1);
|
||||
// считывание цвета
|
||||
// если не находит цвет в файле, оставляет старый
|
||||
if (s[0] == '\n')
|
||||
{
|
||||
r.Read(s, 0, 1);
|
||||
y = 0;
|
||||
x = 0;
|
||||
while (!r.EndOfStream && y < WindowHeight)
|
||||
{
|
||||
if (x == WindowWidth)
|
||||
{
|
||||
r.Read(s, 0, 1);
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
else
|
||||
{
|
||||
TextColors[x, y] = s[0];
|
||||
x++;
|
||||
}
|
||||
r.Read(s, 0, 1);
|
||||
}
|
||||
}
|
||||
r.Close();
|
||||
}*/
|
||||
|
||||
public void ResetCursor()
|
||||
{
|
||||
Console.SetCursorPosition(0, WindowHeight);
|
||||
}
|
||||
|
||||
// заменяет символ выведенный, использовать после ShowAll()
|
||||
public void ChangeChar(sbyte x, sbyte y, char ch)
|
||||
{
|
||||
Text[x, y] = ch;
|
||||
nowText[x, y] = ch;
|
||||
Console.SetCursorPosition(x, y);
|
||||
ColoredConsole.Write(TextColors[x, y].ToString(), ch.ToString());
|
||||
}
|
||||
|
||||
public void ChangeColor(sbyte x, sbyte y, char color)
|
||||
{
|
||||
TextColors[x, y] = color;
|
||||
nowTextColors[x, y] = color;
|
||||
Console.SetCursorPosition(x, y);
|
||||
ColoredConsole.Write(color.ToString(), Text[x, y].ToString());
|
||||
}
|
||||
|
||||
public void ChangeCharAndColor(sbyte x, sbyte y, char color, char ch)
|
||||
{
|
||||
Text[x, y] = ch;
|
||||
nowText[x, y] = ch;
|
||||
TextColors[x, y] = color;
|
||||
nowTextColors[x, y] = color;
|
||||
Console.SetCursorPosition(x, y);
|
||||
ColoredConsole.Write(color.ToString(), ch.ToString());
|
||||
}
|
||||
|
||||
public void ChangeLine(sbyte x, sbyte y, char color, string line)
|
||||
{
|
||||
Console.SetCursorPosition(x, y);
|
||||
for (sbyte i = 0; i < line.Length; i++)
|
||||
{
|
||||
Text[x + i, y] = line[i];
|
||||
nowText[x + i, y] = line[i];
|
||||
TextColors[x + i, y] = color;
|
||||
nowTextColors[x + i, y] = color;
|
||||
}
|
||||
ColoredConsole.Write(color.ToString(), line);
|
||||
}
|
||||
|
||||
// выводит все символы
|
||||
public void ShowAll()
|
||||
{
|
||||
var l = new List<string>();
|
||||
for (sbyte y = 0; y < WindowHeight; y++)
|
||||
{
|
||||
for (sbyte x = 0; x < WindowWidth; x++)
|
||||
{
|
||||
l.Add(TextColors[x, y].ToString());
|
||||
l.Add(Text[x, y].ToString());
|
||||
nowText[x, y] = Text[x, y];
|
||||
nowTextColors[x, y] = TextColors[x, y];
|
||||
}
|
||||
l.Add("w");
|
||||
l.Add("\n");
|
||||
}
|
||||
ColoredConsole.Write(l.ToArray());
|
||||
//Console.WriteLine();
|
||||
}
|
||||
|
||||
public void UpdateAll()
|
||||
{
|
||||
for (sbyte y = 0; y < WindowHeight; y++)
|
||||
{
|
||||
for (sbyte x = 0; x < WindowWidth; x++)
|
||||
{
|
||||
Console.SetCursorPosition(x, y);
|
||||
if (TextColors[x, y] != nowTextColors[x, y] || Text[x, y] != nowText[x, y])
|
||||
{
|
||||
ColoredConsole.Write(TextColors[x, y].ToString(), Text[x, y].ToString());
|
||||
nowText[x, y] = Text[x, y];
|
||||
nowTextColors[x, y] = TextColors[x, y];
|
||||
}
|
||||
}
|
||||
Console.Write('\n');
|
||||
}
|
||||
}
|
||||
|
||||
public void RenderFile(string file)
|
||||
{
|
||||
Console.Clear();
|
||||
Console.WriteLine(File.ReadAllText(file));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user