summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2013-08-22 14:53:40 (GMT)
committer jacob1 <jfu614@gmail.com>2013-08-22 14:53:40 (GMT)
commit68984bb9be07ea4b6eccf76dddaf3f31d23f577c (patch)
treea2e4c6801c2b09e91d52bb0d1539b1b8ec80704b /src/gui
parentb2045b0a7fadbee87ecf52fe14699819b58e7667 (diff)
parent4a308cbf661bb40efdf53c6632f875c6c393a307 (diff)
downloadpowder-68984bb9be07ea4b6eccf76dddaf3f31d23f577c.zip
powder-68984bb9be07ea4b6eccf76dddaf3f31d23f577c.tar.gz
Merge pull request #155 from mniip/regex
Remove regex dependency
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/game/GameController.cpp33
-rw-r--r--src/gui/game/SignTool.cpp22
2 files changed, 40 insertions, 15 deletions
diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp
index 8b58b48..c514d3e 100644
--- a/src/gui/game/GameController.cpp
+++ b/src/gui/game/GameController.cpp
@@ -571,19 +571,30 @@ bool GameController::MouseUp(int x, int y, unsigned button)
(*iter).pos((*iter).getText(sim), signx, signy, signw, signh);
if (x>=signx && x<=signx+signw && y>=signy && y<=signy+signh)
{
- if (sregexp((*iter).text.c_str(), "^{[ct]:[0-9]*|.*}$")==0)
+ int match=0;
+ const char* str=(*iter).text.c_str();
+ const char* e;
+ if (str[0]=='{' && (str[1]=='c' || str[1]=='t') && str[2]==':' && str[3]>='0' && str[3]<='9')
+ {
+ const char* p=str+4;
+ while (*p>='0' && *p<='9')
+ p++;
+ e=p;
+ if (*p=='|')
+ {
+ while (*p)
+ p++;
+ if (p[-1]=='}')
+ {
+ match=1;
+ }
+ }
+ }
+ if (match)
{
- const char * signText = (*iter).text.c_str();
char buff[256];
- int sldr;
-
- memset(buff, 0, sizeof(buff));
-
- for (sldr=3; signText[sldr] != '|'; sldr++)
- buff[sldr-3] = signText[sldr];
-
- buff[sldr-3] = '\0';
-
+ strcpy(buff, str+3);
+ buff[e-str-3]=0;
int tempSaveID = format::StringToNumber<int>(std::string(buff));
if (tempSaveID)
{
diff --git a/src/gui/game/SignTool.cpp b/src/gui/game/SignTool.cpp
index 87ed59e..a71f8e2 100644
--- a/src/gui/game/SignTool.cpp
+++ b/src/gui/game/SignTool.cpp
@@ -177,16 +177,30 @@ void SignWindow::DoDraw()
for(std::vector<sign>::iterator iter = sim->signs.begin(), end = sim->signs.end(); iter != end; ++iter)
{
sign & currentSign = *iter;
- int x, y, w, h, dx, dy;
+ int x, y, w, h, dx, dy, match=0;
Graphics * g = ui::Engine::Ref().g;
std::string text = currentSign.getText(sim);
+ const char* str = currentSign.text.c_str();
currentSign.pos(text, x, y, w, h);
g->clearrect(x, y, w+1, h);
g->drawrect(x, y, w+1, h, 192, 192, 192, 255);
- if (sregexp(currentSign.text.c_str(), "^{[ct]:[0-9]*|.*}$"))
- g->drawtext(x+3, y+3, text, 255, 255, 255, 255);
- else
+ if (str[0]=='{' && (str[1]=='c' || str[1]=='t') && str[2]==':' && str[3]>='0' && str[3]<='9')
+ {
+ const char* p=str+4;
+ while (*p>='0' && *p<='9')
+ p++;
+ if (*p=='|')
+ {
+ while (*p)
+ p++;
+ if (p[-1]=='}')
+ match=1;
+ }
+ }
+ if (match)
g->drawtext(x+3, y+3, text, 0, 191, 255, 255);
+ else
+ g->drawtext(x+3, y+3, text, 255, 255, 255, 255);
x = currentSign.x;
y = currentSign.y;