-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainCamera.swift
More file actions
114 lines (94 loc) · 3.69 KB
/
mainCamera.swift
File metadata and controls
114 lines (94 loc) · 3.69 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
// mainCamera.swift
// project-mars
//
// Created by Aleksandr Grin on 1/12/17.
// Copyright © 2017 AleksandrGrin. All rights reserved.
//
import Foundation
import SpriteKit
class PlayerCamera:SKCameraNode {
var hRange:SKRange!
var vRange:SKRange!
var maxZoom:CGFloat!
var minZoom:CGFloat!
var edgeConstraint:SKConstraint!
var lastScale:CGFloat = 1.5
var overlayHUD:overlayUI!
override init(){
super.init()
//Default values
self.changeZoomRange(max: 1.5, min: 0.5)
self.changeScrollRange(hRange: SKRange(lowerLimit: 0, upperLimit: 750),
vRange: SKRange(lowerLimit: 0, upperLimit: 1334))
self.createZoomConstraints()
self.changeDefaultZoom(zoom: 1.5)
}
convenience init(hRange: SKRange, vRange: SKRange, maxZoom: CGFloat, minZoom: CGFloat){
self.init()
self.changeZoomRange(max: maxZoom, min: minZoom)
self.changeScrollRange(hRange: hRange, vRange: vRange)
self.createZoomConstraints()
self.createScrollConstraints()
self.changeDefaultZoom(zoom: maxZoom)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.hRange = aDecoder.decodeObject(forKey: "hRange") as? SKRange!
self.vRange = aDecoder.decodeObject(forKey: "vRange") as? SKRange!
self.maxZoom = aDecoder.decodeObject(forKey: "maxZoom") as? CGFloat!
self.minZoom = aDecoder.decodeObject(forKey: "minZoom") as? CGFloat!
self.edgeConstraint = aDecoder.decodeObject(forKey: "edge") as? SKConstraint!
self.lastScale = (aDecoder.decodeObject(forKey: "lastScale") as? CGFloat!)!
self.overlayHUD = aDecoder.decodeObject(forKey: "overlayHUD") as? overlayUI!
}
override func encode(with aCoder: NSCoder) {
super.encode(with: aCoder)
aCoder.encode(self.hRange, forKey: "hRange")
aCoder.encode(self.vRange, forKey: "vRange")
aCoder.encode(self.maxZoom, forKey: "maxZoom")
aCoder.encode(self.minZoom, forKey: "minZoom")
aCoder.encode(self.edgeConstraint, forKey: "edge")
aCoder.encode(self.lastScale, forKey: "lastScale")
aCoder.encode(self.overlayHUD, forKey: "overlayHUD")
aCoder.encode(self.position, forKey: "position")
}
func changeScrollRange(hRange: SKRange, vRange: SKRange){
self.hRange = hRange
self.vRange = vRange
//self.createScrollConstraints()
}
func changeZoomRange(max: CGFloat, min: CGFloat){
self.maxZoom = max
self.minZoom = min
}
func changeDefaultZoom(zoom: CGFloat){
self.setScale(zoom)
}
private func createScrollConstraints() -> (){
if self.hRange != nil && self.vRange != nil {
self.edgeConstraint = SKConstraint.positionX(self.hRange, y: self.vRange)
do { self.edgeConstraint.referenceNode = try gameState.sharedInstance().GameBoard.boardMap } catch { print("Error in CreateScrollConstraints") }
self.constraints = [self.edgeConstraint]
}else{
return
}
}
private func createZoomConstraints() -> (){
if self.maxZoom != nil && self.minZoom != nil {
if self.xScale > self.maxZoom {
self.setScale(self.maxZoom)
}
if self.xScale < self.minZoom {
self.setScale(self.minZoom)
}
}else{
print("ERROR in createZoomConstraints")
return
}
}
public func createHUD(size: CGSize){
self.overlayHUD = overlayUI(size: size)
self.addChild(overlayHUD)
}
}