BGE Expressions: convert "\n" to real \n

example of usage:

0) Game Properties: text (String) and log (Boolean=True)
1) Keyboard Sensor set to AllKeys with log as logging and text as Target
2) Expression Controller: text=="quit\n"
3) Game Actuator: Quit Game

[1] <-> [2] <-> [3] .:. this will quit the game when you write quit + Enter

4) Keyboard Sensor: set to Return
5) And Controller
6) Property Actuator: Assign text property to "" 

[4] <-> [5] <-> [6] .:. this will reset the string everytime you press Enter

# # # # # # # # # # # # # # # # # # # # # # # 
Since the change is in the InputParser.cpp it actually affects all the text
input fields in the Logic Editor. So for instance you can use it in the
assign Property Actuator.
# # # # # # # # # # # # # # # # # # # # # # #
Connect an expression controller: text="idclip\n" with an actuator to disable
the Collision of your walls and you can re-create Doom with only Logic Bricks (:
This commit is contained in:
Dalai Felinto 2011-02-18 10:10:48 +00:00
parent 708df39935
commit 11e3b6b0b5
2 changed files with 24 additions and 1 deletions

@ -151,6 +151,28 @@ void CParser::GrabString(int start)
void CParser::GrabRealString(int start)
{
// works like GrabString but converting \\n to \n
// puts part of the input string into the global variable
// const_as_string, from position start, to position chchount
int i;
char tmpch;
const_as_string = STR_String();
for (i=start;i<chcount;i++) {
tmpch= text[i];
if ((tmpch =='\\') && (text[i+1] == 'n')){
tmpch = '\n';
i++;
}
const_as_string += tmpch;
}
}
void CParser::NextSym()
{
// sets the global variable sym to the next symbol, and
@ -244,7 +266,7 @@ void CParser::NextSym()
start = chcount;
while ((ch != '\"') && (ch != 0x0))
NextCh();
GrabString(start);
GrabRealString(start);
TermChar('\"'); // check for eol before '\"'
break;
}

@ -93,6 +93,7 @@ private:
void DigRep();
void CharRep();
void GrabString(int start);
void GrabRealString(int start);
void NextSym();
#if 0 /* not used yet */
int MakeInt();