def startLavaEruption(self):
     self.stopLavaEruption()
     duration = random.randint(10, 20)
     base.playSfx(self.eruptionSfx[0], node=self, cutoff=5000)
     self.eruption = LavaEruption()
     self.eruption.duration = duration
     self.eruption.setEffectScale(1.0)
     self.eruption.reparentTo(self)
     self.eruption.play()
     if self.inEditor or base.options.getSpecialEffectsSetting(
     ) >= base.options.SpecialEffectsMedium:
         self.cameraShaker = CameraShaker()
         self.cameraShaker.reparentTo(self)
         self.cameraShaker.shakeSpeed = 0.05
         self.cameraShaker.shakePower = 0.2
         self.cameraShaker.scalePower = True
         self.cameraShaker.numShakes = duration * 10
         self.cameraShaker.play(2200.0)
     if self.inEditor or base.options.getSpecialEffectsSetting(
     ) >= base.options.SpecialEffectsHigh:
         self.eruptionSmoke = EruptionSmoke()
         self.eruptionSmoke.duration = duration
         self.eruptionSmoke.reparentTo(self)
         self.eruptionSmoke.setEffectScale(1.0)
         self.eruptionSmoke.play()
         self.splats = LavaSplats()
         self.splats.duration = duration
         self.splats.setEffectScale(1.0)
         self.splats.reparentTo(self)
         self.splats.play()
     taskMgr.doMethodLater(duration + 10.0, self.stopLavaEruption,
                           'stopLavaEruptionTask')
 def startLavaEruption(self):
     self.stopLavaEruption()
     duration = random.randint(10, 20)
     base.playSfx(self.eruptionSfx[0], node = self, cutoff = 5000)
     self.eruption = LavaEruption()
     self.eruption.duration = duration
     self.eruption.setEffectScale(1.0)
     self.eruption.reparentTo(self)
     self.eruption.play()
     if self.inEditor or base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium:
         self.cameraShaker = CameraShaker()
         self.cameraShaker.reparentTo(self)
         self.cameraShaker.shakeSpeed = 0.050000000000000003
         self.cameraShaker.shakePower = 0.20000000000000001
         self.cameraShaker.scalePower = True
         self.cameraShaker.numShakes = duration * 10
         self.cameraShaker.play(2200.0)
     
     if self.inEditor or base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh:
         self.eruptionSmoke = EruptionSmoke()
         self.eruptionSmoke.duration = duration
         self.eruptionSmoke.reparentTo(self)
         self.eruptionSmoke.setEffectScale(1.0)
         self.eruptionSmoke.play()
         self.splats = LavaSplats()
         self.splats.duration = duration
         self.splats.setEffectScale(1.0)
         self.splats.reparentTo(self)
         self.splats.play()
     
     taskMgr.doMethodLater(duration + 10.0, self.stopLavaEruption, 'stopLavaEruptionTask')
