add winner/loser Icons
* remove SpinningLogoComponent * create SoinningLogoNode
This commit is contained in:
parent
8df133f896
commit
e2c08b51a2
@ -31,6 +31,8 @@
|
|||||||
9E174C86245DD91500209FF0 /* ButtonComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C85245DD91500209FF0 /* ButtonComponent.swift */; };
|
9E174C86245DD91500209FF0 /* ButtonComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C85245DD91500209FF0 /* ButtonComponent.swift */; };
|
||||||
9E174C88245DF1FF00209FF0 /* BackgroundComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C87245DF1FF00209FF0 /* BackgroundComponent.swift */; };
|
9E174C88245DF1FF00209FF0 /* BackgroundComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C87245DF1FF00209FF0 /* BackgroundComponent.swift */; };
|
||||||
9E174C8A245E1A0A00209FF0 /* Background.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C89245E1A0A00209FF0 /* Background.swift */; };
|
9E174C8A245E1A0A00209FF0 /* Background.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E174C89245E1A0A00209FF0 /* Background.swift */; };
|
||||||
|
9E61EAC4249BAC9100334DDE /* LoserFire.sks in Resources */ = {isa = PBXBuildFile; fileRef = 9E61EAC2249BAC9100334DDE /* LoserFire.sks */; };
|
||||||
|
9E61EAC7249BB61A00334DDE /* SpinningLogo3DNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E61EAC6249BB61A00334DDE /* SpinningLogo3DNode.swift */; };
|
||||||
9E78ACB6245C9A5300526FF7 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E78ACB5245C9A5300526FF7 /* GameKit.framework */; };
|
9E78ACB6245C9A5300526FF7 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E78ACB5245C9A5300526FF7 /* GameKit.framework */; };
|
||||||
9E78ACB8245CB75B00526FF7 /* TeamComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */; };
|
9E78ACB8245CB75B00526FF7 /* TeamComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */; };
|
||||||
9E78ACBA245CBDAF00526FF7 /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB9245CBDAF00526FF7 /* HUD.swift */; };
|
9E78ACBA245CBDAF00526FF7 /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB9245CBDAF00526FF7 /* HUD.swift */; };
|
||||||
@ -41,7 +43,6 @@
|
|||||||
9EC7E48B2461FBF700396BCD /* SliderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC7E48A2461FBF700396BCD /* SliderNode.swift */; };
|
9EC7E48B2461FBF700396BCD /* SliderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC7E48A2461FBF700396BCD /* SliderNode.swift */; };
|
||||||
9EC86B9F245C88A300796EF3 /* Modal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC86B9E245C88A300796EF3 /* Modal.swift */; };
|
9EC86B9F245C88A300796EF3 /* Modal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC86B9E245C88A300796EF3 /* Modal.swift */; };
|
||||||
9EEDE02D246FCD770096C735 /* SpinningLogoEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEDE02C246FCD770096C735 /* SpinningLogoEntity.swift */; };
|
9EEDE02D246FCD770096C735 /* SpinningLogoEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEDE02C246FCD770096C735 /* SpinningLogoEntity.swift */; };
|
||||||
9EEDE02F246FCD800096C735 /* SpinningLogoComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEDE02E246FCD800096C735 /* SpinningLogoComponent.swift */; };
|
|
||||||
AB21D7D5246C748A00B09CBA /* MapFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB21D7D4246C748A00B09CBA /* MapFactory.swift */; };
|
AB21D7D5246C748A00B09CBA /* MapFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB21D7D4246C748A00B09CBA /* MapFactory.swift */; };
|
||||||
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABA03D9F244BD54F00A66916 /* Base.swift */; };
|
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABA03D9F244BD54F00A66916 /* Base.swift */; };
|
||||||
ABC0C3732481509300387B8F /* MapUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABC0C3722481509300387B8F /* MapUtils.swift */; };
|
ABC0C3732481509300387B8F /* MapUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABC0C3722481509300387B8F /* MapUtils.swift */; };
|
||||||
@ -94,6 +95,8 @@
|
|||||||
9E174C85245DD91500209FF0 /* ButtonComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonComponent.swift; sourceTree = "<group>"; };
|
9E174C85245DD91500209FF0 /* ButtonComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonComponent.swift; sourceTree = "<group>"; };
|
||||||
9E174C87245DF1FF00209FF0 /* BackgroundComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundComponent.swift; sourceTree = "<group>"; };
|
9E174C87245DF1FF00209FF0 /* BackgroundComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackgroundComponent.swift; sourceTree = "<group>"; };
|
||||||
9E174C89245E1A0A00209FF0 /* Background.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Background.swift; sourceTree = "<group>"; };
|
9E174C89245E1A0A00209FF0 /* Background.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Background.swift; sourceTree = "<group>"; };
|
||||||
|
9E61EAC2249BAC9100334DDE /* LoserFire.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = LoserFire.sks; sourceTree = "<group>"; };
|
||||||
|
9E61EAC6249BB61A00334DDE /* SpinningLogo3DNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpinningLogo3DNode.swift; sourceTree = "<group>"; };
|
||||||
9E78ACB5245C9A5300526FF7 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
|
9E78ACB5245C9A5300526FF7 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
|
||||||
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TeamComponent.swift; sourceTree = "<group>"; };
|
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TeamComponent.swift; sourceTree = "<group>"; };
|
||||||
9E78ACB9245CBDAF00526FF7 /* HUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = "<group>"; };
|
9E78ACB9245CBDAF00526FF7 /* HUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = "<group>"; };
|
||||||
@ -105,7 +108,6 @@
|
|||||||
9EC86B9E245C88A300796EF3 /* Modal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modal.swift; sourceTree = "<group>"; };
|
9EC86B9E245C88A300796EF3 /* Modal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Modal.swift; sourceTree = "<group>"; };
|
||||||
9ECD3699245C91F7008DEEBD /* GoldWars.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = GoldWars.entitlements; sourceTree = "<group>"; };
|
9ECD3699245C91F7008DEEBD /* GoldWars.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = GoldWars.entitlements; sourceTree = "<group>"; };
|
||||||
9EEDE02C246FCD770096C735 /* SpinningLogoEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpinningLogoEntity.swift; sourceTree = "<group>"; };
|
9EEDE02C246FCD770096C735 /* SpinningLogoEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpinningLogoEntity.swift; sourceTree = "<group>"; };
|
||||||
9EEDE02E246FCD800096C735 /* SpinningLogoComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpinningLogoComponent.swift; sourceTree = "<group>"; };
|
|
||||||
AB21D7D4246C748A00B09CBA /* MapFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapFactory.swift; sourceTree = "<group>"; };
|
AB21D7D4246C748A00B09CBA /* MapFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapFactory.swift; sourceTree = "<group>"; };
|
||||||
ABA03D9F244BD54F00A66916 /* Base.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Base.swift; sourceTree = "<group>"; };
|
ABA03D9F244BD54F00A66916 /* Base.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Base.swift; sourceTree = "<group>"; };
|
||||||
ABC0C3722481509300387B8F /* MapUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUtils.swift; sourceTree = "<group>"; };
|
ABC0C3722481509300387B8F /* MapUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUtils.swift; sourceTree = "<group>"; };
|
||||||
@ -207,8 +209,8 @@
|
|||||||
8BB6FF3F2472B8F000162BBD /* SingeClickButtonNode.swift */,
|
8BB6FF3F2472B8F000162BBD /* SingeClickButtonNode.swift */,
|
||||||
C05BB9C3247D890C00411249 /* SliderComponent.swift */,
|
C05BB9C3247D890C00411249 /* SliderComponent.swift */,
|
||||||
9EC7E48A2461FBF700396BCD /* SliderNode.swift */,
|
9EC7E48A2461FBF700396BCD /* SliderNode.swift */,
|
||||||
9EEDE02E246FCD800096C735 /* SpinningLogoComponent.swift */,
|
|
||||||
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */,
|
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */,
|
||||||
|
9E61EAC6249BB61A00334DDE /* SpinningLogo3DNode.swift */,
|
||||||
);
|
);
|
||||||
path = Components;
|
path = Components;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -234,6 +236,7 @@
|
|||||||
children = (
|
children = (
|
||||||
3F79FFDF2486F7CD003F79C3 /* Explosion.sks */,
|
3F79FFDF2486F7CD003F79C3 /* Explosion.sks */,
|
||||||
9E11FF77245CD81100EED3BE /* Fire.sks */,
|
9E11FF77245CD81100EED3BE /* Fire.sks */,
|
||||||
|
9E61EAC2249BAC9100334DDE /* LoserFire.sks */,
|
||||||
);
|
);
|
||||||
path = Partikels;
|
path = Partikels;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -368,6 +371,7 @@
|
|||||||
9E11FF79245CD81100EED3BE /* Fire.sks in Resources */,
|
9E11FF79245CD81100EED3BE /* Fire.sks in Resources */,
|
||||||
110360E0244B101B008610AF /* Assets.xcassets in Resources */,
|
110360E0244B101B008610AF /* Assets.xcassets in Resources */,
|
||||||
110360E3244B101B008610AF /* LaunchScreen.storyboard in Resources */,
|
110360E3244B101B008610AF /* LaunchScreen.storyboard in Resources */,
|
||||||
|
9E61EAC4249BAC9100334DDE /* LoserFire.sks in Resources */,
|
||||||
C04783EE2468583F004961FB /* intro-music.mp3 in Resources */,
|
C04783EE2468583F004961FB /* intro-music.mp3 in Resources */,
|
||||||
3F79FFE02486F7CD003F79C3 /* Explosion.sks in Resources */,
|
3F79FFE02486F7CD003F79C3 /* Explosion.sks in Resources */,
|
||||||
);
|
);
|
||||||
@ -418,7 +422,7 @@
|
|||||||
ABC0C3732481509300387B8F /* MapUtils.swift in Sources */,
|
ABC0C3732481509300387B8F /* MapUtils.swift in Sources */,
|
||||||
9E174C82245DD81D00209FF0 /* ButtonNode.swift in Sources */,
|
9E174C82245DD81D00209FF0 /* ButtonNode.swift in Sources */,
|
||||||
9EC7E48B2461FBF700396BCD /* SliderNode.swift in Sources */,
|
9EC7E48B2461FBF700396BCD /* SliderNode.swift in Sources */,
|
||||||
9EEDE02F246FCD800096C735 /* SpinningLogoComponent.swift in Sources */,
|
9E61EAC7249BB61A00334DDE /* SpinningLogo3DNode.swift in Sources */,
|
||||||
9E174C84245DD8CE00209FF0 /* Button.swift in Sources */,
|
9E174C84245DD8CE00209FF0 /* Button.swift in Sources */,
|
||||||
110360DB244B101A008610AF /* GameViewController.swift in Sources */,
|
110360DB244B101A008610AF /* GameViewController.swift in Sources */,
|
||||||
C05BB9C4247D890C00411249 /* SliderComponent.swift in Sources */,
|
C05BB9C4247D890C00411249 /* SliderComponent.swift in Sources */,
|
||||||
|
23
GoldWars/GoldWars/Assets.xcassets/winner.imageset/Contents.json
vendored
Normal file
23
GoldWars/GoldWars/Assets.xcassets/winner.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"filename" : "winner.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "winner-1.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "winner-2.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner-1.png
vendored
Normal file
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner-1.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 448 KiB |
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner-2.png
vendored
Normal file
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner-2.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 448 KiB |
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner.png
vendored
Normal file
BIN
GoldWars/GoldWars/Assets.xcassets/winner.imageset/winner.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 448 KiB |
40
GoldWars/GoldWars/Components/SpinningLogo3DNode.swift
Normal file
40
GoldWars/GoldWars/Components/SpinningLogo3DNode.swift
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
//
|
||||||
|
// SpinningLogo3DNode.swift
|
||||||
|
// GoldWars
|
||||||
|
//
|
||||||
|
// Created by Niko Jochim on 18.06.20.
|
||||||
|
// Copyright © 2020 SP2. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import SpriteKit
|
||||||
|
import GameKit
|
||||||
|
class SpinningLogo3DNode : SK3DNode {
|
||||||
|
|
||||||
|
init() {
|
||||||
|
super.init(viewportSize: CGSize(width: 250, height: 250))
|
||||||
|
let scnScene: SCNScene = {
|
||||||
|
let scnScene = SCNScene()
|
||||||
|
let cylinder = SCNCylinder(radius: 250, height: 50)
|
||||||
|
let logoMaterial = SCNMaterial()
|
||||||
|
let colorMaterial = SCNMaterial()
|
||||||
|
logoMaterial.diffuse.contents = UIImage(named: "logo_no_background")
|
||||||
|
colorMaterial.diffuse.contents = UIColor(red: 0.852, green: 0.649, blue: 0.123, alpha: 1)
|
||||||
|
cylinder.materials = [colorMaterial,logoMaterial,logoMaterial]
|
||||||
|
let cylinderNode = SCNNode(geometry: cylinder)
|
||||||
|
cylinderNode.eulerAngles = SCNVector3(x: Float(CGFloat.pi / 2), y: 0, z: Float(CGFloat.pi / 2))
|
||||||
|
let action = SCNAction.rotateBy(x: CGFloat(GLKMathDegreesToRadians(360)), y:0 , z: 0, duration: 8)
|
||||||
|
let forever = SCNAction.repeatForever(action)
|
||||||
|
cylinderNode.runAction(forever)
|
||||||
|
scnScene.rootNode.addChildNode(cylinderNode)
|
||||||
|
return scnScene
|
||||||
|
}()
|
||||||
|
self.scnScene = scnScene
|
||||||
|
self.position = position
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
//
|
|
||||||
// SpinningLogoComponent.swift
|
|
||||||
// GoldWars
|
|
||||||
//
|
|
||||||
// Created by Niko Jochim on 15.05.20.
|
|
||||||
// Copyright © 2020 SP2. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
import GameKit
|
|
||||||
|
|
||||||
class SpinningLogoComponent: GKComponent{
|
|
||||||
|
|
||||||
var node : SK3DNode
|
|
||||||
|
|
||||||
init(position: CGPoint) {
|
|
||||||
|
|
||||||
let scnScene: SCNScene = {
|
|
||||||
let scnScene = SCNScene()
|
|
||||||
let cylinder = SCNCylinder(radius: 250, height: 50)
|
|
||||||
let logoMaterial = SCNMaterial()
|
|
||||||
let colorMaterial = SCNMaterial()
|
|
||||||
logoMaterial.diffuse.contents = UIImage(named: "logo_no_background")
|
|
||||||
colorMaterial.diffuse.contents = UIColor(red: 0.852, green: 0.649, blue: 0.123, alpha: 1)
|
|
||||||
cylinder.materials = [colorMaterial,logoMaterial,logoMaterial]
|
|
||||||
let cylinderNode = SCNNode(geometry: cylinder)
|
|
||||||
cylinderNode.eulerAngles = SCNVector3(x: Float(CGFloat.pi / 2), y: 0, z: Float(CGFloat.pi / 2))
|
|
||||||
let action = SCNAction.rotateBy(x: CGFloat(GLKMathDegreesToRadians(360)), y:0 , z: 0, duration: 8)
|
|
||||||
let forever = SCNAction.repeatForever(action)
|
|
||||||
cylinderNode.runAction(forever)
|
|
||||||
scnScene.rootNode.addChildNode(cylinderNode)
|
|
||||||
return scnScene
|
|
||||||
}()
|
|
||||||
|
|
||||||
self.node = SK3DNode(viewportSize: CGSize(width: 250, height: 250))
|
|
||||||
node.scnScene = scnScene
|
|
||||||
node.position = position
|
|
||||||
super.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
fatalError("init(coder:) has not been implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -60,6 +60,10 @@ class EntityManager {
|
|||||||
scene.addChild(hudEntitiy.blockWholeScreenPane)
|
scene.addChild(hudEntitiy.blockWholeScreenPane)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let spinningLogoEntity = entity as? SpinningLogoEntity {
|
||||||
|
scene.addChild(spinningLogoEntity.spinningLogoNode)
|
||||||
|
}
|
||||||
|
|
||||||
if let wayEntity = entity as? Way {
|
if let wayEntity = entity as? Way {
|
||||||
scene.addChild(wayEntity.localWayComponent)
|
scene.addChild(wayEntity.localWayComponent)
|
||||||
}
|
}
|
||||||
@ -88,9 +92,7 @@ class EntityManager {
|
|||||||
if let labelNode = entity.component(ofType: LabelComponent.self)?.labelNode {
|
if let labelNode = entity.component(ofType: LabelComponent.self)?.labelNode {
|
||||||
scene.addChild(labelNode)
|
scene.addChild(labelNode)
|
||||||
}
|
}
|
||||||
if let node = entity.component(ofType: SpinningLogoComponent.self)?.node {
|
|
||||||
scene.addChild(node)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func remove(_ entity: GKEntity) {
|
func remove(_ entity: GKEntity) {
|
||||||
|
@ -11,9 +11,12 @@ import GameplayKit
|
|||||||
|
|
||||||
class SpinningLogoEntity: GKEntity {
|
class SpinningLogoEntity: GKEntity {
|
||||||
|
|
||||||
|
let spinningLogoNode : SpinningLogo3DNode
|
||||||
|
|
||||||
init(position: CGPoint) {
|
init(position: CGPoint) {
|
||||||
|
spinningLogoNode = SpinningLogo3DNode()
|
||||||
|
spinningLogoNode.position = position
|
||||||
super.init()
|
super.init()
|
||||||
self.addComponent(SpinningLogoComponent(position: position))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
|
Binary file not shown.
Binary file not shown.
BIN
GoldWars/GoldWars/Partikels/LoserFire.sks
Normal file
BIN
GoldWars/GoldWars/Partikels/LoserFire.sks
Normal file
Binary file not shown.
@ -57,6 +57,8 @@ class RoundTimer: Timer {
|
|||||||
MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData)
|
MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData)
|
||||||
}
|
}
|
||||||
calculate = true
|
calculate = true
|
||||||
|
}
|
||||||
|
|
||||||
if timeLeft <= 0 {
|
if timeLeft <= 0 {
|
||||||
if calculate
|
if calculate
|
||||||
&& !RoundCalculatorService.sharedInstance.isCalculating
|
&& !RoundCalculatorService.sharedInstance.isCalculating
|
||||||
@ -66,8 +68,6 @@ class RoundTimer: Timer {
|
|||||||
calculate = false
|
calculate = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,6 @@ class GameScene: SKScene{
|
|||||||
override func update(_ currentTime: TimeInterval) {
|
override func update(_ currentTime: TimeInterval) {
|
||||||
if entityManager.entities.count != 0 {
|
if entityManager.entities.count != 0 {
|
||||||
entityManager.getBackground()?.update(deltaTime: currentTime)
|
entityManager.getBackground()?.update(deltaTime: currentTime)
|
||||||
print("Update")
|
|
||||||
if GameCenterManager.sharedInstance.gameEnded && !gameEndEffects {
|
if GameCenterManager.sharedInstance.gameEnded && !gameEndEffects {
|
||||||
gameEnd()
|
gameEnd()
|
||||||
}
|
}
|
||||||
@ -129,25 +128,16 @@ class GameScene: SKScene{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func gameEnd(){
|
func gameEnd(){
|
||||||
print("Game END")
|
|
||||||
gameEndEffects = true
|
gameEndEffects = true
|
||||||
let winnerNode:String?
|
|
||||||
GameCenterManager.sharedInstance.gameEnded = false
|
GameCenterManager.sharedInstance.gameEnded = false
|
||||||
|
|
||||||
|
|
||||||
if GameCenterManager.sharedInstance.isServer {
|
|
||||||
winnerNode = "hostLabel"
|
|
||||||
} else {
|
|
||||||
winnerNode = "peerLabel"
|
|
||||||
}
|
|
||||||
|
|
||||||
let move = SKAction.move(to: CGPoint(x: self.size.width / 2, y: self.size.height / 2), duration: 1)
|
let move = SKAction.move(to: CGPoint(x: self.size.width / 2, y: self.size.height / 2), duration: 1)
|
||||||
let removeParticle = SKAction.removeFromParent()
|
let removeParticle = SKAction.removeFromParent()
|
||||||
|
|
||||||
let sequence = SKAction.sequence([move, removeParticle])
|
let sequence = SKAction.sequence([move, removeParticle])
|
||||||
var n = 0
|
var n = 0
|
||||||
for nodeChild in children {
|
for nodeChild in children {
|
||||||
if nodeChild.name == winnerNode {
|
if nodeChild.name == "peerLabel" || nodeChild.name == "hostLabel"{
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if nodeChild.name == "way" {
|
if nodeChild.name == "way" {
|
||||||
@ -157,19 +147,19 @@ class GameScene: SKScene{
|
|||||||
if nodeChild.name != "clouds"{
|
if nodeChild.name != "clouds"{
|
||||||
nodeChild.run(sequence,completion: {
|
nodeChild.run(sequence,completion: {
|
||||||
if n < 1 {
|
if n < 1 {
|
||||||
let explosion = SKEmitterNode(fileNamed: "Explosion")!
|
let explosion = self.getFinalExplosion()
|
||||||
explosion.zPosition = 2
|
|
||||||
explosion.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
|
|
||||||
explosion.name = "explosion"
|
|
||||||
explosion.particleColorSequence = nil
|
|
||||||
explosion.particleColorBlendFactor = 1.0
|
|
||||||
self.addChild(explosion)
|
self.addChild(explosion)
|
||||||
let action = SKAction.afterDelay(2) {
|
let action = SKAction.afterDelay(2) {
|
||||||
let size = SKAction.scale(by: 3, duration: 1)
|
|
||||||
(self.childNode(withName: winnerNode!) as! SKLabelNode).horizontalAlignmentMode = .center
|
(self.childNode(withName: "hostLabel") as! SKLabelNode).horizontalAlignmentMode = .center
|
||||||
self.childNode(withName: winnerNode!)?.run(SKAction.sequence([move,size]))
|
(self.childNode(withName: "peerLabel") as! SKLabelNode).horizontalAlignmentMode = .center
|
||||||
let node = ButtonNode(textureName: "yellow_button05", text: "Menu", isEnabled: true, position: CGPoint(x: self.size.width / 2, y: self.size.height / 2 - 200), onButtonPress: {
|
self.childNode(withName: "hostLabel")?.run(SKAction.move(to: CGPoint(x: self.size.width * 0.25, y: self.size.height * 0.3), duration: 1))
|
||||||
self.buttonPressed()
|
self.childNode(withName: "peerLabel")?.run(SKAction.move(to: CGPoint(x: self.size.width * 0.75, y: self.size.height * 0.3), duration: 1))
|
||||||
|
|
||||||
|
self.initGameEndIcons()
|
||||||
|
|
||||||
|
let node = ButtonNode(textureName: "yellow_button05", text: "Menu", isEnabled: true, position: CGPoint(x: self.size.width / 2, y: self.size.height / 2 - 300), onButtonPress: {
|
||||||
|
self.backToMenuAction()
|
||||||
})
|
})
|
||||||
node.name = "BackButton"
|
node.name = "BackButton"
|
||||||
self.addChild(node)
|
self.addChild(node)
|
||||||
@ -183,7 +173,73 @@ class GameScene: SKScene{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func buttonPressed() {
|
func initGameEndIcons() {
|
||||||
|
let iclonSize = CGSize(width: 400, height: 400)
|
||||||
|
let winnerIcon = SKSpriteNode(texture: SKTexture(imageNamed: "winner"));
|
||||||
|
winnerIcon.size = iclonSize
|
||||||
|
|
||||||
|
let loserIcon = SKSpriteNode(texture: SKTexture(imageNamed: "BaseTexture"))
|
||||||
|
loserIcon.size = iclonSize
|
||||||
|
let loserFire = SKEmitterNode(fileNamed: "LoserFire")
|
||||||
|
loserFire?.zPosition = loserIcon.zPosition - 1
|
||||||
|
loserFire?.run(SKAction.scale(by: 4, duration: 8))
|
||||||
|
|
||||||
|
|
||||||
|
let iconPosition1 = CGPoint(x: self.size.width * 0.25, y: self.size.height * 0.55)
|
||||||
|
let iconPosition2 = CGPoint(x: self.size.width * 0.75, y: self.size.height * 0.55)
|
||||||
|
let coin = SpinningLogo3DNode()
|
||||||
|
if GameCenterManager.sharedInstance.winner == GameCenterManager.sharedInstance.hostingPlayer?.displayName {
|
||||||
|
winnerIcon.position = iconPosition1
|
||||||
|
coin.position = iconPosition1
|
||||||
|
loserIcon.position = iconPosition2
|
||||||
|
loserFire?.position = iconPosition2
|
||||||
|
|
||||||
|
} else {
|
||||||
|
winnerIcon.position = iconPosition2
|
||||||
|
coin.position = iconPosition2
|
||||||
|
loserIcon.position = iconPosition1
|
||||||
|
loserFire?.position = iconPosition1
|
||||||
|
}
|
||||||
|
|
||||||
|
self.addChild(winnerIcon)
|
||||||
|
self.addChild(coin)
|
||||||
|
self.addChild(loserIcon)
|
||||||
|
self.addChild(loserFire!)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFinalExplosion() -> SKEmitterNode {
|
||||||
|
let explosion = SKEmitterNode(fileNamed: "Explosion")!
|
||||||
|
explosion.zPosition = 2
|
||||||
|
explosion.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
|
||||||
|
explosion.name = "explosion"
|
||||||
|
explosion.particleColorSequence = nil
|
||||||
|
explosion.particleColorBlendFactor = 1.0
|
||||||
|
return explosion
|
||||||
|
}
|
||||||
|
|
||||||
|
func goldWarsCoin() -> SK3DNode {
|
||||||
|
let scnScene: SCNScene = {
|
||||||
|
let scnScene = SCNScene()
|
||||||
|
let cylinder = SCNCylinder(radius: 250, height: 50)
|
||||||
|
let logoMaterial = SCNMaterial()
|
||||||
|
let colorMaterial = SCNMaterial()
|
||||||
|
logoMaterial.diffuse.contents = UIImage(named: "logo_no_background")
|
||||||
|
colorMaterial.diffuse.contents = UIColor(red: 0.852, green: 0.649, blue: 0.123, alpha: 1)
|
||||||
|
cylinder.materials = [colorMaterial,logoMaterial,logoMaterial]
|
||||||
|
let cylinderNode = SCNNode(geometry: cylinder)
|
||||||
|
cylinderNode.eulerAngles = SCNVector3(x: Float(CGFloat.pi / 2), y: 0, z: Float(CGFloat.pi / 2))
|
||||||
|
let action = SCNAction.rotateBy(x: CGFloat(GLKMathDegreesToRadians(360)), y:0 , z: 0, duration: 8)
|
||||||
|
let forever = SCNAction.repeatForever(action)
|
||||||
|
cylinderNode.runAction(forever)
|
||||||
|
scnScene.rootNode.addChildNode(cylinderNode)
|
||||||
|
return scnScene
|
||||||
|
}()
|
||||||
|
let node = SK3DNode(viewportSize: CGSize(width: 250, height: 250))
|
||||||
|
node.scnScene = scnScene
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
|
||||||
|
func backToMenuAction() {
|
||||||
GameCenterManager.sharedInstance.reset()
|
GameCenterManager.sharedInstance.reset()
|
||||||
self.gameEndEffects = false
|
self.gameEndEffects = false
|
||||||
entityManager.getTimer()?.stopTimer()
|
entityManager.getTimer()?.stopTimer()
|
||||||
|
Loading…
Reference in New Issue
Block a user