def enterFireCannon(self): DistributedIslandCannon.enterFireCannon(self) self.ammoPanel = AmmoPanel(self) localAvatar.guiMgr.radarGui.hide() localAvatar.guiMgr.hideTrackedQuestInfo() localAvatar.guiMgr.gameGui.hide() localAvatar.guiMgr.crewHUD.setHUDOff()
def delete(self): DistributedIslandCannon.delete(self) if self._DistributedDefenseCannon__shouldUnloadSfx: self.unloadSfx() for task in self.removeShotNumTasks: taskMgr.remove(task.name)
def exitFireCannon(self): if self.av == localAvatar: self.__shouldUnloadSfx = True DistributedIslandCannon.exitFireCannon(self) self.ammoPanel.destroy() render.findAllMatches('**/=objType=%s' % PiratesGlobals.COLL_DEFENSE_AMMO).detach() localAvatar.guiMgr.radarGui.show() localAvatar.guiMgr.showTrackedQuestInfo() localAvatar.guiMgr.gameGui.show() localAvatar.guiMgr.crewHUD.setHUDOn()
def exitFireCannon(self): if self.av == localAvatar: self._DistributedDefenseCannon__shouldUnloadSfx = True DistributedIslandCannon.exitFireCannon(self) self.ammoPanel.destroy() render.findAllMatches('**/=objType=%s' % PiratesGlobals.COLL_DEFENSE_AMMO).detach() localAvatar.guiMgr.radarGui.show() localAvatar.guiMgr.showTrackedQuestInfo() localAvatar.guiMgr.gameGui.show() localAvatar.guiMgr.crewHUD.setHUDOn()
def __init__(self, cr): DistributedIslandCannon.__init__(self, cr) self._DistributedDefenseCannon__shouldUnloadSfx = False self._DistributedDefenseCannon__exitEvent = None self._DistributedDefenseCannon__readyEvent = None self._cameraState = 'CannonDefense' self.isRepeaterCannon = False self.proximityAmmo = {} self.usedShotNums = {} self.lastCannonShot = {} self.shipsHitByShotNum = {} self.removeShotNumTasks = []
def __init__(self, cr): DistributedIslandCannon.__init__(self, cr) self._DistributedDefenseCannon__shouldUnloadSfx = False self._DistributedDefenseCannon__exitEvent = None self._DistributedDefenseCannon__readyEvent = None self._cameraState = 'CannonDefense' self.isRepeaterCannon = False self.proximityAmmo = { } self.usedShotNums = { } self.lastCannonShot = { } self.shipsHitByShotNum = { } self.removeShotNumTasks = []
def _doFireCannon(self): if localAvatar.isDazed: base.playSfx(self.emptySound) return if not self.ammoPanel.hasCurrentAmmo(): return canFire = self.volley > 0 DistributedIslandCannon._doFireCannon(self) if canFire: self.sendUpdate('recordFireEvent') self.lastCannonShot[ self.getAmmoSkillId()] = globalClock.getFrameTime() self.ammoPanel.decreaseAmmoAmount(canFire)
def startWeapon(self, av): DistributedIslandCannon.startWeapon(self, av) if av: av.setPos(self.prop, 0, -6.0, 0) if av == localAvatar: self.repeaterCannon.setLocalAvatarUsingWeapon(1) self.navyCannon.setLocalAvatarUsingWeapon(1) localAvatar.sendCurrentPosition() localAvatar.cameraFSM.cannonDefenseCamera.setRotation(CannonDefenseGlobals.CANNON_HPR[0], CannonDefenseGlobals.CANNON_HPR[1]) if self._DistributedDefenseCannon__readyEvent: self._DistributedDefenseCannon__readyEvent()
def startWeapon(self, av): DistributedIslandCannon.startWeapon(self, av) if av: av.setPos(self.prop, 0, -6.0, 0) if av == localAvatar: self.repeaterCannon.setLocalAvatarUsingWeapon(1) self.navyCannon.setLocalAvatarUsingWeapon(1) localAvatar.sendCurrentPosition() localAvatar.cameraFSM.cannonDefenseCamera.setRotation( CannonDefenseGlobals.CANNON_HPR[0], CannonDefenseGlobals.CANNON_HPR[1]) if self.__readyEvent: self.__readyEvent()
def _doFireCannon(self): if localAvatar.isDazed: base.playSfx(self.emptySound) return None if not self.ammoPanel.hasCurrentAmmo(): return None canFire = self.volley > 0 DistributedIslandCannon._doFireCannon(self) if canFire: self.sendUpdate('recordFireEvent') self.lastCannonShot[self.getAmmoSkillId()] = globalClock.getFrameTime() self.ammoPanel.decreaseAmmoAmount(canFire)
def projectileHitObject(self, entry): DistributedIslandCannon.projectileHitObject(self, entry) if self.localAvatarUsingWeapon: fromNodePath = entry.getFromNodePath() ammo = fromNodePath.getNetPythonTag('ammo') if not ammo: return None ammo.setHitByAmmoEvent(self.uniqueName('proximityAmmoDestroyed')) hitObject = entry.getIntoNodePath() objType = hitObject.getNetTag('objType') if not objType: return None ammoSkillId = int(fromNodePath.getNetTag('ammoSkillId')) shotNum = int(fromNodePath.getNetTag('shotNum')) objType = int(objType) if objType == PiratesGlobals.COLL_DEFENSE_AMMO: hitammo = hitObject.getNetPythonTag('ammo') if not hitammo: return None if ammo.hasTag('noAmmoCollide') or hitammo.hasTag( 'noAmmoCollide'): return None ammo.dispatchHitByAmmoEvent() hitammo.dispatchHitByAmmoEvent() elif (ammoSkillId in [ InventoryType.DefenseCannonMine, InventoryType.DefenseCannonPowderKeg, InventoryType.DefenseCannonColdShot ] or objType == PiratesGlobals.COLL_SEA or ammoSkillId == InventoryType.DefenseCannonSmokePowder ) and objType == PiratesGlobals.COLL_NEWSHIP: if shotNum not in self.proximityAmmo: pos = entry.getSurfacePoint(render) self.sendAddProximityAmmo(shotNum, ammoSkillId, pos, localAvatar.doId) if ammoSkillId in [ InventoryType.DefenseCannonMine, InventoryType.DefenseCannonPowderKeg ]: if objType == PiratesGlobals.COLL_NEWSHIP and shotNum in self.proximityAmmo: ammo.dispatchHitByAmmoEvent( ammoSkillId == InventoryType.DefenseCannonMine)
def projectileHitObject(self, entry): DistributedIslandCannon.projectileHitObject(self, entry) if self.localAvatarUsingWeapon: fromNodePath = entry.getFromNodePath() ammo = fromNodePath.getNetPythonTag('ammo') if not ammo: return None ammo.setHitByAmmoEvent(self.uniqueName('proximityAmmoDestroyed')) hitObject = entry.getIntoNodePath() objType = hitObject.getNetTag('objType') if not objType: return None ammoSkillId = int(fromNodePath.getNetTag('ammoSkillId')) shotNum = int(fromNodePath.getNetTag('shotNum')) objType = int(objType) if objType == PiratesGlobals.COLL_DEFENSE_AMMO: hitammo = hitObject.getNetPythonTag('ammo') if not hitammo: return None if ammo.hasTag('noAmmoCollide') or hitammo.hasTag('noAmmoCollide'): return None ammo.dispatchHitByAmmoEvent() hitammo.dispatchHitByAmmoEvent() elif (ammoSkillId in [ InventoryType.DefenseCannonMine, InventoryType.DefenseCannonPowderKeg, InventoryType.DefenseCannonColdShot] or objType == PiratesGlobals.COLL_SEA or ammoSkillId == InventoryType.DefenseCannonSmokePowder) and objType == PiratesGlobals.COLL_NEWSHIP: if shotNum not in self.proximityAmmo: pos = entry.getSurfacePoint(render) self.sendAddProximityAmmo(shotNum, ammoSkillId, pos, localAvatar.doId) if ammoSkillId in [ InventoryType.DefenseCannonMine, InventoryType.DefenseCannonPowderKeg]: if objType == PiratesGlobals.COLL_NEWSHIP and shotNum in self.proximityAmmo: ammo.dispatchHitByAmmoEvent(ammoSkillId == InventoryType.DefenseCannonMine)
def simpleShipHit(self, hitObject, entry, skillId, ammoSkillId): ship = hitObject.getNetPythonTag('ship') if not ship: return None fromNodePath = entry.getFromNodePath() shotNum = int(fromNodePath.getNetTag('shotNum')) if shotNum not in self.shipsHitByShotNum: self.shipsHitByShotNum[shotNum] = [] self.removeShotNumTasks.append(taskMgr.doMethodLater(5.0, self.removeShotNumTask, self.uniqueName('removeShotNum%s' % shotNum), extraArgs = [ shotNum])) if ship.doId in self.shipsHitByShotNum[shotNum]: return None self.shipsHitByShotNum[shotNum].append(ship.doId) return DistributedIslandCannon.simpleShipHit(self, hitObject, entry, skillId, ammoSkillId)
def simpleShipHit(self, hitObject, entry, skillId, ammoSkillId): ship = hitObject.getNetPythonTag('ship') if not ship: return fromNodePath = entry.getFromNodePath() shotNum = int(fromNodePath.getNetTag('shotNum')) if shotNum not in self.shipsHitByShotNum: self.shipsHitByShotNum[shotNum] = [] self.removeShotNumTasks.append( taskMgr.doMethodLater(5.0, self.removeShotNumTask, self.uniqueName('removeShotNum%s' % shotNum), extraArgs=[shotNum])) if ship.doId in self.shipsHitByShotNum[shotNum]: return self.shipsHitByShotNum[shotNum].append(ship.doId) return DistributedIslandCannon.simpleShipHit(self, hitObject, entry, skillId, ammoSkillId)
def announceGenerate(self): DistributedIslandCannon.announceGenerate(self) self.accept(self.uniqueName('proximityAmmoDestroyed'), self.sendRemoveProximityAmmo) self.d_requestProximityAmmo(base.localAvatar.doId) self.d_requestShotNum(base.localAvatar.doId)
def useProjectileSkill(self, skillId, ammoSkillId, posHpr, timestamp, charge): DistributedIslandCannon.useProjectileSkill(self, skillId, ammoSkillId, posHpr, timestamp, charge) self.shotNum += 1