def abdicate(self, numTurns=-1, voluntary=False): 'Turn over control to the AI' if (numTurns > 0): self.TurnsToAuto = numTurns if (self.TurnsToAuto < 1): return if (voluntary and self.SHOW_NEW_LEADER_POPUP): popup = PyPopup.PyPopup( RevDefs.abdicatePopup, contextType=EventContextTypes.EVENTCONTEXT_ALL) popup.setHeaderString( localText.getText("TXT_KEY_AIAUTOPLAY_NEW_LEADER", ())) if (voluntary): bodStr = localText.getText("TXT_KEY_AIAUTOPLAY_ABDICATE", ()) else: bodStr = localText.getText("TXT_KEY_AIAUTOPLAY_USURPATOR", ()) bodStr = bodStr + localText.getText("TXT_KEY_AIAUTOPLAY_GOOD_NEWS", ()) % (self.TurnsToAuto) popup.setBodyString(bodStr) popup.launch() else: if (voluntary): SdToolKitAdvanced.sdObjectSetVal("AIAutoPlay", game, "bCanCancelAuto", True) game.setAIAutoPlay(self.TurnsToAuto)
def insertBuildingOrderQueue(self, pCity, iBuildingType): if (not SdToolKitAdvanced.sdObjectExists("CGEAutoInsertQueue", pCity)): return OrderQueue = SdToolKitAdvanced.sdObjectGetVal("CGEAutoInsertQueue", pCity, "InsertQueue") bDelete = False for (iBuilding, iTrigger, bTop) in OrderQueue.copy().values(): if (pCity.getNumBuilding(iBuilding) > 0): del OrderQueue[iBuilding] bDelete = True else: if (iBuildingType == iTrigger): pCity.pushOrder(OrderTypes.ORDER_CONSTRUCT, iBuilding, -1, False, False, not bTop, False) del OrderQueue[iBuilding] bDelete = True elif (pCity.getNumBuilding(iTrigger) > 0): del OrderQueue[iBuilding] bDelete = True if (bDelete): SdToolKitAdvanced.sdObjectSetVal("CGEAutoInsertQueue", pCity, "InsertQueue", OrderQueue)
def reminderLoad(self): if (SdToolKitAdvanced.sdObjectExists("CGEReminder", gc.getGame())): self.reminders = SdToolKitAdvanced.sdObjectGetVal( "CGEReminder", gc.getGame(), "Reminder") else: #SdToolKitAdvanced.sdObjectInit("CGEReminder", gc.getGame(), {"Reminder": []}) self.reminders = []
def storeDataOnPreSave(self): if (len(gOrderList) == 0): return if (not SdToolKitAdvanced.sdObjectExists("CGEUnitPlacement", gc.getGame())): SdToolKitAdvanced.sdObjectInit("CGEUnitPlacement", gc.getGame(), UPData) dData = { "Order": gOrderList, "Sign": gSignDict, "SignID": gID, "FixBug": gOverrideFiraxisBug } SdToolKitAdvanced.sdObjectSetAll("CGEUnitPlacement", gc.getGame(), dData)
def revLoad(object): cyTable = SdToolKitAdvanced.sdLoad(object) if ('Revolution' in cyTable): return cyTable['Revolution'] else: return {}
def loadGame(self): global gOrderList global gSignDict global gID global gOverrideFiraxisBug if (SdToolKitAdvanced.sdObjectExists("CGEUnitPlacement", gc.getGame())): dData = SdToolKitAdvanced.sdObjectGetAll("CGEUnitPlacement", gc.getGame()) gOrderList = dData["Order"] gSignDict = dData["Sign"] gID = dData["SignID"] gOverrideFiraxisBug = dData["FixBug"] else: #SdToolKitAdvanced.sdObjectInit("CGEUnitPlacement", gc.getGame(), UPData) gOrderList = {} gSignDict = {} gID = -100 gOverrideFiraxisBug = {}
def onGameLoad(self, argsList): # Init things which require a game object or other game data to exist if (not SdToolKitAdvanced.sdObjectExists("AIAutoPlay", game)): SdToolKitAdvanced.sdObjectInit("AIAutoPlay", game, {}) SdToolKitAdvanced.sdObjectSetVal("AIAutoPlay", game, "bCanCancelAuto", True) elif (SdToolKitAdvanced.sdObjectGetVal("AIAutoPlay", game, "bCanCancelAuto") == None): SdToolKitAdvanced.sdObjectSetVal("AIAutoPlay", game, "bCanCancelAuto", True)
def onKbdEvent(self, argsList): 'keypress handler' eventType, key, mx, my, px, py = argsList if (eventType == RevDefs.EventKeyDown): theKey = int(key) if (theKey == int(InputTypes.KB_X) and self.customEM.bShift and self.customEM.bCtrl): # Get it? Shift ... control ... to the AI if (game.getAIAutoPlay() > 0): try: bCanCancelAuto = SdToolKitAdvanced.sdObjectGetVal( "AIAutoPlay", game, "bCanCancelAuto") if (bCanCancelAuto is None): bCanCancelAuto = True SdToolKitAdvanced.sdObjectSetVal( "AIAutoPlay", game, "bCanCancelAuto", True) except: print "Error! AIAutoPlay: Can't find bCanCancelAuto, assuming it would be True" bCanCancelAuto = True if (bCanCancelAuto): if (self.refortify): RevUtils.doRefortify(game.getActivePlayer()) game.setAIAutoPlay(0) self.checkPlayer() else: self.toAIChooser() if (theKey == int(InputTypes.KB_M) and self.customEM.bShift and self.customEM.bCtrl): # Toggle auto moves if (self.LOG_DEBUG): CyInterface().addImmediateMessage("Moving your units...", "") #self.playerID = gc.getActivePlayer().getID() game.setAIAutoPlay(1) if (theKey == int(InputTypes.KB_O) and self.customEM.bShift and self.customEM.bCtrl): RevUtils.doRefortify(game.getActivePlayer())
def revObjectSetVal(object, var, val): if (not revObjectExists(object)): if (isinstance(object, CvPythonExtensions.CyPlayer)): print "RevData: Initializing player object" initPlayer(object) elif (isinstance(object, CvPythonExtensions.CyCity)): print "RevData: Initializing city object" initCity(object) else: # SDTK will fail print "ERROR: Not recognized: ", object pass return SdToolKitAdvanced.sdObjectSetVal('Revolution', object, var, val)
def revObjectGetVal(object, var): if (not revObjectExists(object)): if (isinstance(object, CvPythonExtensions.CyPlayer)): print "RevData: Initializing player object" initPlayer(object) elif (isinstance(object, CvPythonExtensions.CyCity)): print "RevData: Initializing city object" initCity(object) else: # SDTK will fail print "ERROR: Not recognized: ", object pass #TODO: remove this once all have been put into data structure defs if (isinstance(object, CvPythonExtensions.CyPlayer) and not var in RevDefs.playerData.keys()): print "WARNING: Unrecognized player variable ", var elif (isinstance(object, CvPythonExtensions.CyCity) and not var in RevDefs.cityData.keys()): print "WARNING: Unrecognized city variable ", var return SdToolKitAdvanced.sdObjectGetVal('Revolution', object, var)
def _reminderStoreData(self): if (not SdToolKitAdvanced.sdObjectExists("CGEReminder", gc.getGame())): SdToolKitAdvanced.sdObjectInit("CGEReminder", gc.getGame(), {"Reminder": []}) SdToolKitAdvanced.sdObjectSetVal("CGEReminder", gc.getGame(), "Reminder", self.reminders)
def reminderLoad(self): if (SdToolKitAdvanced.sdObjectExists("CGEReminder", gc.getGame())): self.reminders = SdToolKitAdvanced.sdObjectGetVal("CGEReminder", gc.getGame(), "Reminder") else: #SdToolKitAdvanced.sdObjectInit("CGEReminder", gc.getGame(), {"Reminder": []}) self.reminders = []
def revObjectChangeVal(object, var, delta): return SdToolKitAdvanced.sdObjectChangeVal('Revolution', object, var, delta)
def abdicateHandler(self, playerID, netUserData, popupReturn): 'Handle abdicate popup' SdToolKitAdvanced.sdObjectSetVal("AIAutoPlay", game, "bCanCancelAuto", True) game.setAIAutoPlay(self.TurnsToAuto)
def revObjectUpdateVal(object, var, val): return SdToolKitAdvanced.sdObjectUpdateVal('Revolution', object, var, val)
def revObjectInit(object, VarDictionary={}): return SdToolKitAdvanced.sdObjectInit('Revolution', object, VarDictionary)
def revObjectExists(object): return SdToolKitAdvanced.sdObjectExists('Revolution', object)
def revObjectWipe(object): return SdToolKitAdvanced.sdObjectWipe('Revolution', object)