summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCracker64 <cracker642@gmail.com>2011-02-15 01:32:01 (GMT)
committer Cracker64 <cracker642@gmail.com>2011-02-15 01:32:01 (GMT)
commitb08c37342b4e1925776451d0ca7388cb5841d432 (patch)
treea3f957e4e29193219bef3bfab1b444bdd07e3d1b /src
parente882dfecf91bbad8480422418f163686e60b64b6 (diff)
downloadpowder-b08c37342b4e1925776451d0ca7388cb5841d432.zip
powder-b08c37342b4e1925776451d0ca7388cb5841d432.tar.gz
Commands in signs, some don't fit
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c16
-rw-r--r--src/interface.c18
-rw-r--r--src/main.c22
3 files changed, 54 insertions, 2 deletions
diff --git a/src/graphics.c b/src/graphics.c
index 78f1867..29aa3eb 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -2961,9 +2961,23 @@ void render_signs(pixel *vid_buf)
}
drawtext(vid_buf, x+3, y+3, buff, 0, 191, 255, 255);
}
+ if(sregexp(signs[i].text, "^{e:.*|.*}$")==0)
+ {
+ int sldr, startm;
+ memset(buff, 0, sizeof(buff));
+ for(sldr=3; signs[i].text[sldr-1] != '|'; sldr++)
+ startm = sldr + 1;
+ sldr = startm;
+ while(signs[i].text[sldr] != '}')
+ {
+ buff[sldr - startm] = signs[i].text[sldr];
+ sldr++;
+ }
+ drawtext(vid_buf, x+3, y+3, buff, 0, 255, 215, 255);
+ }
//Usual text
- if(strcmp(signs[i].text, "{p}") && strcmp(signs[i].text, "{t}") && sregexp(signs[i].text, "^{c:[0-9]*|.*}$"))
+ if(strcmp(signs[i].text, "{p}") && strcmp(signs[i].text, "{t}") && sregexp(signs[i].text, "^{c:[0-9]*|.*}$") && sregexp(signs[i].text, "^{e:.*|.*}$"))
drawtext(vid_buf, x+3, y+3, signs[i].text, 255, 255, 255, 255);
x = signs[i].x;
diff --git a/src/interface.c b/src/interface.c
index 32c83a1..0761692 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -105,9 +105,25 @@ void get_sign_pos(int i, int *x0, int *y0, int *w, int *h)
}
*w = textwidth(buff) + 5;
}
+ if(sregexp(signs[i].text, "^{e:.*|.*}$")==0)//character width limit in signs need to be incresed, as most commands don't fit..
+ {
+ int sldr, startm;
+ char buff[256];
+ memset(buff, 0, sizeof(buff));
+ for(sldr=3; signs[i].text[sldr-1] != '|'; sldr++)
+ startm = sldr + 1;
+
+ sldr = startm;
+ while(signs[i].text[sldr] != '}')
+ {
+ buff[sldr - startm] = signs[i].text[sldr];
+ sldr++;
+ }
+ *w = textwidth(buff) + 5;
+ }
//Ususal width
- if (strcmp(signs[i].text, "{p}") && strcmp(signs[i].text, "{t}") && sregexp(signs[i].text, "^{c:[0-9]*|.*}$"))
+ if (strcmp(signs[i].text, "{p}") && strcmp(signs[i].text, "{t}") && sregexp(signs[i].text, "^{c:[0-9]*|.*}$") && sregexp(signs[i].text, "^{e:.*|.*}$"))
*w = textwidth(signs[i].text) + 5;
*h = 14;
*x0 = (signs[i].ju == 2) ? signs[i].x - *w :
diff --git a/src/main.c b/src/main.c
index bb27473..568b070 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2353,6 +2353,7 @@ int main(int argc, char *argv[])
{
if(!bq)
for(signi=0; signi<MAXSIGNS; signi++)
+ {
if(sregexp(signs[signi].text, "^{c:[0-9]*|.*}$")==0)
{
int signx, signy, signw, signh;
@@ -2373,6 +2374,27 @@ int main(int argc, char *argv[])
open_ui(vid_buf, buff2, 0);
}
}
+ if(sregexp(signs[signi].text, "^{e:.*|.*}$")==0)
+ {
+ int signx, signy, signw, signh;
+ get_sign_pos(signi, &signx, &signy, &signw, &signh);
+ if(x>=signx && x<=signx+signw && y>=signy && y<=signy+signh)
+ {
+ char buff[256];
+ int sldr;
+
+ memset(buff, 0, sizeof(buff));
+
+ for(sldr=3; signs[signi].text[sldr] != '|'; sldr++)
+ buff[sldr-3] = signs[signi].text[sldr];
+
+ char buff2[sldr-2]; //TODO: Fix this for Visual Studio
+ memset(buff2, 0, sizeof(buff2));
+ memcpy(&buff2, &buff, sldr-3);
+ process_command(vid_buf, buff2,console_error);
+ }
+ }
+ }
}
if (c==WL_SIGN+100)