def onCombatResult(self, argsList): self.up.aztecUP(argsList) self.rnf.immuneMode(argsList) self.up.vikingUP(argsList) # includes Moorish Corsairs pWinningUnit, pLosingUnit = argsList vic.onCombatResult(pWinningUnit, pLosingUnit) iUnitPower = 0 pLosingUnitInfo = gc.getUnitInfo(pLosingUnit.getUnitType()) if pLosingUnitInfo.getUnitCombatType() != gc.getInfoTypeForString("UNITCOMBAT_SIEGE"): iUnitPower = pLosingUnitInfo.getPowerValue() sta.onCombatResult(pWinningUnit.getOwner(), pLosingUnit.getOwner(), iUnitPower) # catch slaves by defeating native and barbarian Pombos or Impis if pLosingUnit.getOwner() in [iBarbarian, iNative] and pLosingUnit.getUnitType() in [iZuluImpi, iCongolesePombos]: if gc.getMap().plot(pLosingUnit.getX(), pLosingUnit.getY()).getOwner() == pWinningUnit.getOwner(): if gc.getPlayer(pWinningUnit.getOwner()).getCivics(2) == iCivicSlavery: iRand = gc.getGame().getSorenRandNum(5, "Caught slaves?") if iRand == 1: iNewUnit = utils.getUniqueUnitType(pWinningUnit.getOwner(), gc.getUnitInfo(iSlave).getUnitClassType()) utils.makeUnit(iNewUnit, pWinningUnit.getOwner(), (pWinningUnit.getX(), pWinningUnit.getY()), 1) CyInterface().addMessage(pWinningUnit.getOwner(),True,15,CyTranslator().getText("TXT_KEY_UP_ENSLAVE_WIN", ()),'SND_REVOLTEND',1,'Art/Units/slave/button_slave.dds',ColorTypes(8),pWinningUnit.getX(),pWinningUnit.getY(),True,True) # Maya Holkans give food to closest city on victory if pWinningUnit.getUnitType() == iMayanHolkan: iOwner = pWinningUnit.getOwner() city = gc.getMap().findCity(pWinningUnit.getX(), pWinningUnit.getY(), iOwner, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, CyCity()) if city: city.changeFood(5) sAdjective = gc.getPlayer(pLosingUnit.getOwner()).getCivilizationAdjectiveKey() CyInterface().addMessage(iOwner, False, iDuration, CyTranslator().getText("TXT_KEY_MAYA_HOLKAN_EFFECT", (sAdjective, pLosingUnit.getNameKey(), 5, city.getName())), "", 0, "", ColorTypes(iWhite), -1, -1, True, True)
def onGreatPersonBorn(self, argsList): 'Great Person Born' pUnit, iPlayer, pCity = argsList gp.onGreatPersonBorn(pUnit, iPlayer, pCity) vic.onGreatPersonBorn(iPlayer, pUnit) sta.onGreatPersonBorn(iPlayer)
def onGreatPersonBorn(self, argsList): 'Great Person Born' pUnit, iPlayer, pCity = argsList player = PyPlayer(iPlayer) iUnitType = pUnit.getUnitType() iUnitClassType = pUnit.getUnitClassType() sName = pUnit.getName() # Leoreth: replace graphics for female GP names if sName[0] == "f": pUnit.setName(sName[1:]) pUnit = utils.replace(pUnit, con.dFemaleGreatPeople[utils.getBaseUnit(iUnitType)]) # Leoreth: display notification if iPlayer not in [con.iIndependent, con.iIndependent2, con.iBarbarian]: pDisplayCity = pCity if pDisplayCity.isNone(): pDisplayCity = gc.getMap().findCity(pUnit.getX(), pUnit.getY(), PlayerTypes.NO_PLAYER, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, CyCity()) sCity = "%s (%s)" % (pDisplayCity.getName(), gc.getPlayer(pDisplayCity.getOwner()).getCivilizationShortDescription(0)) sMessage = localText.getText("TXT_KEY_MISC_GP_BORN", (pUnit.getName(), sCity)) sUnrevealedMessage = localText.getText("TXT_KEY_MISC_GP_BORN_SOMEWHERE", (pUnit.getName(),)) if pCity.isNone(): sMessage = localText.getText("TXT_KEY_MISC_GP_BORN_OUTSIDE", (pUnit.getName(), sCity)) for iLoopPlayer in range(con.iNumPlayers): if gc.getPlayer(iLoopPlayer).isAlive(): if pUnit.plot().isRevealed(gc.getPlayer(iLoopPlayer).getTeam(), False): CyInterface().addMessage(iLoopPlayer, False, con.iDuration, sMessage, "AS2D_UNIT_GREATPEOPLE", InterfaceMessageTypes.MESSAGE_TYPE_MAJOR_EVENT, pUnit.getButton(), ColorTypes(gc.getInfoTypeForString("COLOR_UNIT_TEXT")), pUnit.getX(), pUnit.getY(), True, True) else: CyInterface().addMessage(iLoopPlayer, False, con.iDuration, sUnrevealedMessage, "AS2D_UNIT_GREATPEOPLE", InterfaceMessageTypes.MESSAGE_TYPE_MAJOR_EVENT, "", ColorTypes(gc.getInfoTypeForString("COLOR_UNIT_TEXT")), -1, -1, False, False) vic.onGreatPersonBorn(iPlayer, pUnit) sta.onGreatPersonBorn(iPlayer)
def onCityRazed(self, argsList): city, iPlayer = argsList dc.onCityRazed(city.getOwner()) self.pla.onCityRazed(city, iPlayer) #Plague vic.onCityRazed(iPlayer, city) sta.onCityRazed(iPlayer, city)
def onPlayerChangeStateReligion(self, argsList): 'Player changes his state religion' iPlayer, iNewReligion, iOldReligion = argsList if iPlayer < iNumPlayers: dc.onPlayerChangeStateReligion(iPlayer, iNewReligion) sta.onPlayerChangeStateReligion(iPlayer)
def onCityRazed(self, argsList): city, iPlayer = argsList self.dc.onCityRazed(argsList) self.pla.onCityRazed(city,iPlayer) #Plague vic.onCityRazed(iPlayer, city) sta.onCityRazed(iPlayer, city)
def onBuildingBuilt(self, argsList): city, iBuildingType = argsList iOwner = city.getOwner() tCity = (city.getX(), city.getY()) vic.onBuildingBuilt(iOwner, iBuildingType) self.rel.onBuildingBuilt(city, iOwner, iBuildingType) if iOwner < iNumPlayers: self.com.onBuildingBuilt(iOwner, iBuildingType, city) if isWorldWonderClass(gc.getBuildingInfo(iBuildingType).getBuildingClassType()): sta.onWonderBuilt(iOwner, iBuildingType) if iBuildingType == iPalace: sta.onPalaceMoved(iOwner) dc.onPalaceMoved(iOwner) if city.isHasRealBuilding(iAdministrativeCenter): city.setHasRealBuilding(iAdministrativeCenter, False) # Leoreth: in case human Phoenicia moves palace to Carthage if iOwner == iCarthage and tCity == (58, 39): utils.setReborn(iCarthage, True) # Leoreth: update trade routes when Porcelain Tower is built to start its effect if iBuildingType == iPorcelainTower: gc.getPlayer(iOwner).updateTradeRoutes() # Leoreth/Voyhkah: Empire State Building if iBuildingType == iEmpireStateBuilding: iPop = city.getPopulation() city.setBuildingCommerceChange(gc.getInfoTypeForString("BUILDINGCLASS_EMPIRE_STATE_BUILDING"), 0, iPop) # Leoreth: Machu Picchu if iBuildingType == iMachuPicchu: iNumPeaks = 0 for i in range(21): if city.getCityIndexPlot(i).isPeak(): iNumPeaks += 1 city.setBuildingCommerceChange(gc.getInfoTypeForString("BUILDINGCLASS_MACHU_PICCHU"), 0, iNumPeaks * 2) # Leoreth: Great Wall if iBuildingType == iGreatWall: for iPlot in range(gc.getMap().numPlots()): plot = gc.getMap().plotByIndex(iPlot) if plot.getOwner() == iOwner and not plot.isWater(): plot.setWithinGreatWall(True) # Leoreth: La Mezquita if iBuildingType == iMezquita: lGPList = [0, 0, 0, 0, 0, 0, 0] for city in utils.getCityList(iOwner): for i in range(7): iSpecialistUnit = utils.getUniqueUnit(iOwner, iGreatProphet + i) lGPList[i] += city.getGreatPeopleUnitProgress(iSpecialistUnit) iGPType = utils.getUniqueUnit(iOwner, iGreatProphet + utils.getHighestIndex(lGPList)) utils.makeUnit(iGPType, iOwner, tCity, 1) CyInterface().addMessage(iOwner, False, iDuration, CyTranslator().getText("TXT_KEY_MEZQUITA_FREE_GP", (gc.getUnitInfo(iGPType).getText(), city.getName())), "", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getUnitInfo(iGPType).getButton(), ColorTypes(iWhite), city.getX(), city.getY(), True, True)
def onReleasedPlayer(self, argsList): iPlayer, iReleasedPlayer = argsList lCities = [] for city in utils.getCityList(iPlayer): if city.plot().isCore(iReleasedPlayer) and not city.plot().isCore(iPlayer) and not city.isCapital(): lCities.append(city) sta.doResurrection(iReleasedPlayer, lCities, False) gc.getPlayer(iReleasedPlayer).AI_changeAttitudeExtra(iPlayer, 2)
def setUp(self): try: self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.stabdl = Stability.StabDL(self.a) self.error = '' self.a.input.back(3) except Exception, e: self.a.log.debug("", "\n Set up")
def setUp(self): try: self.error = '' self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.iozonePath = "../testcases/setup/iozone" self.usbPath = "" self.a.input.back(3) except: self.a.log.debug("", "\n Set up")
def onCityRazed(self, argsList): city, iPlayer = argsList dc.onCityRazed(city.getPreviousOwner()) self.pla.onCityRazed(city, iPlayer) #Plague vic.onCityRazed(iPlayer, city) sta.onCityRazed(iPlayer, city) # Israeli UP if city.isHasReligion(iJudaism): self.up.computeAliyahBonus()
def onReleasedPlayer(self, argsList): iPlayer, iReleasedPlayer = argsList lCities = [] for city in utils.getCityList(iPlayer): if city.plot().isCore(iReleasedPlayer) and not city.plot().isCore( iPlayer) and not city.isCapital(): lCities.append(city) sta.doResurrection(iReleasedPlayer, lCities, False) gc.getPlayer(iReleasedPlayer).AI_changeAttitudeExtra(iPlayer, 2)
def setUp(self): try: self.error = '' self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.path = "/mnt/sdcard/Pictures/Screenshots" self.a.input.back(3) except: self.a.log.debug("", "\n Set up")
def onRevolution(self, argsList): 'Called at the start of a revolution' iPlayer = argsList[0] sta.onRevolution(iPlayer) if iPlayer < iNumPlayers: dc.onRevolution(iPlayer) utils.checkSlaves(iPlayer) cnm.onRevolution(iPlayer)
def onChangeWar(self, argsList): bWar, iTeam, iOtherTeam = argsList sta.onChangeWar(bWar, iTeam, iOtherTeam) self.up.onChangeWar(bWar, iTeam, iOtherTeam) if iTeam < iNumPlayers and iOtherTeam < iNumPlayers: cong.onChangeWar(bWar, iTeam, iOtherTeam) # don't start AIWars if they get involved in natural wars if bWar and iTeam < iNumPlayers and iOtherTeam < iNumPlayers: data.players[iTeam].iAggressionLevel = 0 data.players[iOtherTeam].iAggressionLevel = 0
def onChangeWar(self, argsList): bWar, iTeam, iOtherTeam, bGlobalWar = argsList sta.onChangeWar(bWar, iTeam, iOtherTeam) self.up.onChangeWar(bWar, iTeam, iOtherTeam) if iTeam < con.iNumPlayers and iOtherTeam < con.iNumPlayers: cong.onChangeWar(argsList) # don't start AIWars if they get involved in natural wars if bWar and iTeam < con.iNumPlayers and iOtherTeam < con.iNumPlayers: sd.setAggressionLevel(iTeam, 0) sd.setAggressionLevel(iOtherTeam, 0)
def setUp(self): try : self.error = '' self.downloadTime = 80 self.upgradeTime = 350 self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.a.input.back(3) except : self.a.log.debug("", "\n Set up")
def setUp(self): try: #self.playtime = 1*60*60 # play 'playtime' seconds for each video self.playtime = 2 self.temPlaytime = 2 self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.error = '' self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.a.input.back(3) except Exception, e: self.a.log.debug("", "\n Set up")
def setUp(self): try : self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id= self.setup.device_id self.stabdl=Stability.StabDL(self.a) #self.a.input.down() #self.a.input.center() self.a.input.back(2) except : self.a.log.debug("", "\n Set up")
def onRevolution(self, argsList): 'Called at the start of a revolution' iPlayer = argsList[0] sta.onRevolution(iPlayer) if iPlayer < iNumPlayers: dc.onRevolution(iPlayer) if gc.getPlayer(iPlayer).getCivics(1) == iCivicEgalitarianism: utils.clearSlaves(iPlayer) if iPlayer in [iEgypt]: cnm.onRevolution(iPlayer)
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl = Stability.StabDL(self.a) self.error = '' self.id = self.setup.device_id self.a.input.back(3) for m in self.a.ui.windows(): if "Application Error" in str(m): print m self.a.input.right() time.sleep(1) self.a.input.center() time.sleep(2)
def onRevolution(self, argsList): 'Called at the start of a revolution' iPlayer = argsList[0] sta.onRevolution(iPlayer) if iPlayer < iNumPlayers: self.dc.onRevolution(iPlayer) if gc.getPlayer(iPlayer).getCivics(1) == con.iCivicEgalitarianism: utils.clearSlaves(iPlayer) if iPlayer in [con.iEgypt]: cnm.onRevolution(iPlayer)
def onCombatResult(self, argsList): self.rnf.immuneMode(argsList) self.up.vikingUP(argsList) # includes Moorish Corsairs pWinningUnit, pLosingUnit = argsList iWinningPlayer = pWinningUnit.getOwner() iLosingPlayer = pLosingUnit.getOwner() vic.onCombatResult(pWinningUnit, pLosingUnit) iUnitPower = 0 pLosingUnitInfo = gc.getUnitInfo(pLosingUnit.getUnitType()) if pLosingUnitInfo.getUnitCombatType() != gc.getInfoTypeForString( "UNITCOMBAT_SIEGE"): iUnitPower = pLosingUnitInfo.getPowerValue() sta.onCombatResult(iWinningPlayer, iLosingPlayer, iUnitPower) # capture slaves if iWinningPlayer == iAztecs and not pAztecs.isReborn(): utils.captureUnit(pLosingUnit, pWinningUnit, iAztecSlave, 35) elif iLosingPlayer == iNative: if iWinningPlayer not in lCivBioNewWorld or True in data.lFirstContactConquerors: if gc.getPlayer(iWinningPlayer).isSlavery() or gc.getPlayer( iWinningPlayer).isColonialSlavery(): utils.captureUnit(pLosingUnit, pWinningUnit, iSlave, 35) # Maya Holkans give food to closest city on victory if pWinningUnit.getUnitType() == iHolkan: iOwner = pWinningUnit.getOwner() city = gc.getMap().findCity(pWinningUnit.getX(), pWinningUnit.getY(), iOwner, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, CyCity()) if city: city.changeFood(5) if utils.getHumanID() == pWinningUnit.getOwner(): data.iTeotlSacrifices += 1 sAdjective = gc.getPlayer( pLosingUnit.getOwner()).getCivilizationAdjectiveKey() CyInterface().addMessage( iOwner, False, iDuration, CyTranslator().getText( "TXT_KEY_MAYA_HOLKAN_EFFECT", (sAdjective, pLosingUnit.getNameKey(), 5, city.getName())), "", 0, "", ColorTypes(iWhite), -1, -1, True, True)
def onVassalState(self, argsList): 'Vassal State' iMaster, iVassal, bVassal, bCapitulated = argsList if bCapitulated: sta.onVassalState(iMaster, iVassal) if iVassal == iInca: utils.setReborn(iInca, True) # move Mongolia's core south in case they vassalize China if bCapitulated and iVassal == iChina and iMaster == iMongolia: utils.setReborn(iMongolia, True) dc.onVassalState(iMaster, iVassal)
def onVassalState(self, argsList): 'Vassal State' iMaster, iVassal, bVassal, bCapitulated = argsList if bCapitulated: sta.onVassalState(iMaster, iVassal) if iVassal == con.iInca: gc.getPlayer(con.iInca).setReborn(True) # move Mongolia's core south in case they vassalize China if bCapitulated and iVassal == con.iChina and iMaster == con.iMongolia: gc.getPlayer(con.iMongolia).setReborn(True) self.dc.onVassalState(argsList)
def setUp(self): try : #self.loop = 1 self.play_urls=[] self.error_urls = [] self.error="" self.start_over = 1 self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl=Stability.StabDL(self.a) self.pf=Stability.PlayFiles(self.a, self.playtime) self.a.input.back(3) except Exception, e: self.a.log.debug("", "\n Set up")
def onVassalState(self, argsList): 'Vassal State' iMaster, iVassal, bVassal, bCapitulated = argsList if bCapitulated: sta.onVassalState(iMaster, iVassal) if iVassal == iInca: utils.setReborn(iInca, True) # move Mongolia's core south in case they vassalize China if bCapitulated and iVassal == iChina and iMaster == iMongolia: utils.setReborn(iMongolia, True) dc.onVassalState(iVassal)
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.error = '' self.timeout = 1800 os.system('adb -s %s logcat -c' % self.id)
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.error = '' self.source = {'Tuner': 170, 'VGA': 4401, 'CVBS': 4402, 'HDMI': 4435} self.a.input.back(3)
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.a.input.back(3) self.error = '' self.source = {170: 'Tuner', 4401: 'VGA', 4402: 'CVBS', 269: 'HDMI'}
def testChangeOneTo4k(self): """直播台1切换到4K频道的时间|""" try: self.navigateToLvie() time.sleep(15) self.a.device.sh("input keyevent 8") time.sleep(30) #press 30 channel self.a.device.sh("input keyevent 10") self.a.device.sh("input keyevent 7") time.sleep(30) log_dir = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'logcat_main.%s.1.txt' % self.id) """ log_dir = './liujian/report.20140901_144253/logs/00001/logcat_main.10.58.48.104:5555.1.txt' """ cloud = Stability.cloudStatus(log_dir) result = cloud.playerProgress() during = -1 for i in result: if 'Time' in i: during = i.split(':')[1].strip() self.a.log.debug("", "raise self.failureException('switch 1 to 4k time: %s ms')" %during) if int(during) > 20000: self.error = "switch live 1 to 4k time is more than 20000ms" raise Exception except Exception, e: self.a.log.debug("", "\n testChangeLiveChannel") self.fail("Error happened: %s %s" % (self.error, e))
def testChangeOneTo4k(self): """直播台1切换到4K频道的时间|""" try: self.navigateToLvie() time.sleep(15) self.a.device.sh("input keyevent 8") time.sleep(30) #press 30 channel self.a.device.sh("input keyevent 10") self.a.device.sh("input keyevent 7") time.sleep(30) log_dir = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'logcat_main.%s.1.txt' % self.id) """ log_dir = './liujian/report.20140901_144253/logs/00001/logcat_main.10.58.48.104:5555.1.txt' """ cloud = Stability.cloudStatus(log_dir) result = cloud.playerProgress() during = -1 for i in result: if 'Time' in i: during = i.split(':')[1].strip() self.a.log.debug("", "raise self.failureException('switch 1 to 4k time: %s ms')" %during) print "SHOW:",during if int(during) > 20000: self.error = "switch live 1 to 4k time is more than 20000ms" raise Exception except Exception, e: self.a.log.debug("", "\n testChangeLiveChannel") self.fail("Error happened: %s %s" % (self.error, e))
def setUp(self): try: self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id except Exception, e: self.a.log.debug("", "\n Set up")
def handler(self, log_dir): cloud = Stability.cloudStatus(log_dir) result = cloud.livePlayProgress() #self.a.log.debug("", "raise self.failureException('utp version: %s')" %(cloud.getUtpVersion())) output = [ "频道切换的总时长",\ "用户播放操作 应用获取播放地址",\ "应用获取播放地址 播放器获取播放地址",\ "播放器获取播放地址 播放器请求解析URL(M3U8)",\ "播放器请求解析URL(M3U8) UTP接收播放请求",\ "UTP接收播放请求 UTP请求调度获取下载地址",\ "UTP请求调度获取下载地址 UTP开始下载第一个m3u8",\ "UTP开始下载第一个m3u8 UTP模块解析m3u8分配下载任务",\ "UTP模块解析m3u8分配下载任务 UTP开始下载第一个分片",\ "UTP开始下载第一个分片 UTP下载完成第一个分片",\ "播放器请求解析URL(M3U8) 播放器获取并解析URL(M3U8)完成",\ "播放器获取并解析URL(M3U8)完成 播放器请求第一个ts分段",\ "播放器请求第一个ts分段 开始V/A初始化",\ "开始V/A初始化 完成V/A初始化",\ "完成V/A初始化 播放器Prepared",\ "播放器Prepared 播放器start",\ "播放器start 第一帧显示时间",\ "utp获取镜像IP",\ "UTP第一个分片(下载时长ms, 数据量Byte, 下载速度Bps)",\ ] if len(result) != len(output): self.error = "cannot parser log" raise Exception during = re.search("\((\d+), '(.*)'\)", result[0]).group(2) print "SHOW:",during isError = '' #during = int(result[0].split(":")[1].strip()) for i in range(len(output)): flag, gap = re.search("\((\d+), '(.*)'\)", result[i]).groups() forp = '' if int(flag) == 0: forp = gap + ", 找不到 "+ output[i] isError +="cannot find "+ result[i] + '; ' elif int(flag) == 1: forp = gap + ", 找不到" + output[i].split(' ')[1] isError +="cannot find "+ result[i].split(':')[0].split('->')[1] + '; ' elif int(flag) == 2: forp = gap + ", 找不到" + output[i].split(' ')[0] isError +="cannot find "+ result[i].split(':')[0].split('->')[0] + '; ' else: if re.compile('^\d+$').match(gap): forp = int(gap) else: forp = gap print output[i],":", forp self.a.log.debug("", "raise self.failureException('%s:%s')" %(output[i],forp)) if int(during) > 1800: self.error = "switch time %s ms more then 1800 ms" %during raise Exception elif isError: self.error = isError raise Exception
def handler(self, log_dir): cloud = Stability.cloudStatus(log_dir) result = cloud.livePlayProgress() self.a.log.debug("", "raise self.failureException('utp version: %s')" %(cloud.getUtpVersion())) output = [ "频道切换的总时长",\ "用户播放操作 应用获取播放地址",\ "应用获取播放地址 播放器获取播放地址",\ "播放器获取播放地址 播放器请求解析URL(M3U8)",\ "播放器请求解析URL(M3U8) UTP接收播放请求",\ "UTP接收播放请求 UTP请求调度获取下载地址",\ "UTP请求调度获取下载地址 UTP开始下载第一个m3u8",\ "UTP开始下载第一个m3u8 UTP模块解析m3u8分配下载任务",\ "UTP模块解析m3u8分配下载任务 UTP开始下载第一个分片",\ "UTP开始下载第一个分片 UTP下载完成第一个分片",\ "播放器请求解析URL(M3U8) 播放器获取并解析URL(M3U8)完成",\ "播放器获取并解析URL(M3U8)完成 播放器请求第一个ts分段",\ "播放器请求第一个ts分段 开始V/A初始化",\ "开始V/A初始化 完成V/A初始化",\ "完成V/A初始化 播放器Prepared",\ "播放器Prepared 播放器start",\ "播放器start 第一帧显示时间",\ "utp获取镜像IP",\ "UTP第一个分片(下载时长ms, 数据量Byte, 下载速度Bps)",\ ] if len(result) != len(output): self.error = "cannot parser log" raise Exception during = re.search("\((\d+), '(.*)'\)", result[0]).group(2) print during isError = '' #during = int(result[0].split(":")[1].strip()) for i in range(len(output)): flag, gap = re.search("\((\d+), '(.*)'\)", result[i]).groups() forp = '' if int(flag) == 0: forp = gap + ", 找不到 "+ output[i] isError +="cannot find "+ result[i] + '; ' elif int(flag) == 1: forp = gap + ", 找不到" + output[i].split(' ')[1] isError +="cannot find "+ result[i].split(':')[0].split('->')[1] + '; ' elif int(flag) == 2: forp = gap + ", 找不到" + output[i].split(' ')[0] isError +="cannot find "+ result[i].split(':')[0].split('->')[0] + '; ' else: if re.compile('^\d+$').match(gap): forp = int(gap) else: forp = gap print output[i],":", forp self.a.log.debug("", "raise self.failureException('%s:%s')" %(output[i],forp)) if int(during) > 1800: self.error = "switch time %s ms more then 1800 ms" %during raise Exception elif isError: self.error = isError raise Exception
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.filePath = "../testcases/setup" self.package = "com.lemi.controller.lemigameassistance" self.apk = "LemiGameAssistance_v_1.0.1.21_release.apk" self.error = '' self.a.input.back(3)
def setUp(self): try : self.error = '' self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.stressAppPath = "../testcases/setup/stressapptest" self.usbPath = "" #self.a.input.back(3) #print "serial connection" #self.ser = '' #self.ser = serial.Serial(port='/dev/ttyUSB1', baudrate=115200, timeout=0) #if not self.ser.isOpen(): #self.error = 'cannot open %s' % self.ser.port #raise Exception except : #self.a.log.debug("", "\n Set up") self.fail("Error happened: %s" %self.error)
def onBeginGameTurn(self, argsList): iGameTurn = argsList[0] self.rnf.checkTurn(iGameTurn) self.barb.checkTurn(iGameTurn) self.rel.checkTurn(iGameTurn) self.res.checkTurn(iGameTurn) self.up.checkTurn(iGameTurn) self.aiw.checkTurn(iGameTurn) self.pla.checkTurn(iGameTurn) self.com.checkTurn(iGameTurn) self.corp.checkTurn(iGameTurn) sta.checkTurn(iGameTurn) cong.checkTurn(iGameTurn) if iGameTurn % 10 == 0: self.dc.checkTurn(iGameTurn) return 0
def setUp(self): try: #self.playtime = 1*60*60 # play 'playtime' seconds for each video self.playtime = 2 self.temPlaytime = 2 self.channel_num = 54 self.temPlaytime = 2 self.outloop = 1 self.loop_channel_num = 17 self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.error = '' self.stabdl = Stability.StabDL(self.a) self.id = self.setup.device_id self.a.input.back(3) #self.pullDataLogs() #self.isPlaying() except Exception, e: self.a.log.debug("", "\n Set up")
def __init__(self, eventManager): self.lastRegionID = -1 self.bStabilityOverlay = False self.EventKeyDown = 6 self.EventKeyUp = 7 self.eventManager = eventManager # initialize base class eventManager.addEventHandler("GameStart", self.onGameStart) eventManager.addEventHandler("OnLoad", self.onLoadGame) eventManager.addEventHandler("OnPreSave", self.onPreSave) eventManager.addEventHandler("BeginGameTurn", self.onBeginGameTurn) eventManager.addEventHandler("EndGameTurn", self.onEndGameTurn) eventManager.addEventHandler("BeginPlayerTurn", self.onBeginPlayerTurn) eventManager.addEventHandler("EndPlayerTurn", self.onEndPlayerTurn) eventManager.addEventHandler("firstContact", self.onFirstContact) eventManager.addEventHandler("cityAcquired", self.onCityAcquired) eventManager.addEventHandler("cityAcquiredAndKept", self.onCityAcquiredAndKept) eventManager.addEventHandler("cityRazed", self.onCityRazed) eventManager.addEventHandler("cityBuilt", self.onCityBuilt) eventManager.addEventHandler("combatResult", self.onCombatResult) eventManager.addEventHandler("buildingBuilt", self.onBuildingBuilt) eventManager.addEventHandler("projectBuilt", self.onProjectBuilt) eventManager.addEventHandler("techAcquired", self.onTechAcquired) eventManager.addEventHandler("religionSpread", self.onReligionSpread) eventManager.addEventHandler("unitSpreadReligionAttempt", self.onUnitSpreadReligionAttempt) eventManager.addEventHandler("playerChangeStateReligion", self.onPlayerChangeStateReligion) eventManager.addEventHandler("vassalState", self.onVassalState) eventManager.addEventHandler("changeWar", self.onChangeWar) eventManager.addEventHandler("unitBuilt", self.onUnitBuilt) eventManager.addEventHandler("revolution", self.onRevolution) eventManager.addEventHandler("setPlayerAlive", self.onSetPlayerAlive) eventManager.addEventHandler("greatPersonBorn", self.onGreatPersonBorn) eventManager.addEventHandler("kbdEvent", self.onKbdEvent) self.rnf = RiseAndFall.RiseAndFall() self.cnm = CityNameManager.CityNameManager() self.res = Resources.Resources() self.rel = Religions.Religions() self.barb = Barbs.Barbs() self.aiw = AIWars.AIWars() self.vic = Victory.Victory() self.sta = Stability.Stability() self.pla = Plague.Plague() self.com = Communications.Communications() self.dc = DynamicCivs.DynamicCivs() self.corp = Companies.Companies() self.tit = Titles.Titles()
def setUp(self): try: self.error = "" self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() #self.path = "/mnt/usb/sda1/smoke_MultiMedia" self.path = "/mnt/usb/sda1/three" self.meidaType = None self.results = {} self.a.input.back(3) except Exception, e: self.a.log.debug("", "\n Set up")
def setUp(self): self.setup = Stability.SetupDeviceConnections() self.a = self.setup.initializeTestDevice() self.id = self.setup.device_id self.a.input.back(3) self.error = '' self.source = {170: 'Tuner', 4401: 'VGA', 4402: 'CVBS', 269: 'HDMI'} for m in self.a.ui.windows(): if "Application Error" in str(m): print m self.a.input.right() time.sleep(1) self.a.input.center() time.sleep(2)
def onBeginGameTurn(self, argsList): iGameTurn = argsList[0] self.rnf.checkTurn(iGameTurn) self.barb.checkTurn(iGameTurn) self.rel.checkTurn(iGameTurn) self.res.checkTurn(iGameTurn) self.up.checkTurn(iGameTurn) self.aiw.checkTurn(iGameTurn) self.pla.checkTurn(iGameTurn) self.com.checkTurn(iGameTurn) self.corp.checkTurn(iGameTurn) sta.checkTurn(iGameTurn) cong.checkTurn(iGameTurn) if iGameTurn % 10 == 0: dc.checkTurn(iGameTurn) if utils.getScenario() == i3000BC and iGameTurn == getTurnForYear(600): for iPlayer in range(iVikings): Modifiers.adjustInflationModifier(iPlayer) return 0
def colorCivicTexts(self, iHoverCivic, bHoverOn): screen = self.getScreen() player = gc.getPlayer(self.iActivePlayer) iHoverCategory = gc.getCivicInfo(iHoverCivic).getCivicOptionType() for iCivic in range(iNumCivics): iCategory = gc.getCivicInfo(iCivic).getCivicOptionType() if iCategory == iHoverCategory: continue iX, iY = self.getPosition(iCategory) xPos = iX + self.W_CIVIC_CATEGORY - self.BUTTON_SMALL - self.MARGIN iLine = iY + self.MARGIN + (iCivic % 6) * self.LINE sName = "CivicName" + str(iCivic) sText = gc.getCivicInfo(iCivic).getDescription() iCombovalue = Stability.getCivicCombinationStability(self.iActivePlayer, iHoverCivic, iCivic) bGood = iCombovalue > 0 bBad = iCombovalue < 0 if bHoverOn: if bGood: if player.canDoCivics(iCivic): sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_GREEN')) else: sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_PLAYER_MIDDLE_GREEN')) elif bBad: if player.canDoCivics(iCivic): sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_RED')) else: sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_PLAYER_CANADA_RED')) else: if player.canDoCivics(iCivic): sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('WHITE')) else: sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_LIGHT_GREY')) else: if self.SelectedCivics[iCategory] == iCivic: screen.show("CivicButton" + str(iCivic)) sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_YELLOW')) elif player.canDoCivics(iCivic): screen.show("CivicButton" + str(iCivic)) sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_WHITE')) else: screen.hide("CivicButton" + str(iCivic)) sText = CyTranslator().changeTextColor(sText, gc.getInfoTypeForString('COLOR_LIGHT_GREY')) screen.setText(sName, "", sText, CvUtil.FONT_RIGHT_JUSTIFY, xPos - self.MARGIN, iLine, 0, FontTypes.SMALL_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)
def testVodNoExinfSeek(self): """M3U8无#EXTINF资源|播放正常不能seek""" try: url = 'http://10.154.250.32:8080/live/cloudvideo_robustness/protocol/vod/no_extinf.m3u8' cmd = 'am start -a android.intent.action.VIEW -d \'%s\' -n com.stv.videoplayer/.MainActivity' %url self.a.device.sh(cmd) time.sleep(30) if not self.isNoError(): raise Exception self.a.input.right(10) time.sleep(10) log_dir = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'logcat_main.%s.1.txt' % self.id) cloud = Stability.cloudStatus(log_dir) seekstatus = cloud.checkVodHlsSeekStatus() if seekstatus: self.error = 'seek successfully' raise Exception except Exception,e: self.a.log.debug("", "\n testVodHls480p") self.fail("Error happened: %s %s" % (self.error, e))
def getMemInfo(self): print android.log.report_directory() Stability.takeMeminfo(self.id, android.log.report_directory()).meminfo()
def getMemInfo(self): while True: print android.log.report_directory() Stability.takeMeminfo(self.id, android.log.report_directory()).meminfo() time.sleep(600)
def _testChangeLiveChannel(self): """直播台1切到6的详细时间|""" try: times = 5 self.navigateToLvie() self.a.device.sh("input keyevent 8") time.sleep(20) time.sleep(5) for i in range(times): self.a.device.sh("input keyevent 166") time.sleep(30) log_dir = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'logcat_main.%s.1.txt' % self.id) cloud = Stability.cloudStatus(log_dir) result = cloud.playerProgress() user_press = r'.*Launcher.*:\ T2LauncherActivity\ --\ onKeyDown:\ KeyEvent\ \{\ action=ACTION_DOWN,\ keyCode=KEYCODE_CHANNEL_(UP|DOWN).*' fp = open(log_dir,"r+") fpp = open(os.path.join(android.log.report_directory(), android.log.logs_directory(),'logcat_main_liveswitch.txt'), "a+") first = 0 logcat = fp.readlines() fp.close() for line in logcat: if re.compile(user_press).match(line): first = logcat.index(line) break fpp.writelines(logcat[first:]) fpp.close() """ log_dir = '../Log_Cloud_Daily/liujian/report.20140805_061127/logs/00002/logcat_main.10.58.48.104:5555.1.txt' cloud = Stability.cloudStatus(log_dir) result = cloud.playerProgress() """ good = True total = [] for i in result: if str(i).startswith("Time"): print i total.append(i) self.a.log.debug("", "raise self.failureException('直播频道1-6的切换时间为(ms): %s ')" %str(total) ) i = 0 while i < len(total): if int(total[i].split(":")[1]) > 2000: good = False self.error += "change %s to %s exceed time; "%(i+1,i+2) print "change %s to %s exceed time:"%(i+1,i+2),total[i] self.a.log.debug("", "raise self.failureException('频道%s-%s超时: %s ms')" %(i+1, i+2,total[i])) print if 'ERROR' not in str(result[result.index(total[i])+1]): for j in range(1, 18): print "details:", result[result.index(total[i])+j] self.a.log.debug("", "raise self.failureException('详细时间为: %s ms')" %result[result.index(total[i])+j]) else: print "details: ERROR" self.a.log.debug("", "raise self.failureException('详细时间流程不正确 ')" ) i += 1 summ = 0 for i in total: summ += int(i.split(":")[1]) averg = summ/len(total) print "average time: %s" %averg self.a.log.debug("", "raise self.failureException('平均时间为: %s ms')" %averg) if not good: raise Exception except Exception, e: self.a.log.debug("", "\n testChangeLiveChannel") self.fail("Error happened: %s %s" % (self.error, e))
def testInstallApks(self): """安装外部应用|安装多个外部应用""" try: components = ['am start -a android.intent.action.MAIN -n org.xbmc.xbmc/.Splash', 'am start -a android.intent.action.MAIN -n org.xbmc.xbmc/.Main', 'am start -a android.intent.action.MAIN -n cn.vszone.tv.gamebox/cn.vszone.gamebox.ActivityMain', 'am start -a android.intent.action.MAIN -n com.broadin.nanxingbaojian/.LoadActivity', 'am start -a android.intent.action.MAIN -n com.tv.clean/.HomeAct', 'am start -a android.intent.action.MAIN -n cn.cheerz.ils/cn.cheerz.iptv.MainActivity', 'am start -a android.intent.action.MAIN -n com.tencent.mm/.ui.LauncherUI', 'am start -a android.intent.action.MAIN -n com.audiocn.kalaok.tv/.activity.MainActivity', 'am start -a android.intent.action.MAIN -n com.carrot.iceworld/.CarrotFantasy', 'am start -a android.intent.action.MAIN -n cn.kuwo.sing.tv/.view.activity.EntryActivity', 'am start -a android.intent.action.MAIN -n com.meishi_tv/.StartActivity', 'am start -a android.intent.action.MAIN -n com.moretv.mv/.StartActivity', 'am start -a android.intent.action.MAIN -n com.flappybird/org.cocos2dx.cpp.AppActivity', 'am start -a android.intent.action.MAIN -n android.videoapp225/android.videoapp.VideoApp', 'am start -a android.intent.action.MAIN -n com.broadin.nvxingjiankang/.LoadActivity', 'am start -a android.intent.action.MAIN -n com.kugou.playerHD/.activity.SplashActivity', 'am start -a android.intent.action.MAIN -n com.example.loseweight/.ShowActivity', 'am start -a android.intent.action.MAIN -n com.qiyi.video/.ui.WelcomeActivity', 'am start -a android.intent.action.MAIN -n com.netease.vopen.tablet/.activity.WelcomeActivity', 'am start -a android.intent.action.MAIN -n com.yodo1tier.ski.tv/com.yodo1.sdk.game.Yodo14GameSplashActivity', 'am start -a android.intent.action.MAIN -n android.videoapp195/android.videoapp.VideoApp', 'am start -a android.intent.action.MAIN -n com.lovesport.collection/.ShowActivity', 'am start -a android.intent.action.MAIN -n com.tmsbg.homeshare.box/.SplashActivity', 'am start -a android.intent.action.MAIN -n com.halfbrick.fruitninja/.FruitNinjaActivity', 'am start -a android.intent.action.MAIN -n com.trans.runcool/.GameLauncher', 'am start -a android.intent.action.MAIN -n com.bf.sgs.hdexp/.MainActivity', 'am start -a android.intent.action.MAIN -n com.trans.skee/.GameLauncher'] path = '../testcases/setup/apks' existapps = self.a.device.sh('ls /data/app/') apks = commands.getoutput("ls %s/*.apk" %path).split('\n') Stability.takeMeminfo(self.id, android.log.report_directory()).meminfo() outp = "" for a in apks: cmd = 'adb -s %s install -r %s' %(self.id, a) outp = commands.getoutput(cmd) if "Success" not in outp: self.error = outp print outp for i in components: Stability.takeMeminfo(self.id, android.log.report_directory()).meminfo() self.a.device.sh(i) time.sleep(5) self.a.input.home() time.sleep(3) uninstall = 0 for i in self.a.device.sh("ls /data/app/").split('\r\n'): if i: pkg = i.split('-')[0] cmd = 'pm uninstall %s' %pkg outp = self.a.device.sh(cmd) if 'Success' not in outp: print '%s %s' %(cmd,outp) uninstall += 1 if uninstall != 0: self.error += "uninstall failed" raise Exception except Exception, e : self.a.log.debug("", "\n testInstallApks") self.fail("Error happened: %s %s" % ( self.error, e))
def onBuildingBuilt(self, argsList): city, iBuildingType = argsList iOwner = city.getOwner() vic.onBuildingBuilt(iOwner, iBuildingType) if iOwner < con.iNumPlayers: self.com.onBuildingBuilt(iOwner, iBuildingType, city) if isWorldWonderClass(gc.getBuildingInfo(iBuildingType).getBuildingClassType()): sta.onWonderBuilt(iOwner, iBuildingType) if iBuildingType == con.iPalace: sta.onPalaceMoved(iOwner) if city.isHasRealBuilding(con.iSummerPalace): city.setHasRealBuilding(con.iSummerPalace, False) # Leoreth: Apostolic Palace moves holy city if iBuildingType == con.iApostolicPalace: self.rel.foundOrthodoxy(iOwner) # Leoreth: build shrine in 3000 BC scenario during HRE autoplay to provide a challenge if utils.getScenario() == con.i3000BC and utils.getHumanID() == con.iHolyRome and gc.getGame().getGameTurnYear() < 840: gc.getGame().getHolyCity().setHasRealBuilding(con.iChristianShrine, True) gc.getGame().setHolyCity(con.iChristianity, city, False) # Leoreth: update trade routes when Porcelain Tower is built to start its effect if iBuildingType == con.iPorcelainTower: gc.getPlayer(iOwner).updateTradeRoutes() # Leoreth/Voyhkah: Empire State Building if iBuildingType == con.iEmpireState: iPop = city.getPopulation() city.setBuildingCommerceChange(gc.getInfoTypeForString("BUILDINGCLASS_EMPIRE_STATE"), 0, iPop) # Leoreth: Machu Picchu if iBuildingType == con.iMachuPicchu: iNumPeaks = 0 for i in range(21): if city.getCityIndexPlot(i).isPeak(): iNumPeaks += 1 city.setBuildingCommerceChange(gc.getInfoTypeForString("BUILDINGCLASS_MACHU_PICCHU"), 0, iNumPeaks * 2) # Leoreth: Great Wall if iBuildingType == con.iGreatWall: for iPlot in range(gc.getMap().numPlots()): plot = gc.getMap().plotByIndex(iPlot) if plot.getOwner() == iOwner and not plot.isWater(): plot.setWithinGreatWall(True) # Leoreth: La Mezquita if iBuildingType == con.iMezquita: lGPList = [0, 0, 0, 0, 0, 0, 0] for city in utils.getCityList(iOwner): for i in range(7): iSpecialistUnit = utils.getUniqueUnit(iOwner, con.iProphet + i) lGPList[i] += city.getGreatPeopleUnitProgress(iSpecialistUnit) iGPType = utils.getUniqueUnit(iOwner, con.iProphet + utils.getHighestIndex(lGPList)) utils.makeUnit(iGPType, iOwner, (city.getX(), city.getY()), 1) CyInterface().addMessage(iOwner, False, con.iDuration, CyTranslator().getText("TXT_KEY_MEZQUITA_FREE_GP", (gc.getUnitInfo(iGPType).getText(), city.getName())), "", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getUnitInfo(iGPType).getButton(), ColorTypes(con.iWhite), city.getX(), city.getY(), True, True) # Leoreth: found Buddhism when a Hindu temple is built if iBuildingType == con.iHinduTemple: self.rel.foundBuddhism(city) # Leoreth: in case human Phoenicia moves palace to Carthage if iBuildingType == con.iPalace: if iOwner == con.iCarthage and city.getX() == 58 and city.getY() == 39: if not utils.isReborn(iOwner): gc.getPlayer(con.iCarthage).setReborn(True)
def playAndHandler(self, url, type): self.stabdl.open_intent("Filesystem") time.sleep(5) cmd = "am start -a android.intent.action.VIEW -d \'%s\' -n com.letv.videoplayer/.MainActivity" %url self.a.device.sh(cmd) time.sleep(10) self.operation() self.a.input.back() time.sleep(20) print "start to handle logcat" log_dir = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'logcat_main.%s.1.txt' % self.id) cutlog = os.path.join(android.log.report_directory(), android.log.logs_directory(), 'cutplaylogcat.txt') setdatasource = r'.*MediaPlayerService:\ \[\d+\]\ setDataSource\(%s\)\s*' %url first_frame = r'.*MediaPlayerService.*:\ \[(\d+)\]\ notify\ \(\w+,\ 200,\ 3,\ 0\)' # find start to play fo = open(log_dir, "r+") fld = fo.readlines(); fo.close() setdataindex = len(fld) firstframe = len(fld) for i in fld: if re.compile(setdatasource).match(i): setdataindex = fld.index(i) for j in fld[setdataindex:]: if re.compile(first_frame).match(j): firstframe = fld.index(j) break break fw = open(cutlog,"a+") fw.writelines(fld[setdataindex:]) fw.close() cloud = Stability.cloudStatus(cutlog) playerror = cloud.playerError() duration = cloud.getPlayDuration() resolution = cloud.getResolution() playstatus = cloud.checkVodPlayStatus() seekstatus = "" if type == "hls": seekstatus = cloud.checkVodHlsSeekStatus() elif type =="http": seekstatus = cloud.checkVodHttpSeekStatus() pausestatus = cloud.checkVodPauseStatus() stopstatus = cloud.checkVodStopStatus() self.a.log.debug("", "raise self.failureException('播放视频: %s')" %url) self.a.log.debug("", "raise self.failureException('Mediaplayer Error次数: %s')" %playerror) self.a.log.debug("", "raise self.failureException('Duration: %s')" %duration) self.a.log.debug("", "raise self.failureException('Resolution: %s')" %resolution) self.a.log.debug("", "raise self.failureException('seek 是否成功: %s')" %seekstatus) self.a.log.debug("", "raise self.failureException('pause是否成功: %s')" %pausestatus) self.a.log.debug("", "raise self.failureException('exit是否成功: %s')" %stopstatus) fail = False if playerror !=0: self.error += "player error: %s; " %playerror fail = True elif not seekstatus: fail = True self.error += "seek failed; " elif not pausestatus: fail = True self.error += "pause failed; " elif not stopstatus: fail = True self.error = "stop failed; " if fail: raise Exception
def onCityAcquired(self, argsList): iOwner, iPlayer, city, bConquest, bTrade = argsList tCity = (city.getX(), city.getY()) cnm.onCityAcquired(city, iPlayer) if bConquest: sta.onCityAcquired(city, iOwner, iPlayer) if iPlayer == iArabia: self.up.arabianUP(city) # elif iPlayer == iMughals and utils.getHumanID() != iMughals: # self.up.mughalUP(city) # elif iPlayer == iSeljuks: # self.up.seljukUP(city) if iPlayer == iMongolia and bConquest and utils.getHumanID() != iPlayer: self.up.mongolUP(city) if iPlayer < iNumMajorPlayers: utils.spreadMajorCulture(iPlayer, tCity) # relocate capitals if utils.getHumanID() != iPlayer: if iPlayer == iTurkey and tCity == (68, 45): utils.moveCapital(iTurkey, tCity) # Kostantiniyye elif iPlayer == iMongolia and tCity == (102, 47): utils.moveCapital(iMongolia, tCity) # Khanbaliq # remove slaves if unable to practice slavery if gc.getPlayer(iPlayer).getCivics(1) == iCivicEgalitarianism: utils.removeSlaves(city) else: utils.freeSlaves(city, iPlayer) # kill Seljuks #if iOwner == iSeljuks and gc.getPlayer(iSeljuks).isAlive() and gc.getGame().getGameTurnYear() >= 1250: # if city.isCapital() or gc.getPlayer(iSeljuks).getNumCities() <= 2: # sta.completeCollapse(iSeljuks) #utils.killAndFragmentCiv(iSeljuks, iIndependent, iIndependent2, -1, False) # Leoreth: relocate capital for AI if reacquired: if utils.getHumanID() != iPlayer and iPlayer < iNumPlayers: if data.players[iPlayer].iResurrections == 0: if Areas.getCapital(iPlayer) == tCity: utils.relocateCapital(iPlayer, city) else: if Areas.getRespawnCapital(iPlayer) == tCity: utils.relocateCapital(iPlayer, city) # Leoreth: conquering Constantinople adds it to the Turkish core + Rumelia if iPlayer == iTurkey and tCity == (68, 45): utils.setReborn(iTurkey, True) # Leoreth: help Byzantium/Constantinople if iPlayer == iByzantium and tCity == Areas.getCapital(iByzantium) and gc.getGame().getGameTurn() <= getTurnForYear(330)+3: if city.getPopulation() < 5: city.setPopulation(5) city.setHasRealBuilding(iBarracks, True) city.setHasRealBuilding(iWalls, True) city.setHasRealBuilding(iLibrary, True) city.setHasRealBuilding(iMarket, True) city.setHasRealBuilding(iGranary, True) city.setHasRealBuilding(iHarbor, True) city.setHasRealBuilding(iForge, True) city.setName("Konstantinoupolis", False) city.setHasRealBuilding(iTemple + 4*gc.getPlayer(iPlayer).getStateReligion(), True) if bConquest: # Colombian UP: no resistance in conquered cities in Latin America if iPlayer == iMaya and utils.isReborn(iMaya): if utils.isPlotInArea(tCity, tSouthCentralAmericaTL, tSouthCentralAmericaBR): city.setOccupationTimer(0) # Statue of Zeus effect: no city resistance on conquest if gc.getPlayer(iPlayer).countNumBuildings(iStatueOfZeus) > 0 and not gc.getTeam(iPlayer).isHasTech(iTheology): city.setOccupationTimer(0) # Byzantium reduced to four cities: core shrinks to Constantinople if iOwner == iByzantium and gc.getPlayer(iByzantium).getNumCities <= 4: utils.setReborn(iByzantium, True) if bTrade: for i in range(iNumBuildings): iNationalWonder = i if isNationalWonderClass(gc.getBuildingInfo(iNationalWonder).getBuildingClassType()) and city.hasBuilding(iNationalWonder): city.setHasRealBuilding(iNationalWonder, False) self.pla.onCityAcquired(iOwner, iPlayer, city) # Plague self.com.onCityAcquired(city) # Communications self.corp.onCityAcquired(argsList) # Companies dc.onCityAcquired(iOwner, iPlayer) # DynamicCivs vic.onCityAcquired(iPlayer, iOwner, city, bConquest) return 0
def onTechAcquired(self, argsList): iTech, iTeam, iPlayer, bAnnounce = argsList iHuman = utils.getHumanID() iEra = gc.getTechInfo(iTech).getEra() if utils.getScenario() == i600AD and gc.getGame().getGameTurn() == getTurnForYear(600): #late start condition return if utils.getScenario() == i1700AD and gc.getGame().getGameTurn() == getTurnForYear(1700): return sta.onTechAcquired(iPlayer, iTech) AIParameters.onTechAcquired(iPlayer, iTech) if gc.getGame().getGameTurn() > getTurnForYear(tBirth[iPlayer]): vic.onTechAcquired(iPlayer, iTech) cnm.onTechAcquired(argsList[2]) if gc.getPlayer(iPlayer).isAlive() and gc.getGame().getGameTurn() > getTurnForYear(tBirth[iPlayer]) and iPlayer < iNumPlayers: self.rel.onTechAcquired(argsList[0], argsList[2]) if (gc.getGame().getGameTurn() > getTurnForYear(1700)): self.aiw.forgetMemory(argsList[0], argsList[2]) if iTech == iAstronomy: if iPlayer in [iSpain, iFrance, iEngland, iGermany, iVikings, iNetherlands, iPortugal]: data.players[iPlayer].iAstronomyTurn = gc.getGame().getGameTurn() elif iTech == iCompass: if iPlayer == iVikings: gc.getMap().plot(49, 62).setTerrainType(iCoast, True, True) elif iTech == iMedicine: self.pla.onTechAcquired(argsList[0], argsList[2]) elif iTech == iRailroad: self.rnf.onRailroadDiscovered(argsList[2]) if iTech in [iAstronomy, iGunpowder]: teamPlayer = gc.getTeam(iPlayer) if teamPlayer.isHasTech(iAstronomy) and teamPlayer.isHasTech(iGunpowder): self.rnf.earlyTradingCompany(iPlayer) if iTech in [iEconomics, iRifling]: teamPlayer = gc.getTeam(iPlayer) if teamPlayer.isHasTech(iEconomics) and teamPlayer.isHasTech(iRifling): self.rnf.lateTradingCompany(iPlayer) if utils.getHumanID() != iPlayer: if iPlayer == iJapan and iEra == iIndustrial: utils.moveCapital(iPlayer, (116, 47)) # Toukyou elif iPlayer == iItaly and iEra == iIndustrial: utils.moveCapital(iPlayer, (60, 44)) # Roma elif iPlayer == iVikings and iEra == iRenaissance: utils.moveCapital(iPlayer, (63, 59)) # Stockholm elif iPlayer == iHolyRome and iEra == iRenaissance: utils.moveCapital(iPlayer, (62, 49)) # Wien # Spain's core extends when reaching the Renaissance and there are no Moors in Iberia # at the same time, the Moorish core relocates to Africa if iPlayer == iSpain and iEra == iRenaissance and not utils.isReborn(iSpain): bNoMoors = True if gc.getPlayer(iMoors).isAlive(): for city in utils.getCityList(iMoors): if city.plot().getRegionID() == rIberia: bNoMoors = False if bNoMoors: utils.setReborn(iSpain, True) utils.setReborn(iMoors, True) # Italy's core extends when reaching the Industrial era if iPlayer == iItaly and iEra == iIndustrial: utils.setReborn(iItaly, True) # Arabia's core moves to Iraq when Philosophy is discovered if iPlayer == iArabia and iTech == iPhilosophy: utils.setReborn(iArabia, True) # Japan's core extends when reaching the Industrial era if iPlayer == iJapan and iEra == iIndustrial: utils.setReborn(iJapan, True) # Germany's core shrinks when reaching the Modern era if iPlayer == iGermany and iEra == iModern: utils.setReborn(iGermany, True)
def onGoldenAge(self, argsList): iPlayer = argsList[0] sta.onGoldenAge(iPlayer)
def onEndPlayerTurn(self, argsList): iGameTurn, iPlayer = argsList self.rnf.endTurn(iPlayer) sta.endTurn(iPlayer)