Back to BeeGuid Source
int buildTable(string elementOfTable[250], int amountOfElements, string tableParameter) //Magic code, don't touch!
{
int maxLength = 0,
preMax,
lineLength,
columnParameter;
bool maxLength2,
bigAmount = false;
for (int i = 1; i <= amountOfElements; i++)
{
preMax = elementOfTable[i].length();
if (preMax > maxLength) { maxLength = preMax; }
}
maxLength2 = 0 == (maxLength % 2);
maxLength += 3;
if ((tableParameter == "number") | (tableParameter == "ccolor"))
{
if (amountOfElements <10) { maxLength++; }
if ((amountOfElements < 100) & (amountOfElements >= 10)) { maxLength += 2; }
if ((amountOfElements < 1000) & (amountOfElements >= 100)) { maxLength += 3; bigAmount = true; }
if (amountOfElements >= 1000) { ::cout << " Console: Too much information"; fastMessage(); return 0; }
}
lineLength = (consoleTextLength / maxLength) * maxLength + 1;
if (lineLength > consoleTextLength)
{
columnParameter = consoleTextLength / maxLength - 1;
lineLength -= maxLength;
}
else { columnParameter = consoleTextLength / maxLength; }
maxLength--;
int stringParameter;
stringParameter = amountOfElements / columnParameter;
if (amountOfElements % columnParameter > 0) { stringParameter++; }
if (devMode == true) //Dev mode
{
::cout << darkred << " DEV: " << darkblue
<< "Line length - " << lineLength
<< darkred << "\n DEV: " << darkblue
<< "String Parameter - " << stringParameter
<< darkred << "\n DEV: " << darkblue
<< "Column Parameter - " << columnParameter
<< aqua << endl;
for (int i = 1; i <= 80; i++)
{
cout << "\xC4";
}
}
//Table generation
/* Up line start */
int lastAdd = 1;
for (int i = 1; i <= lastAdd; i++) { ::cout << " "; }
::cout << "\xDA";
for (int h1 = 1; h1 <= columnParameter; h1++)
{
if (tableParameter == "number" | tableParameter == "ccolor")
{
if (bigAmount == false) { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
else { for (int h = 1; h <= (maxLength - 1); h++) { ::cout << "\xC4"; } }
}
else { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
if (h1 != columnParameter) { ::cout << "\xC2"; }
}
::cout << "\xBF\n";
/* Up line finish */
for (int i = 1; i <= stringParameter; i++)
{
for (int f = 1; f <= lastAdd; f++) { ::cout << " "; }
/* In table generation start */
string colorOfGenType;
for (int k = 1; k <= columnParameter; k++)
{
string elementInTableLeft = "";
string elementInTableRight = "";
int textLenghtNeedAddLeft;
int textLenghtNeedAddRight;
int posInTable = (i - 1) * columnParameter + k;
elementInTableLeft = elementOfTable[posInTable];
int textLenghtNeedAdd = maxLength - elementInTableLeft.length();
char elementOut[50];
if (tableParameter == "center")
{
textLenghtNeedAddLeft = textLenghtNeedAdd / 2;
textLenghtNeedAddRight = textLenghtNeedAdd / 2 + textLenghtNeedAdd % 2;
}
if (tableParameter == "left")
{
textLenghtNeedAddLeft = 1;
textLenghtNeedAddRight = textLenghtNeedAdd - 1;
}
if (tableParameter == "right")
{
textLenghtNeedAddRight = 1;
textLenghtNeedAddLeft = textLenghtNeedAdd - 1;
}
if (tableParameter == "ccolor")
{
/* Part from "number" */
if ((bigAmount == false) & (amountOfElements < 10))
{
textLenghtNeedAddLeft = 1;
textLenghtNeedAddRight = textLenghtNeedAdd - 2;
}
if ((bigAmount == false) & (amountOfElements >= 10))
{
if (posInTable < 10) { textLenghtNeedAddLeft = 2; textLenghtNeedAddRight = textLenghtNeedAdd - 3; }
else { if (posInTable < 100) { textLenghtNeedAddLeft = 1; textLenghtNeedAddRight = textLenghtNeedAdd - 3; } }
}
if (bigAmount == true)
{
if (posInTable < 10) { textLenghtNeedAddLeft = 3; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
else
{
if (posInTable < 100) { textLenghtNeedAddLeft = 2; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
else { textLenghtNeedAddLeft = 1; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
}
}
/* Part from "number" */
char preElement[50];
strncpy_s(preElement, elementInTableLeft.c_str(), elementInTableLeft.length() + 1);
char *istr;
istr = strstr(preElement, "+");
int elementLen = elementInTableLeft.length();
if (istr != NULL)
{
strncpy_s(elementOut, preElement, elementLen - 1);
colorOfGenType = "darkblue";
}
else
{
istr = strstr(preElement, "-");
if (istr != NULL)
{
strncpy_s(elementOut, preElement, elementLen - 1);
colorOfGenType = "darkred";
}
else
{
strncpy_s(elementOut, preElement, elementLen);
colorOfGenType = "darkgreen";
}
}
elementInTableLeft = "";
}
if (tableParameter == "number")
{
if ((bigAmount == false) & (amountOfElements < 10))
{
textLenghtNeedAddLeft = 1;
textLenghtNeedAddRight = textLenghtNeedAdd - 2;
}
if ((bigAmount == false) & (amountOfElements >= 10))
{
if (posInTable < 10) { textLenghtNeedAddLeft = 2; textLenghtNeedAddRight = textLenghtNeedAdd - 3; }
else { if (posInTable < 100) { textLenghtNeedAddLeft = 1; textLenghtNeedAddRight = textLenghtNeedAdd - 3; } }
}
if (bigAmount == true)
{
if (posInTable < 10) { textLenghtNeedAddLeft = 3; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
else
{
if (posInTable < 100) { textLenghtNeedAddLeft = 2; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
else { textLenghtNeedAddLeft = 1; textLenghtNeedAddRight = textLenghtNeedAdd - 4; }
}
}
}
for (int d = 1; d <= textLenghtNeedAddLeft; d++) { elementInTableLeft = " " + elementInTableLeft; }
for (int d = 1; d <= textLenghtNeedAddRight; d++){ elementInTableRight = elementInTableRight + " "; }
if (tableParameter == "number")
{
int posInTable2 = posInTable;
if (bigAmount == false)
{
if (elementInTableLeft == " ") { ::cout << "\xB3" << " " << elementInTableLeft << elementInTableRight; }
if (elementInTableLeft == " ") { ::cout << "\xB3" << " " << elementInTableLeft << elementInTableRight; }
if ((elementInTableLeft != " ") & (elementInTableLeft != " ")) { ::cout << "\xB3" << posInTable << elementInTableLeft << elementInTableRight; }
}
else
{
if (elementInTableLeft == " ") { ::cout << "\xB3" << " " << elementInTableLeft << elementInTableRight; }
if (elementInTableLeft == " ") { ::cout << "\xB3" << " " << elementInTableLeft << elementInTableRight; }
if (elementInTableLeft == " ") { ::cout << "\xB3" << " " << elementInTableLeft << elementInTableRight; }
if ((elementInTableLeft != " ") & (elementInTableLeft != " ") & (elementInTableLeft != " "))
{
::cout << "\xB3" << posInTable << elementInTableLeft << elementInTableRight;
}
}
}
if (tableParameter == "ccolor")
{
if (colorOfGenType == "darkblue")
{
::cout << "\xB3" << posInTable << darkblue << elementInTableLeft << elementOut << elementInTableRight << "D" << aqua;
}
else
{
if (colorOfGenType == "darkred")
{
::cout << "\xB3" << posInTable << darkred << elementInTableLeft << elementOut << elementInTableRight << "R" << aqua;
}
else
{
if (posInTable > amountOfElements)
{
if (amountOfElements <10) { ::cout << "\xB3" << " " << darkgreen << elementInTableLeft << elementOut << elementInTableRight << aqua; }
if ((amountOfElements <100) & (amountOfElements >= 10)) { ::cout << "\xB3" << " " << darkgreen << elementInTableLeft << elementOut << elementInTableRight << aqua; }
if ((amountOfElements <1000) & (amountOfElements >= 100)) { ::cout << "\xB3" << " " << darkgreen << elementInTableLeft << elementOut << elementInTableRight << aqua; }
}
else { ::cout << "\xB3" << posInTable << darkgreen << elementInTableLeft << elementOut << elementInTableRight << aqua; }
}
}
}
if ((tableParameter == "center") | (tableParameter == "left") | (tableParameter == "right"))
{
::cout << "\xB3" << elementInTableLeft << elementInTableRight;
}
}
::cout << "\xB3" << endl;
/* In table generation finish */
if (i == stringParameter)
{
}
else
{
for (int i = 1; i <= lastAdd; i++) { ::cout << " "; }
::cout << "\xC3";
for (int h1 = 1; h1 <= columnParameter; h1++)
{
if (tableParameter == "number")
{
if (bigAmount == false) { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
else { for (int h = 1; h <= (maxLength - 1); h++) { ::cout << "\xC4"; } }
}
if (tableParameter == "ccolor") { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
if ((tableParameter == "center") | (tableParameter == "left") | (tableParameter == "right"))
{
for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; }
}
if (h1 != columnParameter) { ::cout << "\xC5"; }
}
::cout << "\xB4" << endl;
}
}
for (int i = 1; i <= lastAdd; i++) { ::cout << " "; }
::cout << "\xC0";
for (int h1 = 1; h1 <= columnParameter; h1++)
{
if (tableParameter == "number")
{
if (bigAmount == false) { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
else { for (int h = 1; h <= (maxLength - 1); h++) { ::cout << "\xC4"; } }
}
else { for (int h = 1; h <= maxLength; h++) { ::cout << "\xC4"; } }
if (h1 != columnParameter) { ::cout << "\xC1"; }
}
::cout << "\xD9" << endl;
return 0;
}
|