This works fine, but obviously it's messy and I'm thinking there has to be a better way to do this. Having to constantly remember to flip the bool back is a pain, is there anything else I can do here? I take it SpriteKit
itself doesn't have any convenience method for calling something only once for example.
func updateScore() {
// MARK: Increase Difficulty
switch score {
case 0:
if !levelToggle {
showLevelGraphic(1)
levelToggle = true
}
case 1:
levelToggle = false
case 5:
if !lighteningToggle {
GameEffects.lightening(self, masterNode: worldNode, backgroundStringName: "background")
GameEffects.lightening(self, masterNode: worldNode, backgroundStringName: "foreground")
GameEffects.shakeScreen(worldNode)
lighteningToggle = true
}
if !rainToggle {
makeItRain()
rainToggle = true
}
break
case 6:
lighteningToggle = false
case 10:
if !rotateToggle {
GameEffects.rotateScreenAndHold(worldNode, finishAngle: 0.06, totalEffectDuration: 5.0)
rotateToggle = true
}
case 15:
rotateToggle = false
case 16:
if !rotateToggle {
GameEffects.rotateScreenAndHold(worldNode, finishAngle: -0.06, totalEffectDuration: 5.0)
rotateToggle = true
}
break
case 17:
rotateToggle = false
case 20:
stopRaining()
rainToggle = false
case 25:
if !rotateToggle {
GameEffects.rotateScreenAndHold(worldNode, finishAngle: -0.06, totalEffectDuration: 10.0)
rotateToggle = true
}
case 26:
rotateToggle = false
case 45:
break
case 50:
if !levelToggle {
showLevelGraphic(2)
levelToggle = true
}
kGroundSpeed = 200
break
case 55:
if !zoomToggle {
GameEffects.zoomIn(worldNode)
}
case 56:
zoomToggle = false
case 70:
if !rotateToggle {
GameEffects.rotateScreenAndHold(worldNode, finishAngle: 0.06, totalEffectDuration: 10.0)
rotateToggle = true
}