157 lines
4.2 KiB
C#
157 lines
4.2 KiB
C#
using System;
|
|
|
|
namespace sections
|
|
{
|
|
public class Section {
|
|
string _name;
|
|
int _x;
|
|
int _y;
|
|
int _padding;
|
|
public bool isCentered;
|
|
Section _toRight;
|
|
Section _toTop;
|
|
Section _toLeft;
|
|
|
|
string _value;
|
|
|
|
public Section(){
|
|
_name = nameof(this);
|
|
_x = 0;
|
|
_y = 0;
|
|
_padding = 2;
|
|
_value = "";
|
|
_toLeft = null;
|
|
_toRight = null;
|
|
_toTop = null;
|
|
}
|
|
public Section (int x, int y, int padding = 2) {
|
|
_name = nameof(this);
|
|
_x = x;
|
|
_y = y;
|
|
_value = "This value was not set.";
|
|
_padding = padding;
|
|
_toLeft = null;
|
|
_toRight = null;
|
|
_toTop = null;
|
|
}
|
|
|
|
|
|
public int Width {
|
|
get {
|
|
// |padding|content|padding|
|
|
return _padding + _value.Length + _padding;
|
|
}
|
|
}
|
|
|
|
public void SetToBottomOf(Section section){
|
|
_toTop = section;
|
|
}
|
|
public void SetToLeftOf(Section section){
|
|
_toRight = section;
|
|
}
|
|
public void SetToRightOf(Section section) {
|
|
_toLeft = section;
|
|
}
|
|
|
|
public int X {
|
|
get {
|
|
int output = 0;
|
|
if (isCentered) {
|
|
output = (int)(Console.WindowWidth - Width - 2 * _padding)/3;
|
|
} else {
|
|
if (_x != 0) {
|
|
output = _x;
|
|
} else {
|
|
if (_toLeft != null) {
|
|
output = _toLeft.Right + _padding;
|
|
}
|
|
}
|
|
}
|
|
return output;
|
|
} set {
|
|
_x = value;
|
|
}
|
|
}
|
|
|
|
public int Y {
|
|
get {
|
|
int output = 0;
|
|
if (_y != 0) {
|
|
output = _y;
|
|
} else {
|
|
if (_toTop != null) {
|
|
output = _toTop.Bottom + _padding;
|
|
} else {
|
|
if (_toLeft != null) {
|
|
output = _toLeft.Y;
|
|
}
|
|
}
|
|
}
|
|
return output;
|
|
} set {
|
|
_y = value;
|
|
}
|
|
}
|
|
|
|
private string[] Output {
|
|
get {
|
|
string[] outputString;
|
|
string buffer = "";
|
|
bool isMultiLine = false;
|
|
int colsFromAllowedEdge = Console.WindowWidth - X - _padding;
|
|
for (int i = 0; i < _value.Length; i++) {
|
|
if (i < 0 && colsFromAllowedEdge % i == 0) {
|
|
buffer += '|';
|
|
isMultiLine = true;
|
|
}
|
|
buffer += _value[i];
|
|
}
|
|
if (isMultiLine) {
|
|
outputString = buffer.Split("|");
|
|
} else{
|
|
if (_value != "") {
|
|
outputString = new string[] {buffer};
|
|
} else {
|
|
outputString = new string[] {"this value was not set."};
|
|
}
|
|
}
|
|
return outputString;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public void Write() {
|
|
int offset = 0;
|
|
foreach (string line in Output) {
|
|
Console.SetCursorPosition(X, Y + offset);
|
|
Console.Write(line);
|
|
offset++;
|
|
}
|
|
}
|
|
public int Top {
|
|
get {
|
|
int output = 0;
|
|
if (_y != 0) {
|
|
output = _y - _padding;
|
|
} else {
|
|
output = _toTop.Bottom + _padding;
|
|
}
|
|
return output;
|
|
} set {
|
|
_y = value;
|
|
}
|
|
}
|
|
|
|
public int Right {
|
|
get {
|
|
return X + Output[0].Length + _padding;
|
|
}
|
|
}
|
|
public int Bottom {
|
|
get {
|
|
return Y + Output.Length + _padding;
|
|
}
|
|
}
|
|
}
|
|
} |