예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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)
예제 #5
0
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 = {}
예제 #7
0
    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)
예제 #8
0
    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())
예제 #9
0
	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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
	def _reminderStoreData(self):
		if (not SdToolKitAdvanced.sdObjectExists("CGEReminder", gc.getGame())):
			SdToolKitAdvanced.sdObjectInit("CGEReminder", gc.getGame(), {"Reminder": []})
		SdToolKitAdvanced.sdObjectSetVal("CGEReminder", gc.getGame(), "Reminder", self.reminders)
예제 #13
0
	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 = []
예제 #14
0
def revObjectChangeVal(object, var, delta):

    return SdToolKitAdvanced.sdObjectChangeVal('Revolution', object, var,
                                               delta)
예제 #15
0
 def abdicateHandler(self, playerID, netUserData, popupReturn):
     'Handle abdicate popup'
     SdToolKitAdvanced.sdObjectSetVal("AIAutoPlay", game, "bCanCancelAuto",
                                      True)
     game.setAIAutoPlay(self.TurnsToAuto)
예제 #16
0
def revObjectUpdateVal(object, var, val):

    return SdToolKitAdvanced.sdObjectUpdateVal('Revolution', object, var, val)
예제 #17
0
 def _reminderStoreData(self):
     if (not SdToolKitAdvanced.sdObjectExists("CGEReminder", gc.getGame())):
         SdToolKitAdvanced.sdObjectInit("CGEReminder", gc.getGame(),
                                        {"Reminder": []})
     SdToolKitAdvanced.sdObjectSetVal("CGEReminder", gc.getGame(),
                                      "Reminder", self.reminders)
예제 #18
0
def revObjectInit(object, VarDictionary={}):
    return SdToolKitAdvanced.sdObjectInit('Revolution', object, VarDictionary)
예제 #19
0
def revObjectExists(object):
    return SdToolKitAdvanced.sdObjectExists('Revolution', object)
예제 #20
0
def revObjectWipe(object):
    return SdToolKitAdvanced.sdObjectWipe('Revolution', object)