-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFileHandler.swift
More file actions
57 lines (42 loc) · 2.16 KB
/
FileHandler.swift
File metadata and controls
57 lines (42 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//
// FileHandler.swift
// Slide the Box
//
// Created by Alex Morgan on 04/01/2017.
// Copyright © 2017 Alex Morgan. All rights reserved.
//
import Foundation
class FileHandler {
init() {
}
func toJSON(level: Level) -> String {
let savedLevel = SavedLevel(numBlocksX: level.numBlocksX, numBlocksY: level.numBlocksY, numBlockBlocks: level.getNumBlockBlocks(), numNumberBlocks: level.getNumNumberBlocks(), numArrowBlocks: level.getNumArrowBlocks(), startPosition: level.getStartPosition(), endPosition: level.getEndPosition(), enemyPositions: level.getEnemyPositions(), blocksReal: level.getBlocksReal())
return savedLevel.toJSON()!
}
func fromJSON(jsonString: String) -> Level {
let level = Level()
let data = jsonString.data(using: .utf8)!
if let parsedData = try? JSONSerialization.jsonObject(with: data) as? [String:Any] {
let numBlocksX = parsedData["numBlocksX"] as! Int
let numBlocksY = parsedData["numBlocksY"] as! Int
let numBlockBlocks = parsedData["numBlockBlocks"] as! Int
let numNumberBlocks = parsedData["numNumberBlocks"] as! Int
let numArrowBlocks = parsedData["numArrowBlocks"] as! Int
let startPosition = parsedData["startPosition"] as! Array<Int>
let endPosition = parsedData["endPosition"] as! Array<Int>
let enemyPositions = parsedData["enemyPositions"] as! Array<Array<Int>>
let blocksReal = parsedData["blocksReal"] as! Array<Array<Int>>
let level = Level(numBlocksX: numBlocksX, numBlocksY: numBlocksY)
level.numBlockBlocks = numBlockBlocks
level.numNumberBlocks = numNumberBlocks
level.numBlockBlocks = numBlockBlocks
level.numNumberBlocks = numNumberBlocks
level.numArrowBlocks = numArrowBlocks
level.startPosition = startPosition
level.endPosition = endPosition
level.enemyPositions = enemyPositions
level.blocksReal = blocksReal
}
return level
}
}