Merge branch '33-basisownership-anhand-des-gkplayers' into 'development'
Resolve "Basisownership anhand des GKPlayers" Closes #33 See merge request marcel.schwarz/software-projekt-2!54
This commit is contained in:
commit
3f73a6f64d
@ -10,24 +10,24 @@ import GameplayKit
|
|||||||
|
|
||||||
class AtkBoostSkillComponent: GKComponent{
|
class AtkBoostSkillComponent: GKComponent{
|
||||||
|
|
||||||
let shapeNode: SKShapeNode
|
let shapeNode: SKShapeNode
|
||||||
let labelNode: SKLabelNode
|
let labelNode: SKLabelNode
|
||||||
|
|
||||||
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
||||||
self.labelNode = SKLabelNode(text: text)
|
self.labelNode = SKLabelNode(text: text)
|
||||||
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
||||||
self.shapeNode.position = anchorPoint
|
self.shapeNode.position = anchorPoint
|
||||||
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
||||||
if texture != nil {
|
if texture != nil {
|
||||||
shapeNode.fillTexture = texture
|
shapeNode.fillTexture = texture
|
||||||
}else {
|
}else {
|
||||||
shapeNode.fillColor = SKColor.gray
|
shapeNode.fillColor = SKColor.gray
|
||||||
}
|
}
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class BackgroundComponent: GKComponent{
|
|||||||
nodes.append(sky)
|
nodes.append(sky)
|
||||||
}
|
}
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
func update(){
|
func update(){
|
||||||
for node in nodes{
|
for node in nodes{
|
||||||
|
@ -10,25 +10,25 @@ import SpriteKit
|
|||||||
|
|
||||||
class BaseNode: SKSpriteNode{
|
class BaseNode: SKSpriteNode{
|
||||||
|
|
||||||
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
// TODO: PopUp Einheiten + Close PopUp
|
// TODO: PopUp Einheiten + Close PopUp
|
||||||
self.run(
|
self.run(
|
||||||
SKAction.sequence(
|
SKAction.sequence(
|
||||||
[
|
[
|
||||||
SKAction.resize(byWidth: 20, height: 20, duration: 0.5),
|
SKAction.resize(byWidth: 20, height: 20, duration: 0.5),
|
||||||
SKAction.resize(byWidth: -20, height: -20, duration: 0.5)
|
SKAction.resize(byWidth: -20, height: -20, duration: 0.5)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
// TODO: zeige Angirff Effect
|
// TODO: zeige Angirff Effect
|
||||||
}
|
}
|
||||||
|
|
||||||
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
// TODO: Open Slider PopUp
|
// TODO: Open Slider PopUp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class ButtonNode: SKSpriteNode {
|
|||||||
} else {
|
} else {
|
||||||
self.alpha = 0.3
|
self.alpha = 0.3
|
||||||
self.childNode(withName: "label")?.alpha = 0.3
|
self.childNode(withName: "label")?.alpha = 0.3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,26 +50,26 @@ class ButtonNode: SKSpriteNode {
|
|||||||
}
|
}
|
||||||
self.addChild(label)
|
self.addChild(label)
|
||||||
isUserInteractionEnabled = true
|
isUserInteractionEnabled = true
|
||||||
}
|
|
||||||
|
|
||||||
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
|
||||||
if isEnabled {
|
|
||||||
let action = SKAction.sequence(
|
|
||||||
[
|
|
||||||
SKAction.scale(by: (3/4), duration: 0.3),
|
|
||||||
SKAction.scale(by: (4/3), duration: 0.3),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
self.childNode(withName: "label")?.run(action)
|
|
||||||
self.run(action)
|
|
||||||
onButtonPress()
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
|
if isEnabled {
|
||||||
|
let action = SKAction.sequence(
|
||||||
|
[
|
||||||
|
SKAction.scale(by: (3/4), duration: 0.3),
|
||||||
|
SKAction.scale(by: (4/3), duration: 0.3),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.childNode(withName: "label")?.run(action)
|
||||||
|
self.run(action)
|
||||||
|
onButtonPress()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,24 +10,24 @@ import GameplayKit
|
|||||||
|
|
||||||
class DefBoostSkillComponent: GKComponent{
|
class DefBoostSkillComponent: GKComponent{
|
||||||
|
|
||||||
let shapeNode: SKShapeNode
|
let shapeNode: SKShapeNode
|
||||||
let labelNode: SKLabelNode
|
let labelNode: SKLabelNode
|
||||||
|
|
||||||
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
||||||
self.labelNode = SKLabelNode(text: text)
|
self.labelNode = SKLabelNode(text: text)
|
||||||
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
||||||
self.shapeNode.position = anchorPoint
|
self.shapeNode.position = anchorPoint
|
||||||
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
||||||
if texture != nil {
|
if texture != nil {
|
||||||
shapeNode.fillTexture = texture
|
shapeNode.fillTexture = texture
|
||||||
}else {
|
}else {
|
||||||
shapeNode.fillColor = SKColor.gray
|
shapeNode.fillColor = SKColor.gray
|
||||||
}
|
}
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,15 +10,15 @@ import GameplayKit
|
|||||||
import SpriteKit
|
import SpriteKit
|
||||||
|
|
||||||
class DefaultBaseComponent: GKComponent {
|
class DefaultBaseComponent: GKComponent {
|
||||||
var spriteNode: BaseNode
|
var spriteNode: BaseNode
|
||||||
|
|
||||||
init(texture: SKTexture, position: CGPoint) {
|
init(texture: SKTexture, position: CGPoint) {
|
||||||
spriteNode = BaseNode(texture: texture, size: CGSize(width: 80, height: 80))
|
spriteNode = BaseNode(texture: texture, size: CGSize(width: 80, height: 80))
|
||||||
spriteNode.position = position
|
spriteNode.position = position
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,17 +10,17 @@ import GameplayKit
|
|||||||
import SpriteKit
|
import SpriteKit
|
||||||
|
|
||||||
class ModalBackgroundComponent: GKComponent {
|
class ModalBackgroundComponent: GKComponent {
|
||||||
let spriteNode: SKSpriteNode
|
let spriteNode: SKSpriteNode
|
||||||
|
|
||||||
init(anchorPoint: CGPoint) {
|
init(anchorPoint: CGPoint) {
|
||||||
let texture = SKTexture(imageNamed:"ModalBackground")
|
let texture = SKTexture(imageNamed:"ModalBackground")
|
||||||
spriteNode = SKSpriteNode(texture: texture, size: texture.size())
|
spriteNode = SKSpriteNode(texture: texture, size: texture.size())
|
||||||
spriteNode.setScale(2)
|
spriteNode.setScale(2)
|
||||||
spriteNode.position = anchorPoint
|
spriteNode.position = anchorPoint
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,32 +11,32 @@ import SpriteKit
|
|||||||
|
|
||||||
class ModalContentComponent: GKComponent{
|
class ModalContentComponent: GKComponent{
|
||||||
|
|
||||||
var header: SKLabelNode
|
var header: SKLabelNode
|
||||||
var body: SKLabelNode
|
var body: SKLabelNode
|
||||||
var footer: SKLabelNode
|
var footer: SKLabelNode
|
||||||
|
|
||||||
init(header: String, body: String, footer: String , anchorPoint: CGPoint) {
|
init(header: String, body: String, footer: String , anchorPoint: CGPoint) {
|
||||||
self.header = SKLabelNode(text: header)
|
self.header = SKLabelNode(text: header)
|
||||||
self.header.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y + 125)
|
self.header.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y + 125)
|
||||||
self.header.fontName = "HelveticaNeue-Bold"
|
self.header.fontName = "HelveticaNeue-Bold"
|
||||||
self.header.fontSize = 40
|
self.header.fontSize = 40
|
||||||
|
|
||||||
self.body = SKLabelNode(text: body)
|
self.body = SKLabelNode(text: body)
|
||||||
self.body.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 20)
|
self.body.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 20)
|
||||||
self.body.numberOfLines = 2
|
self.body.numberOfLines = 2
|
||||||
self.body.preferredMaxLayoutWidth = 390
|
self.body.preferredMaxLayoutWidth = 390
|
||||||
self.body.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center
|
self.body.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center
|
||||||
self.body.fontName = "HelveticaNeue-Bold"
|
self.body.fontName = "HelveticaNeue-Bold"
|
||||||
self.body.fontSize = 40
|
self.body.fontSize = 40
|
||||||
|
|
||||||
self.footer = SKLabelNode(text: footer)
|
self.footer = SKLabelNode(text: footer)
|
||||||
self.footer.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 40)
|
self.footer.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 40)
|
||||||
self.footer.fontName = "HelveticaNeue-Bold"
|
self.footer.fontName = "HelveticaNeue-Bold"
|
||||||
self.footer.fontSize = 40
|
self.footer.fontSize = 40
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,14 @@ import GameplayKit
|
|||||||
|
|
||||||
class SliderComponent: GKComponent {
|
class SliderComponent: GKComponent {
|
||||||
|
|
||||||
var sliderNode: SliderNode
|
var sliderNode: SliderNode
|
||||||
|
|
||||||
init(width: CGFloat, position: CGPoint) {
|
init(width: CGFloat, position: CGPoint) {
|
||||||
sliderNode = SliderNode(width: width, position: position)
|
sliderNode = SliderNode(width: width, position: position)
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,56 +11,56 @@ import SpriteKit
|
|||||||
|
|
||||||
class SliderNode :SKNode {
|
class SliderNode :SKNode {
|
||||||
|
|
||||||
var sliderLine :SKShapeNode
|
var sliderLine :SKShapeNode
|
||||||
var sliderKnob :SliderKnob
|
var sliderKnob :SliderKnob
|
||||||
var width: CGFloat
|
var width: CGFloat
|
||||||
|
|
||||||
var getValue: CGFloat{
|
var getValue: CGFloat{
|
||||||
get{
|
get{
|
||||||
return ((sliderKnob.position.x.rounded() - sliderKnob.min) / width)
|
return ((sliderKnob.position.x.rounded() - sliderKnob.min) / width)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init(width: CGFloat, position: CGPoint) {
|
init(width: CGFloat, position: CGPoint) {
|
||||||
self.width = width
|
self.width = width
|
||||||
sliderLine = SKShapeNode(rectOf: CGSize(width: width, height: 8))
|
sliderLine = SKShapeNode(rectOf: CGSize(width: width, height: 8))
|
||||||
sliderLine.position = position
|
sliderLine.position = position
|
||||||
sliderLine.fillColor = SKColor.white
|
sliderLine.fillColor = SKColor.white
|
||||||
sliderKnob = SliderKnob(circleOfRadius: 20)
|
sliderKnob = SliderKnob(circleOfRadius: 20)
|
||||||
sliderKnob.min = position.x - width / 2
|
sliderKnob.min = position.x - width / 2
|
||||||
sliderKnob.max = position.x + width / 2
|
sliderKnob.max = position.x + width / 2
|
||||||
sliderKnob.fillColor = SKColor.red
|
sliderKnob.fillColor = SKColor.red
|
||||||
sliderKnob.zPosition = sliderLine.zPosition + 1
|
sliderKnob.zPosition = sliderLine.zPosition + 1
|
||||||
sliderKnob.position = CGPoint(x: sliderLine.position.x, y: sliderLine.position.y + 1)
|
sliderKnob.position = CGPoint(x: sliderLine.position.x, y: sliderLine.position.y + 1)
|
||||||
super.init()
|
super.init()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SliderKnob: SKShapeNode {
|
class SliderKnob: SKShapeNode {
|
||||||
var min = CGFloat()
|
var min = CGFloat()
|
||||||
var max = CGFloat()
|
var max = CGFloat()
|
||||||
|
|
||||||
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
|
|
||||||
for touch in touches {
|
for touch in touches {
|
||||||
let touchLocation = touch.location(in: self.scene!)
|
let touchLocation = touch.location(in: self.scene!)
|
||||||
|
|
||||||
if self.position.x >= min - 1 && self.position.x <= max + 1{
|
if self.position.x >= min - 1 && self.position.x <= max + 1{
|
||||||
self.position.x = touchLocation.x
|
self.position.x = touchLocation.x
|
||||||
}
|
}
|
||||||
|
|
||||||
if(self.position.x <= min){
|
if(self.position.x <= min){
|
||||||
self.position.x = min
|
self.position.x = min
|
||||||
}
|
}
|
||||||
if(self.position.x >= max){
|
if(self.position.x >= max){
|
||||||
self.position.x = max
|
self.position.x = max
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,25 +10,25 @@ import GameplayKit
|
|||||||
|
|
||||||
class SpySkillComponent: GKComponent{
|
class SpySkillComponent: GKComponent{
|
||||||
|
|
||||||
let shapeNode: SKShapeNode
|
let shapeNode: SKShapeNode
|
||||||
let labelNode: SKLabelNode
|
let labelNode: SKLabelNode
|
||||||
|
|
||||||
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
init(text: String, texture: SKTexture?, anchorPoint: CGPoint) {
|
||||||
self.labelNode = SKLabelNode(text: text)
|
self.labelNode = SKLabelNode(text: text)
|
||||||
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
self.shapeNode = SKShapeNode(circleOfRadius: 30)
|
||||||
self.shapeNode.position = anchorPoint
|
self.shapeNode.position = anchorPoint
|
||||||
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
||||||
if texture != nil {
|
if texture != nil {
|
||||||
shapeNode.fillTexture = texture
|
shapeNode.fillTexture = texture
|
||||||
}else {
|
}else {
|
||||||
shapeNode.fillColor = SKColor.gray
|
shapeNode.fillColor = SKColor.gray
|
||||||
}
|
}
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,22 +11,22 @@ import GameplayKit
|
|||||||
|
|
||||||
class TeamComponent: GKComponent {
|
class TeamComponent: GKComponent {
|
||||||
let team: Team
|
let team: Team
|
||||||
let fire: SKEmitterNode
|
let fire: SKEmitterNode
|
||||||
|
|
||||||
init(team: Team, position: CGPoint) {
|
init(team: Team, position: CGPoint) {
|
||||||
fire = SKEmitterNode(fileNamed: "Fire")!
|
fire = SKEmitterNode(fileNamed: "Fire")!
|
||||||
fire.zPosition = -1
|
fire.zPosition = -1
|
||||||
fire.position = position
|
fire.position = position
|
||||||
fire.name = "fire"
|
fire.name = "fire"
|
||||||
fire.particleColorSequence = nil
|
fire.particleColorSequence = nil
|
||||||
fire.particleColorBlendFactor = 1.0
|
fire.particleColorBlendFactor = 1.0
|
||||||
|
|
||||||
switch team {
|
switch team {
|
||||||
case .team1: fire.particleColor = SKColor.red
|
case .team1: fire.particleColor = SKColor.red
|
||||||
case .team2: fire.particleColor = SKColor.purple
|
case .team2: fire.particleColor = SKColor.purple
|
||||||
case .team3: fire.particleColor = SKColor.green
|
case .team3: fire.particleColor = SKColor.green
|
||||||
case .team4: fire.particleColor = SKColor.gray
|
case .team4: fire.particleColor = SKColor.gray
|
||||||
}
|
}
|
||||||
|
|
||||||
self.team = team
|
self.team = team
|
||||||
super.init()
|
super.init()
|
||||||
|
@ -14,7 +14,7 @@ class TimerComponent: GKComponent {
|
|||||||
var endTime :Date!
|
var endTime :Date!
|
||||||
var duration :Double
|
var duration :Double
|
||||||
|
|
||||||
init(text: String, anchorPoint: CGPoint, duration: TimeInterval) {
|
init(text: String, anchorPoint: CGPoint, duration: TimeInterval) {
|
||||||
self.labelNode = SKLabelNode(text: text)
|
self.labelNode = SKLabelNode(text: text)
|
||||||
self.labelNode.fontColor = UIColor.black
|
self.labelNode.fontColor = UIColor.black
|
||||||
self.labelNode.fontSize = CGFloat(45)
|
self.labelNode.fontSize = CGFloat(45)
|
||||||
|
@ -16,7 +16,7 @@ class Background: GKEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func update(deltaTime seconds: TimeInterval) {
|
override func update(deltaTime seconds: TimeInterval) {
|
||||||
component(ofType: BackgroundComponent.self)?.update()
|
component(ofType: BackgroundComponent.self)?.update()
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
|
@ -8,17 +8,20 @@
|
|||||||
|
|
||||||
import SpriteKit
|
import SpriteKit
|
||||||
import GameplayKit
|
import GameplayKit
|
||||||
|
import GameKit
|
||||||
|
|
||||||
class Base: GKEntity {
|
class Base: GKEntity {
|
||||||
|
|
||||||
var unitCount: Int
|
var unitCount: Int
|
||||||
var adjacencyList: Array<Base>
|
var adjacencyList: Array<Base>
|
||||||
var changeOwnerShip: Bool
|
var changeOwnerShip: Bool
|
||||||
|
var ownerShipPlayer: GKPlayer?
|
||||||
|
|
||||||
init(position: CGPoint, team: Team! = nil) {
|
init(position: CGPoint, player: GKPlayer? = nil, team: Team? = nil) {
|
||||||
self.unitCount = 0
|
self.unitCount = 0
|
||||||
self.adjacencyList = [Base]()
|
self.adjacencyList = [Base]()
|
||||||
self.changeOwnerShip = false
|
self.changeOwnerShip = false
|
||||||
|
self.ownerShipPlayer = player
|
||||||
super.init()
|
super.init()
|
||||||
|
|
||||||
addComponent(DefaultBaseComponent(texture: SKTexture(imageNamed: "Base"), position: position))
|
addComponent(DefaultBaseComponent(texture: SKTexture(imageNamed: "Base"), position: position))
|
||||||
@ -28,12 +31,13 @@ class Base: GKEntity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func attackBase(base: Base, units:Int) -> [GKEntity]{
|
func attackBase(base: Base, units:Int) -> [GKEntity]{
|
||||||
base.changeOwnerShip = true
|
base.changeOwnerShip = true
|
||||||
self.unitCount -= units
|
base.ownerShipPlayer = self.ownerShipPlayer
|
||||||
base.unitCount += units
|
self.unitCount -= units
|
||||||
return [self, base]
|
base.unitCount += units
|
||||||
}
|
return [self, base]
|
||||||
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
@ -13,42 +13,42 @@ class EntityManager {
|
|||||||
|
|
||||||
var entities = Set<GKEntity>()
|
var entities = Set<GKEntity>()
|
||||||
let scene: SKScene
|
let scene: SKScene
|
||||||
var isModal: Bool
|
var isModal: Bool
|
||||||
|
|
||||||
init(scene: SKScene) {
|
init(scene: SKScene) {
|
||||||
self.scene = scene
|
self.scene = scene
|
||||||
isModal = false
|
isModal = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func add(_ entity: GKEntity) {
|
func add(_ entity: GKEntity) {
|
||||||
entities.insert(entity)
|
entities.insert(entity)
|
||||||
if let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
if let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
||||||
scene.addChild(spriteNode)
|
scene.addChild(spriteNode)
|
||||||
}
|
}
|
||||||
if let fire = entity.component(ofType: TeamComponent.self)?.fire{
|
if let fire = entity.component(ofType: TeamComponent.self)?.fire{
|
||||||
scene.addChild(fire)
|
scene.addChild(fire)
|
||||||
}
|
}
|
||||||
if let spriteNode = entity.component(ofType: ModalBackgroundComponent.self)?.spriteNode {
|
if let spriteNode = entity.component(ofType: ModalBackgroundComponent.self)?.spriteNode {
|
||||||
scene.addChild(spriteNode)
|
scene.addChild(spriteNode)
|
||||||
isModal = true
|
isModal = true
|
||||||
}
|
}
|
||||||
if let modal = entity.component(ofType: ModalContentComponent.self) {
|
if let modal = entity.component(ofType: ModalContentComponent.self) {
|
||||||
scene.addChild(modal.header)
|
scene.addChild(modal.header)
|
||||||
scene.addChild(modal.body)
|
scene.addChild(modal.body)
|
||||||
scene.addChild(modal.footer)
|
scene.addChild(modal.footer)
|
||||||
}
|
}
|
||||||
if let skill = entity.component(ofType: AtkBoostSkillComponent.self) {
|
if let skill = entity.component(ofType: AtkBoostSkillComponent.self) {
|
||||||
scene.addChild(skill.shapeNode)
|
scene.addChild(skill.shapeNode)
|
||||||
scene.addChild(skill.labelNode)
|
scene.addChild(skill.labelNode)
|
||||||
}
|
}
|
||||||
if let skill = entity.component(ofType: DefBoostSkillComponent.self) {
|
if let skill = entity.component(ofType: DefBoostSkillComponent.self) {
|
||||||
scene.addChild(skill.shapeNode)
|
scene.addChild(skill.shapeNode)
|
||||||
scene.addChild(skill.labelNode)
|
scene.addChild(skill.labelNode)
|
||||||
}
|
}
|
||||||
if let skill = entity.component(ofType: SpySkillComponent.self) {
|
if let skill = entity.component(ofType: SpySkillComponent.self) {
|
||||||
scene.addChild(skill.shapeNode)
|
scene.addChild(skill.shapeNode)
|
||||||
scene.addChild(skill.labelNode)
|
scene.addChild(skill.labelNode)
|
||||||
}
|
}
|
||||||
if let timer = entity.component(ofType: TimerComponent.self) {
|
if let timer = entity.component(ofType: TimerComponent.self) {
|
||||||
scene.addChild(timer.labelNode)
|
scene.addChild(timer.labelNode)
|
||||||
}
|
}
|
||||||
@ -60,81 +60,81 @@ class EntityManager {
|
|||||||
scene.addChild(node)
|
scene.addChild(node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let sliderNode = entity.component(ofType: SliderComponent.self)?.sliderNode {
|
if let sliderNode = entity.component(ofType: SliderComponent.self)?.sliderNode {
|
||||||
scene.addChild(sliderNode.sliderKnob)
|
scene.addChild(sliderNode.sliderKnob)
|
||||||
scene.addChild(sliderNode.sliderLine)
|
scene.addChild(sliderNode.sliderLine)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func remove(_ entity: GKEntity) {
|
func remove(_ entity: GKEntity) {
|
||||||
if let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
if let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
||||||
spriteNode.removeFromParent()
|
spriteNode.removeFromParent()
|
||||||
}
|
}
|
||||||
if let spriteNode = entity.component(ofType: ModalBackgroundComponent.self)?.spriteNode {
|
if let spriteNode = entity.component(ofType: ModalBackgroundComponent.self)?.spriteNode {
|
||||||
spriteNode.removeFromParent()
|
spriteNode.removeFromParent()
|
||||||
isModal = false
|
isModal = false
|
||||||
}
|
}
|
||||||
if let modal = entity.component(ofType: ModalContentComponent.self) {
|
if let modal = entity.component(ofType: ModalContentComponent.self) {
|
||||||
modal.header.removeFromParent()
|
modal.header.removeFromParent()
|
||||||
modal.body.removeFromParent()
|
modal.body.removeFromParent()
|
||||||
modal.footer.removeFromParent()
|
modal.footer.removeFromParent()
|
||||||
}
|
}
|
||||||
if let sliderNode = entity.component(ofType: SliderComponent.self)?.sliderNode {
|
if let sliderNode = entity.component(ofType: SliderComponent.self)?.sliderNode {
|
||||||
sliderNode.sliderKnob.removeFromParent()
|
sliderNode.sliderKnob.removeFromParent()
|
||||||
sliderNode.sliderLine.removeFromParent()
|
sliderNode.sliderLine.removeFromParent()
|
||||||
}
|
}
|
||||||
entities.remove(entity)
|
entities.remove(entity)
|
||||||
}
|
}
|
||||||
|
|
||||||
func update(_ entities: [GKEntity]){
|
func update(_ entities: [GKEntity]){
|
||||||
for entity in entities {
|
for entity in entities {
|
||||||
self.entities.update(with: entity)
|
self.entities.update(with: entity)
|
||||||
let base = (entity as! Base)
|
let base = (entity as! Base)
|
||||||
|
|
||||||
if base.changeOwnerShip {
|
if base.changeOwnerShip {
|
||||||
base.addComponent(TeamComponent(team: (entities[0] as! Base).component(ofType: TeamComponent.self)!.team, position: (base.component(ofType: DefaultBaseComponent.self)?.spriteNode.position)!))
|
base.addComponent(TeamComponent(team: (entities[0] as! Base).component(ofType: TeamComponent.self)!.team, position: (base.component(ofType: DefaultBaseComponent.self)?.spriteNode.position)!))
|
||||||
base.changeOwnerShip = false
|
base.changeOwnerShip = false
|
||||||
scene.addChild(base.component(ofType: TeamComponent.self)!.fire)
|
scene.addChild(base.component(ofType: TeamComponent.self)!.fire)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
func getBaseByTeam(for team: Team) -> GKEntity? {
|
func getBaseByTeam(for team: Team) -> GKEntity? {
|
||||||
for entity in entities {
|
for entity in entities {
|
||||||
if let teamComponent = entity.component(ofType: TeamComponent.self),
|
if let teamComponent = entity.component(ofType: TeamComponent.self),
|
||||||
let _ = entity.component(ofType: DefaultBaseComponent.self) {
|
let _ = entity.component(ofType: DefaultBaseComponent.self) {
|
||||||
if teamComponent.team == team {
|
if teamComponent.team == team {
|
||||||
return entity
|
return entity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBasesByTeam(for team: Team) -> Set<Base> {
|
func getBasesByTeam(for team: Team) -> Set<Base> {
|
||||||
return entities.filter{$0 is Base && ($0 as! Base).component(ofType: TeamComponent.self)?.team == team } as! Set<Base>
|
return entities.filter{$0 is Base && ($0 as! Base).component(ofType: TeamComponent.self)?.team == team } as! Set<Base>
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTeamByBase(base: Base) -> Team? {
|
func getTeamByBase(base: Base) -> Team? {
|
||||||
for entity in entities {
|
for entity in entities {
|
||||||
if entity is Base && entity == base{
|
if entity is Base && entity == base{
|
||||||
for component in entity.components{
|
for component in entity.components{
|
||||||
if component is TeamComponent {
|
if component is TeamComponent {
|
||||||
return entity.component(ofType: TeamComponent.self)!.team
|
return entity.component(ofType: TeamComponent.self)!.team
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBackground() -> GKEntity? {
|
func getBackground() -> GKEntity? {
|
||||||
return entities.filter{$0 is Background}[0]
|
return entities.filter{$0 is Background}[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBaseNodeByTeam(for team: Team) -> SKSpriteNode? {
|
func getBaseNodeByTeam(for team: Team) -> SKSpriteNode? {
|
||||||
return getBaseByTeam(for: team)?.component(ofType: DefaultBaseComponent.self)?.spriteNode
|
return getBaseByTeam(for: team)?.component(ofType: DefaultBaseComponent.self)?.spriteNode
|
||||||
}
|
}
|
||||||
|
|
||||||
func getButtonByName(buttonName:String) -> Button {
|
func getButtonByName(buttonName:String) -> Button {
|
||||||
return entities.filter{$0 is Button && ($0 as! Button).name == buttonName }[0] as! Button
|
return entities.filter{$0 is Button && ($0 as! Button).name == buttonName }[0] as! Button
|
||||||
|
@ -10,28 +10,28 @@ import GameplayKit
|
|||||||
|
|
||||||
class HUD: GKEntity {
|
class HUD: GKEntity {
|
||||||
|
|
||||||
init(size: CGSize) {
|
init(size: CGSize) {
|
||||||
super.init()
|
super.init()
|
||||||
addComponent(SpySkillComponent(text: "Spy",
|
addComponent(SpySkillComponent(text: "Spy",
|
||||||
texture: nil,
|
texture: nil,
|
||||||
anchorPoint: CGPoint(x: size.width * 0.75, y: size.height * 0.1)))
|
anchorPoint: CGPoint(x: size.width * 0.75, y: size.height * 0.1)))
|
||||||
|
|
||||||
|
|
||||||
addComponent(AtkBoostSkillComponent(text: "Atk",
|
addComponent(AtkBoostSkillComponent(text: "Atk",
|
||||||
texture: nil,
|
texture: nil,
|
||||||
anchorPoint: CGPoint(x: size.width * 0.85, y: size.height * 0.1)))
|
anchorPoint: CGPoint(x: size.width * 0.85, y: size.height * 0.1)))
|
||||||
|
|
||||||
|
|
||||||
addComponent(DefBoostSkillComponent(text: "Def",
|
addComponent(DefBoostSkillComponent(text: "Def",
|
||||||
texture: nil,
|
texture: nil,
|
||||||
anchorPoint: CGPoint(x: size.width * 0.95, y: size.height * 0.1)))
|
anchorPoint: CGPoint(x: size.width * 0.95, y: size.height * 0.1)))
|
||||||
|
|
||||||
addComponent(TimerComponent(text: "",
|
addComponent(TimerComponent(text: "",
|
||||||
anchorPoint: CGPoint(x: size.width * 0.5, y: size.height * 0.9), duration: 30))
|
anchorPoint: CGPoint(x: size.width * 0.5, y: size.height * 0.9), duration: 30))
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,30 +10,40 @@ import GameplayKit
|
|||||||
|
|
||||||
class Modal: GKEntity{
|
class Modal: GKEntity{
|
||||||
|
|
||||||
var unitCount:Int
|
var unitCount:Int
|
||||||
|
|
||||||
init(modaltype: ModalType, base: Base, anchorPoint: CGPoint) {
|
init(modaltype: ModalType, base: Base, anchorPoint: CGPoint) {
|
||||||
unitCount = base.unitCount
|
unitCount = base.unitCount
|
||||||
super.init()
|
super.init()
|
||||||
switch modaltype{
|
switch modaltype{
|
||||||
case .BaseDetails:
|
case .BaseDetails:
|
||||||
addComponent(ModalBackgroundComponent(anchorPoint: anchorPoint))
|
addComponent(ModalBackgroundComponent(anchorPoint: anchorPoint))
|
||||||
addComponent(ModalContentComponent(header: "Basis Information",
|
addComponent(ModalContentComponent(
|
||||||
body: "Diese Basis enthält \(base.unitCount) Einheiten",
|
header: "Basis Information",
|
||||||
footer: "",
|
body: "Diese Basis enthält \(base.unitCount) Einheiten",
|
||||||
anchorPoint: anchorPoint))
|
footer: "",
|
||||||
case .BaseAttack:
|
anchorPoint: anchorPoint
|
||||||
addComponent(ModalBackgroundComponent(anchorPoint: anchorPoint))
|
)
|
||||||
addComponent(SliderComponent(width: 300, position: CGPoint(x: anchorPoint.x , y: anchorPoint.y - 80)))
|
)
|
||||||
addComponent(ModalContentComponent(header: "Angriff",
|
case .BaseAttack:
|
||||||
body: "Schicke \(unitCount / 2) Einheiten",
|
addComponent(ModalBackgroundComponent(anchorPoint: anchorPoint))
|
||||||
footer: "",
|
addComponent(SliderComponent(
|
||||||
anchorPoint: anchorPoint))
|
width: 300,
|
||||||
}
|
position: CGPoint(x: anchorPoint.x , y: anchorPoint.y - 80)
|
||||||
}
|
)
|
||||||
|
)
|
||||||
|
addComponent(ModalContentComponent(
|
||||||
|
header: "Angriff",
|
||||||
|
body: "Schicke \(unitCount / 2) Einheiten",
|
||||||
|
footer: "",
|
||||||
|
anchorPoint: anchorPoint
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
enum ModalType: String{
|
enum ModalType: String{
|
||||||
case BaseDetails
|
case BaseDetails
|
||||||
case BaseAttack
|
case BaseAttack
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ final class GameCenterHelper: NSObject {
|
|||||||
var viewController: UIViewController?
|
var viewController: UIViewController?
|
||||||
|
|
||||||
static var isAuthenticated: Bool {
|
static var isAuthenticated: Bool {
|
||||||
return GKLocalPlayer.local.isAuthenticated
|
return GKLocalPlayer.local.isAuthenticated
|
||||||
}
|
}
|
||||||
|
|
||||||
override init() {
|
override init() {
|
||||||
@ -24,7 +24,7 @@ final class GameCenterHelper: NSObject {
|
|||||||
|
|
||||||
GKLocalPlayer.local.authenticateHandler = { gcAuthVC, error in
|
GKLocalPlayer.local.authenticateHandler = { gcAuthVC, error in
|
||||||
NotificationCenter.default
|
NotificationCenter.default
|
||||||
.post(name: .authenticationChanged, object: GKLocalPlayer.local.isAuthenticated)
|
.post(name: .authenticationChanged, object: GKLocalPlayer.local.isAuthenticated)
|
||||||
|
|
||||||
if GKLocalPlayer.local.isAuthenticated {
|
if GKLocalPlayer.local.isAuthenticated {
|
||||||
print("Authenticated to Game Center!")
|
print("Authenticated to Game Center!")
|
||||||
|
@ -23,9 +23,9 @@ class GameViewController: UIViewController {
|
|||||||
view.showsFPS = true
|
view.showsFPS = true
|
||||||
view.showsNodeCount = true
|
view.showsNodeCount = true
|
||||||
|
|
||||||
GameCenterHelper.helper.viewController = self
|
GameCenterHelper.helper.viewController = self
|
||||||
MatchmakingHelper.sharedInstance.viewController = self
|
MatchmakingHelper.sharedInstance.viewController = self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override var shouldAutorotate: Bool {
|
override var shouldAutorotate: Bool {
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
import SpriteKit
|
import SpriteKit
|
||||||
|
import GameKit
|
||||||
|
|
||||||
class TwoPlayerDefaultTestMap: MapProtocol {
|
class TwoPlayerDefaultTestMap: MapProtocol {
|
||||||
|
|
||||||
@ -24,6 +25,8 @@ class TwoPlayerDefaultTestMap: MapProtocol {
|
|||||||
// Create Bases
|
// Create Bases
|
||||||
let basePlayerOne = Base(
|
let basePlayerOne = Base(
|
||||||
position: CGPoint(x: self.size.width * 0.1, y: self.size.height / 2),
|
position: CGPoint(x: self.size.width * 0.1, y: self.size.height / 2),
|
||||||
|
// ToDo: not final version. Better would be something like MatchmakingHelper.spieler1 but does not work yet
|
||||||
|
player: GKLocalPlayer.local,
|
||||||
team: .team1
|
team: .team1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -72,15 +72,15 @@ class MatchmakingHelper: NSObject, GKMatchmakerViewControllerDelegate, GKMatchDe
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Der User hat die Verbindung mit "Abbrechen" unterbrochen. GameCenter MatchMaking wird beendet.
|
Der User hat die Verbindung mit "Abbrechen" unterbrochen. GameCenter MatchMaking wird beendet.
|
||||||
*/
|
*/
|
||||||
func matchmakerViewControllerWasCancelled(_ viewController: GKMatchmakerViewController) {
|
func matchmakerViewControllerWasCancelled(_ viewController: GKMatchmakerViewController) {
|
||||||
viewController.dismiss(animated: true, completion: nil)
|
viewController.dismiss(animated: true, completion: nil)
|
||||||
delegate?.matchEnded()
|
delegate?.matchEnded()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Wenn GameCenter kein match erstellen kann, wird der viewcontroller dismissed.
|
Wenn GameCenter kein match erstellen kann, wird der viewcontroller dismissed.
|
||||||
*/
|
*/
|
||||||
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFailWithError error: Error) {
|
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFailWithError error: Error) {
|
||||||
viewController.dismiss(animated: true, completion: nil)
|
viewController.dismiss(animated: true, completion: nil)
|
||||||
print("Error finding match", error.localizedDescription)
|
print("Error finding match", error.localizedDescription)
|
||||||
@ -91,7 +91,7 @@ class MatchmakingHelper: NSObject, GKMatchmakerViewControllerDelegate, GKMatchDe
|
|||||||
Gamecenter hat erfolgreich ein Match gefunden, das Spiel kann gestartet werden.
|
Gamecenter hat erfolgreich ein Match gefunden, das Spiel kann gestartet werden.
|
||||||
expectedPlayerCount: Die verbleibende Anzahl von Spielern, die sich noch nicht mit dem Spiel verbunden haben
|
expectedPlayerCount: Die verbleibende Anzahl von Spielern, die sich noch nicht mit dem Spiel verbunden haben
|
||||||
z.B 0 gibt an, dass keine weiteren Spieler benötigt werden um das Match zu starten
|
z.B 0 gibt an, dass keine weiteren Spieler benötigt werden um das Match zu starten
|
||||||
*/
|
*/
|
||||||
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) {
|
func matchmakerViewController(_ viewController: GKMatchmakerViewController, didFind match: GKMatch) {
|
||||||
viewController.dismiss(animated: true, completion: nil)
|
viewController.dismiss(animated: true, completion: nil)
|
||||||
mpMatch = match
|
mpMatch = match
|
||||||
@ -102,8 +102,8 @@ class MatchmakingHelper: NSObject, GKMatchmakerViewControllerDelegate, GKMatchDe
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Vom match erhaltene Spielerdaten
|
Vom match erhaltene Spielerdaten
|
||||||
*/
|
*/
|
||||||
private func match(match: GKMatch!, didReceiveData data: NSData!,fromPlayer playerID: String!) {
|
private func match(match: GKMatch!, didReceiveData data: NSData!,fromPlayer playerID: String!) {
|
||||||
if mpMatch != match { return }
|
if mpMatch != match { return }
|
||||||
delegate?.matchReceivedData(match: match, data: data, fromPlayer: playerID)
|
delegate?.matchReceivedData(match: match, data: data, fromPlayer: playerID)
|
||||||
@ -143,8 +143,8 @@ class MatchmakingHelper: NSObject, GKMatchmakerViewControllerDelegate, GKMatchDe
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Ein Spieler wird als Host für das Match gewählt. Dieser ist Spieler 1. Im Anschluss wird die GameScene geladen.
|
Ein Spieler wird als Host für das Match gewählt. Dieser ist Spieler 1. Im Anschluss wird die GameScene geladen.
|
||||||
*/
|
*/
|
||||||
func startMatch() {
|
func startMatch() {
|
||||||
|
|
||||||
mpMatch!.chooseBestHostingPlayer(completionHandler: {
|
mpMatch!.chooseBestHostingPlayer(completionHandler: {
|
||||||
|
@ -34,29 +34,29 @@ class GameScene: SKScene{
|
|||||||
|
|
||||||
let touchLocation = touch.location(in: self)
|
let touchLocation = touch.location(in: self)
|
||||||
|
|
||||||
if isMoveTouch{
|
if isMoveTouch{
|
||||||
isMoveTouch = false
|
isMoveTouch = false
|
||||||
currentDraggedBase!.component(ofType: DefaultBaseComponent.self)?.spriteNode.position = currentDraggedBasePos
|
currentDraggedBase!.component(ofType: DefaultBaseComponent.self)?.spriteNode.position = currentDraggedBasePos
|
||||||
currentDraggedBase!.component(ofType: TeamComponent.self)?.fire.position = currentDraggedBasePos
|
currentDraggedBase!.component(ofType: TeamComponent.self)?.fire.position = currentDraggedBasePos
|
||||||
|
|
||||||
for base in currentDraggedBase!.adjacencyList {
|
for base in currentDraggedBase!.adjacencyList {
|
||||||
if atPoint(touchLocation) == base.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
if atPoint(touchLocation) == base.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
||||||
// TODO: change interaction based on collision instead of touchlocation
|
// TODO: change interaction based on collision instead of touchlocation
|
||||||
|
|
||||||
if !(entityManager.getTeamByBase(base: currentDraggedBase!) == entityManager.getTeamByBase(base: base)){
|
if !(entityManager.getTeamByBase(base: currentDraggedBase!) == entityManager.getTeamByBase(base: base)){
|
||||||
entityManager.add(Modal(modaltype: .BaseAttack,
|
entityManager.add(Modal(modaltype: .BaseAttack,
|
||||||
base: currentDraggedBase!,
|
base: currentDraggedBase!,
|
||||||
anchorPoint: CGPoint(x: self.size.width / 2 , y: self.size.height / 2)))
|
anchorPoint: CGPoint(x: self.size.width / 2 , y: self.size.height / 2)))
|
||||||
entityManager.update((currentDraggedBase?.attackBase(base: base, units: 100))!)
|
entityManager.update((currentDraggedBase?.attackBase(base: base, units: 100))!)
|
||||||
}else {
|
}else {
|
||||||
entityManager.add(Modal(modaltype: .BaseAttack,
|
entityManager.add(Modal(modaltype: .BaseAttack,
|
||||||
base: currentDraggedBase!,
|
base: currentDraggedBase!,
|
||||||
anchorPoint: CGPoint(x: self.size.width / 2 , y: self.size.height / 2)))
|
anchorPoint: CGPoint(x: self.size.width / 2 , y: self.size.height / 2)))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for entity in entityManager.entities {
|
for entity in entityManager.entities {
|
||||||
let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode
|
let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode
|
||||||
@ -94,16 +94,16 @@ class GameScene: SKScene{
|
|||||||
}
|
}
|
||||||
let touchLocation = touch.location(in: self)
|
let touchLocation = touch.location(in: self)
|
||||||
|
|
||||||
for child in children {
|
for child in children {
|
||||||
if atPoint(touchLocation) == child {
|
if atPoint(touchLocation) == child {
|
||||||
child.touchesMoved(touches, with: event)
|
child.touchesMoved(touches, with: event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for e in entityManager.entities{
|
for e in entityManager.entities{
|
||||||
if let body = e.component(ofType: ModalContentComponent.self)?.body{
|
if let body = e.component(ofType: ModalContentComponent.self)?.body{
|
||||||
body.text = "Schicke \( ((e.component(ofType: SliderComponent.self)?.sliderNode.getValue ?? 0) * CGFloat((e as! Modal).unitCount)).rounded(.up)) Einheiten "
|
body.text = "Schicke \( ((e.component(ofType: SliderComponent.self)?.sliderNode.getValue ?? 0) * CGFloat((e as! Modal).unitCount)).rounded(.up)) Einheiten "
|
||||||
} }
|
} }
|
||||||
|
|
||||||
let bases = entityManager.getBasesByTeam(for: .team1)
|
let bases = entityManager.getBasesByTeam(for: .team1)
|
||||||
|
|
||||||
|
@ -24,16 +24,16 @@ class MenuScene: SKScene {
|
|||||||
if CommandLine.arguments.contains("--no-matchmaking") {
|
if CommandLine.arguments.contains("--no-matchmaking") {
|
||||||
self.loadScene(scene: GameScene(size: self.size))
|
self.loadScene(scene: GameScene(size: self.size))
|
||||||
} else {
|
} else {
|
||||||
MatchmakingHelper.sharedInstance.presentMatchmaker(scene: self)
|
MatchmakingHelper.sharedInstance.presentMatchmaker(scene: self)
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
entityManager.add(Button(name: "settingsButton",
|
entityManager.add(Button(name: "settingsButton",
|
||||||
iconName: "",
|
iconName: "",
|
||||||
text: "Settings",
|
text: "Settings",
|
||||||
position: CGPoint(x: midX, y: midY - 80 ),
|
position: CGPoint(x: midX, y: midY - 80 ),
|
||||||
onButtonPress: {
|
onButtonPress: {
|
||||||
//TODO: create Settings Scene
|
//TODO: create Settings Scene
|
||||||
}))
|
}))
|
||||||
entityManager.add(Background(size: self.size))
|
entityManager.add(Background(size: self.size))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user