Created
December 2, 2017 09:25
-
-
Save retrokid/358e03564fcf3428310d5943198102bc to your computer and use it in GitHub Desktop.
SAVE OBJECT TO DISC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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 | |
| } | |
| } | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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