def doCast(self, p, h):
     avId = self.air.getAvatarIdFromSender()
     if self.avId != avId:
         self.air.writeServerEvent(
             'suspicious', avId,
             'Toon tried to cast from a pier they\'re not on!')
         return
     av = self.air.doId2do[avId]
     money = av.getMoney()
     cost = FishGlobals.getCastCost(av.getFishingRod())
     if money < cost:
         self.air.writeServerEvent(
             'suspicious', avId,
             'Toon tried to cast without enough jellybeans!')
         return
     if len(av.fishTank) >= av.getMaxFishTank():
         self.air.writeServerEvent(
             'suspicious', avId, 'Toon tried to cast with too many fish!')
         return
     av.takeMoney(cost, False)
     self.d_setMovie(FishGlobals.CastMovie, 0, 0, 0, 0, p, h)
     taskMgr.remove('cancelAnimation%d' % self.doId)
     taskMgr.doMethodLater(2, DistributedFishingSpotAI.cancelAnimation,
                           'cancelAnimation%d' % self.doId, [self])
     taskMgr.remove('timeOut%d' % self.doId)
     taskMgr.doMethodLater(45,
                           DistributedFishingSpotAI.removeFromPierWithAnim,
                           'timeOut%d' % self.doId, [self])
     self.cast = True
 def enterLocalAdjusting(self, guiEvent=None):
     if self.track:
         self.track.pause()
     if self.castTrack:
         self.castTrack.pause()
     self.power = 0.0
     self.firstCast = 0
     self.castButton['image0_color'] = Vec4(0, 1, 0, 1)
     self.castButton['text'] = ''
     self.av.stopLookAround()
     self.__hideLine()
     self.__hideBob()
     self.howToDialog.hide()
     castCost = FishGlobals.getCastCost(self.av.getFishingRod())
     if self.av.getMoney() < castCost:
         self.__hideCastGui()
         self.__showBroke()
         self.av.loop('pole-neutral')
         return
     if self.av.isFishTankFull():
         self.__hideCastGui()
         self.__showFishTankFull()
         self.av.loop('pole-neutral')
         return
     self.arrow.show()
     self.arrow.setColorScale(1, 1, 0, 0.7)
     self.startAngleNP = self.angleNP.getH()
     self.getMouse()
     self.initMouseX = self.mouseX
     self.initMouseY = self.mouseY
     self.__hideBob()
     if config.GetBool('fishing-independent-axes', 0):
         taskMgr.add(self.localAdjustingCastTaskIndAxes,
                     self.taskName('adjustCastTask'))
     else:
         taskMgr.add(self.localAdjustingCastTask,
                     self.taskName('adjustCastTask'))
     if base.wantBingo:
         bingoMgr = self.pond.getPondBingoManager()
         if bingoMgr:
             bingoMgr.castingStarted()
 def doCast(self, p, h):
     avId = self.air.getAvatarIdFromSender()
     if self.avId != avId:
         self.air.writeServerEvent('suspicious', avId, 'Toon tried to cast from a pier they\'re not on!')
         return
     av = self.air.doId2do[avId]
     money = av.getMoney()
     cost = FishGlobals.getCastCost(av.getFishingRod())
     if money < cost:
         self.air.writeServerEvent('suspicious', avId, 'Toon tried to cast without enough jellybeans!')
         return
     if len(av.fishTank) >= av.getMaxFishTank():
         self.air.writeServerEvent('suspicious', avId, 'Toon tried to cast with too many fish!')
         return
     av.takeMoney(cost, False)
     self.d_setMovie(FishGlobals.CastMovie, 0, 0, 0, 0, p, h)
     taskMgr.remove('cancelAnimation%d' % self.doId)
     taskMgr.doMethodLater(2, DistributedFishingSpotAI.cancelAnimation, 'cancelAnimation%d' % self.doId, [self])
     taskMgr.remove('timeOut%d' % self.doId)
     taskMgr.doMethodLater(45, DistributedFishingSpotAI.removeFromPierWithAnim, 'timeOut%d' % self.doId, [self])
     self.cast = True
 def enterLocalCasting(self):
     if self.power == 0.0 and len(self.av.fishCollection) == 0:
         self.__showHowTo(TTLocalizer.FishingHowToFailed)
         if self.castTrack:
             self.castTrack.pause()
         self.av.loop('pole-neutral')
         self.track = None
         return
     castCost = FishGlobals.getCastCost(self.av.getFishingRod())
     self.jar['text'] = str(max(self.av.getMoney() - castCost, 0))
     if not self.castTrack:
         self.createCastTrack()
     self.castTrack.pause()
     startT = 0.7 + (1 - self.power) * 0.3
     self.castTrack.start(startT)
     self.track = Sequence(Wait(1.2 - startT), Func(self.startMoveBobTask), Func(self.__showLineCasting))
     self.track.start()
     heading = self.angleNP.getH()
     self.d_doCast(self.power, heading)
     self.timer.countdown(FishGlobals.CastTimeout)
     return
 def enterLocalAdjusting(self, guiEvent = None):
     if self.track:
         self.track.pause()
     if self.castTrack:
         self.castTrack.pause()
     self.power = 0.0
     self.firstCast = 0
     self.castButton['image0_color'] = Vec4(0, 1, 0, 1)
     self.castButton['text'] = ''
     self.av.stopLookAround()
     self.__hideLine()
     self.__hideBob()
     self.howToDialog.hide()
     castCost = FishGlobals.getCastCost(self.av.getFishingRod())
     if self.av.getMoney() < castCost:
         self.__hideCastGui()
         self.__showBroke()
         self.av.loop('pole-neutral')
         return
     if self.av.isFishTankFull():
         self.__hideCastGui()
         self.__showFishTankFull()
         self.av.loop('pole-neutral')
         return
     self.arrow.show()
     self.arrow.setColorScale(1, 1, 0, 0.7)
     self.startAngleNP = self.angleNP.getH()
     self.getMouse()
     self.initMouseX = self.mouseX
     self.initMouseY = self.mouseY
     self.__hideBob()
     if config.GetBool('fishing-independent-axes', 0):
         taskMgr.add(self.localAdjustingCastTaskIndAxes, self.taskName('adjustCastTask'))
     else:
         taskMgr.add(self.localAdjustingCastTask, self.taskName('adjustCastTask'))
     if base.wantBingo:
         bingoMgr = self.pond.getPondBingoManager()
         if bingoMgr:
             bingoMgr.castingStarted()
 def enterLocalCasting(self):
     if self.power == 0.0 and len(self.av.fishCollection) == 0:
         self.__showHowTo(TTLocalizer.FishingHowToFailed)
         if self.castTrack:
             self.castTrack.pause()
         self.av.loop('pole-neutral')
         self.track = None
         return
     castCost = FishGlobals.getCastCost(self.av.getFishingRod())
     self.jar['text'] = str(max(self.av.getMoney() - castCost, 0))
     if not self.castTrack:
         self.createCastTrack()
     self.castTrack.pause()
     startT = 0.7 + (1 - self.power) * 0.3
     self.castTrack.start(startT)
     self.track = Sequence(Wait(1.2 - startT), Func(self.startMoveBobTask),
                           Func(self.__showLineCasting))
     self.track.start()
     heading = self.angleNP.getH()
     self.d_doCast(self.power, heading)
     self.timer.countdown(FishGlobals.CastTimeout)
     return