class CvGameDesc:
"class for serializing game data"
def __init__(self):
self.eraType = "NONE"
self.speedType = "NONE"
self.calendarType = "CALENDAR_DEFAULT"
self.options = ()
self.mpOptions = ()
self.forceControls = ()
self.victories = ()
self.gameTurn = 0
self.maxTurns = 0
self.maxCityElimination = 0
self.numAdvancedStartPoints = 0
self.targetScore = 0
self.iStartYear = -4000
self.szDescription = ""
self.szModPath = ""
self.iRandom = 0
def apply(self):
"after reading, apply the game data"
gc.getGame().setStartYear(self.iStartYear)
def write(self, f):
"write out game data"
f.write("BeginGame\n")
f.write("\tEra=%s\n" %(gc.getEraInfo(gc.getGame().getStartEra()).getType(),))
f.write("\tSpeed=%s\n" %(gc.getGameSpeedInfo(gc.getGame().getGameSpeedType()).getType(),))
f.write("\tCalendar=%s\n" %(gc.getCalendarInfo(gc.getGame().getCalendar()).getType(),))
# write options
for i in range(gc.getNumGameOptionInfos()):
if (gc.getGame().isOption(i)):
f.write("\tOption=%s\n" %(gc.getGameOptionInfo(i).getType()))
# write mp options
for i in range(gc.getNumMPOptionInfos()):
if (gc.getGame().isMPOption(i)):
f.write("\tMPOption=%s\n" %(gc.getMPOptionInfo(i).getType()))
# write force controls
for i in range(gc.getNumForceControlInfos()):
if (gc.getGame().isForcedControl(i)):
f.write("\tForceControl=%s\n" %(gc.getForceControlInfo(i).getType()))
# write victories
for i in range(gc.getNumVictoryInfos()):
if (gc.getGame().isVictoryValid(i)):
if (not gc.getVictoryInfo(i).isPermanent()):
f.write("\tVictory=%s\n" %(gc.getVictoryInfo(i).getType()))
f.write("\tGameTurn=%d\n" %(gc.getGame().getGameTurn(),))
f.write("\tMaxTurns=%d\n" %(gc.getGame().getMaxTurns(),))
f.write("\tMaxCityElimination=%d\n" %(gc.getGame().getMaxCityElimination(),))
f.write("\tNumAdvancedStartPoints=%d\n" %(gc.getGame().getNumAdvancedStartPoints(),))
f.write("\tTargetScore=%d\n" %(gc.getGame().getTargetScore(),))
f.write("\tStartYear=%d\n" %(gc.getGame().getStartYear(),))
f.write("\tDescription=%s\n" % (self.szDescription,))
f.write("\tModPath=%s\n" % (self.szModPath,))
f.write("EndGame\n")
def read(self, f):
"read in game data"
self.__init__()
parser = CvWBParser()
if (parser.findNextTokenValue(f, "BeginGame")!=-1):
while (true):
nextLine = parser.getNextLine(f)
toks = parser.getTokens(nextLine)
if (len(toks)==0):
break
v = parser.findTokenValue(toks, "Era")
if v!=-1:
self.eraType = v
continue
v = parser.findTokenValue(toks, "Speed")
if v!=-1:
self.speedType = v
continue
v = parser.findTokenValue(toks, "Calendar")
if v!=-1:
self.calendarType = v
continue
v = parser.findTokenValue(toks, "Option")
if v!=-1:
self.options = self.options + (v,)
continue
v = parser.findTokenValue(toks, "MPOption")
if v!=-1:
self.mpOptions = self.mpOptions + (v,)
continue
v = parser.findTokenValue(toks, "ForceControl")
if v!=-1:
self.forceControls = self.forceControls + (v,)
continue
v = parser.findTokenValue(toks, "Victory")
if v!=-1:
self.victories = self.victories + (v,)
continue
v = parser.findTokenValue(toks, "GameTurn")
if v!=-1:
self.gameTurn = int(v)
continue
v = parser.findTokenValue(toks, "MaxTurns")
if v!=-1:
self.maxTurns = int(v)
continue
v = parser.findTokenValue(toks, "MaxCityElimination")
if v!=-1:
self.maxCityElimination = int(v)
continue
v = parser.findTokenValue(toks, "NumAdvancedStartPoints")
if v!=-1:
self.numAdvancedStartPoints = int(v)
continue
v = parser.findTokenValue(toks, "TargetScore")
if v!=-1:
self.targetScore = int(v)
continue
v = parser.findTokenValue(toks, "StartYear")
if v!=-1:
self.iStartYear = int(v)
continue
v = parser.findTokenValue(toks, "Description")
if v!=-1:
self.szDescription = v
continue
v = parser.findTokenValue(toks, "ModPath")
if v!=-1:
self.szModPath = v
continue
v = parser.findTokenValue(toks, "Random")
if v!=-1:
self.iRandom = int(v)
continue
if parser.findTokenValue(toks, "EndGame") != -1:
break