This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/gameengine/Expressions/InputParser.h
Dalai Felinto 11e3b6b0b5 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 (:
2011-02-18 10:10:48 +00:00

117 lines
2.7 KiB
C++

/*
* Parser.h: interface for the CParser class.
* Eindhoven University of Technology 1997
* OOPS team (Serge vd Boom, Erwin Coumans, Tom Geelen, Wynke Stuylemeier)
* $Id$
* Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Erwin Coumans makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
#ifndef __INPUTPARSER_H__
#define __INPUTPARSER_H__
class CParser;
#include "Expression.h"
class CParser
{
public:
CParser();
virtual ~CParser();
float GetFloat(STR_String& txt);
CValue* GetValue(STR_String& txt, bool bFallbackToText=false);
CExpression* ProcessText(const char *intext);
void SetContext(CValue* context);
private:
enum symbols {
errorsym,
lbracksym,
rbracksym,
cellsym,
commasym,
opsym,
constsym,
sumsym,
ifsym,
whocodedsym,
eolsym,
idsym
}; // all kinds of symbols
enum optype {
OPmodulus,
OPplus,
OPminus,
OPtimes,
OPdivide,
OPand,
OPor,
OPequal,
OPunequal,
OPgreater,
OPless,
OPgreaterequal,
OPlessequal,
OPnot
}; // all kinds of operators
enum consttype {
booltype,
inttype,
floattype,
stringtype
}; // all kinds of constants
int sym, // current symbol
opkind, // kind of operator, if symbol is an operator
constkind; // kind of operator, if symbol is a constant
char ch; // current character
int chcount; // index to character in input string
CExpression *errmsg; // contains a errormessage, if scanner error
STR_String text, // contains a copy of the original text
const_as_string; // string representation of the symbol, if symbol is a constant
bool boolvalue; // value of the boolean, if symbol is a constant of type boolean
CValue* m_identifierContext;// context in which identifiers are looked up
void ScanError(const char *str);
CExpression* Error(const char *str);
void NextCh();
void TermChar(char c);
void DigRep();
void CharRep();
void GrabString(int start);
void GrabRealString(int start);
void NextSym();
#if 0 /* not used yet */
int MakeInt();
#endif
STR_String Symbol2Str(int s);
void Term(int s);
int Priority(int optor);
CExpression *Ex(int i);
CExpression *Expr();
#ifdef WITH_CXX_GUARDEDALLOC
public:
void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:CParser"); }
void operator delete( void *mem ) { MEM_freeN(mem); }
#endif
};
#endif