#include "gamebuilder.h" #include #include "astbranch.h" #include "astleaf.h" #include "astleafliteral.h" using namespace Bu; GameBuilder::GameBuilder() : pCurNode( NULL ), pCurRoot( NULL ) { } GameBuilder::~GameBuilder() { } void GameBuilder::setLiteral( const Variable &v ) { vLiteral = v; } void GameBuilder::setGameParam( const Bu::String &sName ) { sio << "Set game param '" << sName << "' to " << vLiteral << sio.nl; hGameParams.insert( sName, vLiteral ); } void GameBuilder::beginFunction( const Bu::String &sName ) { pCurNode = pCurRoot = new AstBranch( AstNode::tScope ); sio << "New function: " << sName << sio.nl; } void GameBuilder::endFunction() { sio << "Function ended: " << *pCurRoot << sio.nl; } void GameBuilder::beginSituation( const Bu::String &sName ) { sio << "New situation: " << sName << sio.nl; } void GameBuilder::endSituation() { sio << "Situation ended." << sio.nl; } void GameBuilder::addParam( const Bu::String &sName ) { sio << " - Param added '" << sName << "'" << sio.nl; } void GameBuilder::addNode( AstNode::Type iType ) { switch( iType&AstNode::tTypeMask ) { case AstNode::tBranch: pCurNode = (AstBranch *)pCurNode->addNode( new AstBranch( iType ) ); break; case AstNode::tLeaf: pCurNode->addNode( new AstLeaf( iType ) ); break; } } void GameBuilder::closeNode() { pCurNode = pCurNode->getParent(); } void GameBuilder::addLiteral( const Variable &v ) { setLiteral( v ); if( pCurNode ) { pCurNode->addNode( new AstLeafLiteral( v ) ); } } void GameBuilder::addVarRef( const Bu::String &sName ) { if( pCurNode ) { pCurNode->addNode( new AstLeafLiteral( AstNode::tVarName, sName ) ); } }