Skip to content

Instantly share code, notes, and snippets.

@retrokid
Created December 2, 2017 09:25
Show Gist options
  • Select an option

  • Save retrokid/358e03564fcf3428310d5943198102bc to your computer and use it in GitHub Desktop.

Select an option

Save retrokid/358e03564fcf3428310d5943198102bc to your computer and use it in GitHub Desktop.
SAVE OBJECT TO DISC
// Created by efe ertugrul on 21/07/2017.
// Copyright © 2017 efe ertugrul. All rights reserved.
//
import Foundation
import SpriteKit
let DATA_KEY = "key"
class GameData : JSONObject, NSCoding
{
var player : SKSpriteNode?
var mob1 : SKSpriteNode?
var mob2 : SKSpriteNode?
var mob3 : SKSpriteNode?
var mob4 : SKSpriteNode?
var mob5 : SKSpriteNode?
override init()
{
super.init()
}
required init?(coder aDecoder: NSCoder)
{
self.player = aDecoder.decodeObject(forKey: "player") as? SKSpriteNode
self.mob1 = aDecoder.decodeObject(forKey: "mob1") as? SKSpriteNode
self.mob2 = aDecoder.decodeObject(forKey: "mob2") as? SKSpriteNode
self.mob3 = aDecoder.decodeObject(forKey: "mob3") as? SKSpriteNode
self.mob4 = aDecoder.decodeObject(forKey: "mob4") as? SKSpriteNode
self.mob5 = aDecoder.decodeObject(forKey: "mob5") as? SKSpriteNode
}
func encode(with aCoder: NSCoder)
{
aCoder.encode(self.player, forKey: "player")
aCoder.encode(self.mob1, forKey: "mob1")
aCoder.encode(self.mob2, forKey: "mob2")
aCoder.encode(self.mob3, forKey: "mob3")
aCoder.encode(self.mob4, forKey: "mob4")
aCoder.encode(self.mob5, forKey: "mob5")
}
func saveGameData()
{
let prefs = UserDefaults.standard
let myEncodedObject : Data = NSKeyedArchiver.archivedData(withRootObject: self)
prefs.setValue(myEncodedObject, forKey: DATA_KEY)
prefs.synchronize()
}
func removeGameData()
{
let prefs = UserDefaults.standard
prefs.removeObject(forKey: DATA_KEY)
prefs.synchronize()
}
func currentGameData() -> GameData?
{
let prefs = UserDefaults.standard
let myEncodedObject : Data? = prefs.object(forKey: DATA_KEY) as? Data
if myEncodedObject == nil
{
return nil
}
let data : GameData = NSKeyedUnarchiver.unarchiveObject(with: myEncodedObject!) as! GameData
return data
}
public func dictionaryRepresentation() -> [String : Any?]
{
var dictionary = [String : Any?]()
dictionary["player"] = self.player
dictionary["mob1"] = self.mob1
dictionary["mob2"] = self.mob2
dictionary["mob3"] = self.mob3
dictionary["mob4"] = self.mob4
dictionary["mob5"] = self.mob5
return dictionary
}
}
// Created by efe ertugrul on 21/07/2017.
// Copyright © 2017 efe ertugrul. All rights reserved.
//
import Foundation
import SpriteKit
class GameScene : SKScene
{
var player : SKSpriteNode = SKSpriteNode()
var mob1 : SKSpriteNode = SKSpriteNode()
var mob2 : SKSpriteNode = SKSpriteNode()
var mob3 : SKSpriteNode = SKSpriteNode()
var mob4 : SKSpriteNode = SKSpriteNode()
var mob5 : SKSpriteNode = SKSpriteNode()
var gameData : GameData = GameData.init()
override func didMove(to view: SKView)
{
if gameData.currentGameData() == nil
{
let dict = ["player" : player,
"mob1" : mob1,
"mob2" : mob2,
"mob3" : mob3,
"mob4" : mob4,
"mob5" : mob5] as [String : Any]
gameData = GameData.init(withDictionary: dict)
gameData.saveGameData()
}
else
{
gameData = gameData.currentGameData()!
}
print(gameData.dictionaryRepresentation)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment