Приключение/Приключение Shared/Sprites/Warrior.swift

/*
  Copyright (C) 2014 Apple Inc. All Rights Reserved.
  See LICENSE.txt for this sample’s licensing information
  
  Abstract:
  
        Defines the warrior hero class
      
*/
 
 
import SpriteKit
 
var sSharedProjectile = SKSpriteNode()
var sSharedProjectileEmitter = SKEmitterNode()
let kProjectileCollisionRadius: CGFloat = 15.0
 
var kLoadSharedWarriorAssetsOnceToken: dispatch_once_t = 0
 
class Warrior: HeroCharacter {
    // MARK: Initializers
 
    convenience init(atPosition position: CGPoint, withPlayer player: Player) {
        let atlas = SKTextureAtlas(named: "Warrior_Idle")
        let texture = atlas.textureNamed("warrior_idle_0001.png")
 
        self.init(atPosition:position, withTexture: texture, player:player)
    }
 
    // MARK: Setup
 
    override func projectile() -> SKSpriteNode {
        return sSharedProjectile
    }
 
    override func projectileEmitter() -> SKEmitterNode {
        return sSharedProjectileEmitter
    }
 
    // MARK: Asset Pre-loading
    
    class func loadSharedAssets() {
        dispatch_once(&kLoadSharedWarriorAssetsOnceToken) {
            let atlas = SKTextureAtlas(named: "Environment")
 
            self.idleAnimationFrames = loadFramesFromAtlasWithName("Warrior_Idle")
            self.walkAnimationFrames = loadFramesFromAtlasWithName("Warrior_Walk")
            self.attackAnimationFrames = loadFramesFromAtlasWithName("Warrior_Attack")
            self.getHitAnimationFrames = loadFramesFromAtlasWithName("Warrior_GetHit")
            self.deathAnimationFrames = loadFramesFromAtlasWithName("Warrior_Death")
 
            sSharedProjectile = SKSpriteNode(texture: atlas.textureNamed("warrior_throw_hammer.png"))
            sSharedProjectile.name = "Projectile"
            
            // Assign the physics body; unwrap the physics body to configure it.
            sSharedProjectile.physicsBody = SKPhysicsBody(circleOfRadius: kProjectileCollisionRadius)
            sSharedProjectile.physicsBody!.categoryBitMask = ColliderType.Projectile.rawValue
            sSharedProjectile.physicsBody!.collisionBitMask = ColliderType.Wall.rawValue
            sSharedProjectile.physicsBody!.contactTestBitMask = sSharedProjectile.physicsBody!.collisionBitMask
 
            sSharedProjectileEmitter = NSKeyedUnarchiver.unarchiveObjectWithFile(NSBundle.mainBundle().pathForResource("WarriorProjectile", ofType: "sks")!) as SKEmitterNode
        }
    }
}