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 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 delete(self):
     DistributedIslandCannon.delete(self)
     if self._DistributedDefenseCannon__shouldUnloadSfx:
         self.unloadSfx()
     
     for task in self.removeShotNumTasks:
         taskMgr.remove(task.name)
Beispiel #5
0
 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 = []
Beispiel #9
0
 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()
Beispiel #11
0
 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)
Beispiel #16
0
 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
 def useProjectileSkill(self, skillId, ammoSkillId, posHpr, timestamp,
                        charge):
     DistributedIslandCannon.useProjectileSkill(self, skillId, ammoSkillId,
                                                posHpr, timestamp, charge)
     self.shotNum += 1
 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)