class VolcanoEffect(NodePath):
    __module__ = __name__
    eruptionSfx = None

    def __init__(self):
        NodePath.__init__(self, 'VolcanoEffect')
        self.smoke = VolcanoSmoke()
        self.smoke.setEffectScale(1.0)
        self.smoke.reparentTo(self)
        self.eruptionSmoke = None
        self.eruption = None
        self.splats = None
        self.cameraShaker = None
        if not self.eruptionSfx:
            self.eruptionSfx = (loadSfx(SoundGlobals.SFX_FX_VOLCANO_ERUPT), )
        self.inEditor = hasattr(base, 'pe')
        return

    def startLavaEruption(self):
        self.stopLavaEruption()
        duration = random.randint(10, 20)
        base.playSfx(self.eruptionSfx[0], node=self, cutoff=5000)
        self.eruption = LavaEruption()
        self.eruption.duration = duration
        self.eruption.setEffectScale(1.0)
        self.eruption.reparentTo(self)
        self.eruption.play()
        if self.inEditor or base.options.getSpecialEffectsSetting(
        ) >= base.options.SpecialEffectsMedium:
            self.cameraShaker = CameraShaker()
            self.cameraShaker.reparentTo(self)
            self.cameraShaker.shakeSpeed = 0.05
            self.cameraShaker.shakePower = 0.2
            self.cameraShaker.scalePower = True
            self.cameraShaker.numShakes = duration * 10
            self.cameraShaker.play(2200.0)
        if self.inEditor or base.options.getSpecialEffectsSetting(
        ) >= base.options.SpecialEffectsHigh:
            self.eruptionSmoke = EruptionSmoke()
            self.eruptionSmoke.duration = duration
            self.eruptionSmoke.reparentTo(self)
            self.eruptionSmoke.setEffectScale(1.0)
            self.eruptionSmoke.play()
            self.splats = LavaSplats()
            self.splats.duration = duration
            self.splats.setEffectScale(1.0)
            self.splats.reparentTo(self)
            self.splats.play()
        taskMgr.doMethodLater(duration + 10.0, self.stopLavaEruption,
                              'stopLavaEruptionTask')

    def stopLavaEruption(self, task=None):
        if self.eruption:
            self.eruption.destroy()
            self.eruption = None
        if self.splats:
            self.splats.destroy()
            self.splats = None
        if self.eruptionSmoke:
            self.eruptionSmoke.destroy()
            self.eruptionSmoke = None
        return

    def enable(self):
        self.smoke.enableEffect()

    def disable(self):
        self.smoke.disableEffect()

    def destroy(self):
        self.disable()
        taskMgr.remove('stopLavataEruptionTask')
        if self.smoke:
            self.smoke.cleanUpEffect()
            self.smoke = None
        self.stopLavaEruption()
        return
class VolcanoEffect(NodePath):
    eruptionSfx = None
    
    def __init__(self):
        NodePath.__init__(self, 'VolcanoEffect')
        self.smoke = VolcanoSmoke()
        self.smoke.setEffectScale(1.0)
        self.smoke.reparentTo(self)
        self.eruptionSmoke = None
        self.eruption = None
        self.splats = None
        self.cameraShaker = None
        if not self.eruptionSfx:
            self.eruptionSfx = (loadSfx(SoundGlobals.SFX_FX_VOLCANO_ERUPT),)
        
        self.inEditor = hasattr(base, 'pe')

    
    def startLavaEruption(self):
        self.stopLavaEruption()
        duration = random.randint(10, 20)
        base.playSfx(self.eruptionSfx[0], node = self, cutoff = 5000)
        self.eruption = LavaEruption()
        self.eruption.duration = duration
        self.eruption.setEffectScale(1.0)
        self.eruption.reparentTo(self)
        self.eruption.play()
        if self.inEditor or base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium:
            self.cameraShaker = CameraShaker()
            self.cameraShaker.reparentTo(self)
            self.cameraShaker.shakeSpeed = 0.050000000000000003
            self.cameraShaker.shakePower = 0.20000000000000001
            self.cameraShaker.scalePower = True
            self.cameraShaker.numShakes = duration * 10
            self.cameraShaker.play(2200.0)
        
        if self.inEditor or base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh:
            self.eruptionSmoke = EruptionSmoke()
            self.eruptionSmoke.duration = duration
            self.eruptionSmoke.reparentTo(self)
            self.eruptionSmoke.setEffectScale(1.0)
            self.eruptionSmoke.play()
            self.splats = LavaSplats()
            self.splats.duration = duration
            self.splats.setEffectScale(1.0)
            self.splats.reparentTo(self)
            self.splats.play()
        
        taskMgr.doMethodLater(duration + 10.0, self.stopLavaEruption, 'stopLavaEruptionTask')

    
    def stopLavaEruption(self, task = None):
        if self.eruption:
            self.eruption.destroy()
            self.eruption = None
        
        if self.splats:
            self.splats.destroy()
            self.splats = None
        
        if self.eruptionSmoke:
            self.eruptionSmoke.destroy()
            self.eruptionSmoke = None
        

    
    def enable(self):
        self.smoke.enableEffect()

    
    def disable(self):
        self.smoke.disableEffect()

    
    def destroy(self):
        self.disable()
        taskMgr.remove('stopLavataEruptionTask')
        if self.smoke:
            self.smoke.cleanUpEffect()
            self.smoke = None
        
        self.stopLavaEruption()