09/12/2020 11:05
Alinhamento de texto de caixas de diálogo:
Código testado:
Código:
enum
{
ALIGN_LEFT,
ALIGN_RIGHT,
ALIGN_CENTER
}
stock DialogTextAling(input_text[], align, output_text[][])
{
static lines[25][150];
new idx = -1;
new lastIdx = 0;
new count = 0;
while(count < sizeof(lines))
{
lastIdx = idx;
idx = strfind(input_text, "\n", true, lastIdx + 1);
strmid(lines[count], input_text, count == 0 ? 0 : lastIdx + 1, idx);
if(idx == -1)
{
strmid(lines[count], input_text, count == 0 ? 0 : lastIdx + 1, strlen(input_text));
break;
}
count ++;
}
if(align == ALIGN_LEFT)
{
for(new i = 0; i < sizeof(lines); i ++)
{
if(!strlen(lines[i]))
break;
strcat(output_text[i], lines[i], strlen(lines[i]) + 1);
}
}
else if(align == ALIGN_RIGHT)
{
new major = 0;
for(new i = 0, siz = sizeof(lines); i < siz; i ++)
{
if(!strlen(lines[i]))
break;
new len = strlen(lines[i]);
if(len > major)
major = len;
}
for(new i = 0; i < sizeof(lines); i ++)
{
if(!strlen(lines[i]))
break;
new len = strlen(lines[i]);
new maxLen = (major - len);
if(len < major)
{
for(new ii = 0; ii < maxLen; ii ++)
strins(lines[i], " ", 0);
}
strcat(output_text[i], lines[i], len + maxLen + 1);
}
}
else if(align == ALIGN_CENTER)
{
new major = 0;
for(new i = 0, siz = sizeof(lines); i < siz; i ++)
{
if(!strlen(lines[i]))
break;
new len = strlen(lines[i]);
if(len > major)
major = len;
}
for(new i = 0; i < sizeof(lines); i ++)
{
if(!strlen(lines[i]))
break;
new len = strlen(lines[i]);
new maxLen = (major - len) / 2;
if(len < major)
{
for(new ii = 0; ii < maxLen; ii ++)
strins(lines[i], " ", 0);
}
strcat(output_text[i], lines[i], len + maxLen + 1);
}
}
}
Código testado:
Código:
print("\n\n");
print("ALING_LEFT (default)");
new input_text[] = "* linha 1 *\n** linha 2 **\n** ** linha 3 ** **";
new output_text[6][150];
DialogTextAling(input_text, ALIGN_LEFT, output_text);
for(new i = 0; i < 10; i ++)
{
if(!strlen(output_text[i]))
break;
printf(output_text[i]);
}
print("\n\n");
print("ALING_RIGHT");
new input_text2[] = "* linha 1 *\n** linha 2 **\n** ** linha 3 ** **";
new output_text2[6][150];
DialogTextAling(input_text2, ALIGN_RIGHT, output_text2);
for(new i = 0; i < 10; i ++)
{
if(!strlen(output_text2[i]))
break;
printf(output_text2[i]);
}
print("\n\n");
print("ALING_CENTER");
new input_text3[] = "* linha 1 *\n** linha 2 **\n** ** linha 3 ** **";
new output_text3[6][150];
DialogTextAling(input_text3, ALIGN_CENTER, output_text3);
for(new i = 0; i < 10; i ++)
{
if(!strlen(output_text3[i]))
break;
printf(output_text3[i]);
}
SA:MP Dev Tools
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140