Integrating It All
[ 324 ]
void setCompilationUnit(CompilationUnit unit) {
compilationUnit = unit
}
}
You will immediately notice the similarity between this transformation class and
the state machine transformation in Chapter 8, AST Transformations. We follow the
same steps as before. We first parse the AST nodes to build an interim model that
represents the game engine. We then use that model to build the game engine
pattern classes:
class GameEngineModel {
def pages
def events
def stateDeclarations
def eventStatements
def GameEngineModel() {
pages = []
events = [:]
stateDeclarations = []
eventStatements = [:]
}
def getStartPage() {
pages[0]
}
def addPage( page ) {
if (!pages.contains(page))
pages << page
}
def addEvent(event) {
events[ "$event" ] = [:]
}
def getEvents() {
events.keySet()
}
def addStateDeclaration(declaration) {
stateDeclarations << declaration
}
def addEventStatement(event, stmnt) {
if (!eventStatements["$event"])
eventStatements["$event"] = []
eventStatements["$event"] << stmnt
}
}
http://www.ebook3000.com