Merge branch '67-ueberarbeitung-timer-synchronisation' into 'development'
Resolve "Ueberarbeitung Timer Synchronisation" Closes #67 See merge request marcel.schwarz/software-projekt-2!97
This commit is contained in:
commit
f0a5f5d15c
@ -16,10 +16,10 @@
|
|||||||
110360EE244B101B008610AF /* GoldWarsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360ED244B101B008610AF /* GoldWarsTests.swift */; };
|
110360EE244B101B008610AF /* GoldWarsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110360ED244B101B008610AF /* GoldWarsTests.swift */; };
|
||||||
11036113244B3E30008610AF /* MenuScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11036112244B3E30008610AF /* MenuScene.swift */; };
|
11036113244B3E30008610AF /* MenuScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11036112244B3E30008610AF /* MenuScene.swift */; };
|
||||||
116060F7245C57D2004E5A36 /* EntityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116060F6245C57D2004E5A36 /* EntityManager.swift */; };
|
116060F7245C57D2004E5A36 /* EntityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116060F6245C57D2004E5A36 /* EntityManager.swift */; };
|
||||||
2086465C2461B66200817C23 /* TimerComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2086465B2461B66200817C23 /* TimerComponent.swift */; };
|
|
||||||
3E67854024728368007B9DE4 /* CElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E67853F24728368007B9DE4 /* CElements.swift */; };
|
3E67854024728368007B9DE4 /* CElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E67853F24728368007B9DE4 /* CElements.swift */; };
|
||||||
3E6785422472CBEC007B9DE4 /* Way.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6785412472CBEC007B9DE4 /* Way.swift */; };
|
3E6785422472CBEC007B9DE4 /* Way.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6785412472CBEC007B9DE4 /* Way.swift */; };
|
||||||
3E6785442472CC27007B9DE4 /* DefaultWayComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6785432472CC27007B9DE4 /* DefaultWayComponent.swift */; };
|
3E6785442472CC27007B9DE4 /* DefaultWayComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6785432472CC27007B9DE4 /* DefaultWayComponent.swift */; };
|
||||||
|
3EAD889524801B6A0048A10A /* RoundTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EAD889424801B6A0048A10A /* RoundTimer.swift */; };
|
||||||
3EBD242E245D9332003CECE7 /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EBD242D245D9332003CECE7 /* Team.swift */; };
|
3EBD242E245D9332003CECE7 /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EBD242D245D9332003CECE7 /* Team.swift */; };
|
||||||
3F745DF0246F48FC00CE7375 /* PlayerMoveType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F745DEF246F48FC00CE7375 /* PlayerMoveType.swift */; };
|
3F745DF0246F48FC00CE7375 /* PlayerMoveType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F745DEF246F48FC00CE7375 /* PlayerMoveType.swift */; };
|
||||||
3FE19DB5246C7A22004827AB /* RoundCalculatorService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */; };
|
3FE19DB5246C7A22004827AB /* RoundCalculatorService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */; };
|
||||||
@ -79,10 +79,10 @@
|
|||||||
110360EF244B101B008610AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
110360EF244B101B008610AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
11036112244B3E30008610AF /* MenuScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuScene.swift; sourceTree = "<group>"; };
|
11036112244B3E30008610AF /* MenuScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuScene.swift; sourceTree = "<group>"; };
|
||||||
116060F6245C57D2004E5A36 /* EntityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntityManager.swift; sourceTree = "<group>"; };
|
116060F6245C57D2004E5A36 /* EntityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntityManager.swift; sourceTree = "<group>"; };
|
||||||
2086465B2461B66200817C23 /* TimerComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimerComponent.swift; sourceTree = "<group>"; };
|
|
||||||
3E67853F24728368007B9DE4 /* CElements.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CElements.swift; sourceTree = "<group>"; };
|
3E67853F24728368007B9DE4 /* CElements.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CElements.swift; sourceTree = "<group>"; };
|
||||||
3E6785412472CBEC007B9DE4 /* Way.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Way.swift; sourceTree = "<group>"; };
|
3E6785412472CBEC007B9DE4 /* Way.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Way.swift; sourceTree = "<group>"; };
|
||||||
3E6785432472CC27007B9DE4 /* DefaultWayComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultWayComponent.swift; sourceTree = "<group>"; };
|
3E6785432472CC27007B9DE4 /* DefaultWayComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultWayComponent.swift; sourceTree = "<group>"; };
|
||||||
|
3EAD889424801B6A0048A10A /* RoundTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundTimer.swift; sourceTree = "<group>"; };
|
||||||
3EBD242D245D9332003CECE7 /* Team.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Team.swift; sourceTree = "<group>"; };
|
3EBD242D245D9332003CECE7 /* Team.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Team.swift; sourceTree = "<group>"; };
|
||||||
3F745DEF246F48FC00CE7375 /* PlayerMoveType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerMoveType.swift; sourceTree = "<group>"; };
|
3F745DEF246F48FC00CE7375 /* PlayerMoveType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerMoveType.swift; sourceTree = "<group>"; };
|
||||||
3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundCalculatorService.swift; sourceTree = "<group>"; };
|
3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundCalculatorService.swift; sourceTree = "<group>"; };
|
||||||
@ -179,6 +179,7 @@
|
|||||||
3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */,
|
3FE19DB4246C7A22004827AB /* RoundCalculatorService.swift */,
|
||||||
9E0E459624796262009817A6 /* GameCenterManager.swift */,
|
9E0E459624796262009817A6 /* GameCenterManager.swift */,
|
||||||
C04783EF24685995004961FB /* SettingsScene.swift */,
|
C04783EF24685995004961FB /* SettingsScene.swift */,
|
||||||
|
3EAD889424801B6A0048A10A /* RoundTimer.swift */,
|
||||||
);
|
);
|
||||||
path = GoldWars;
|
path = GoldWars;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -209,7 +210,6 @@
|
|||||||
9EC7E48A2461FBF700396BCD /* SliderNode.swift */,
|
9EC7E48A2461FBF700396BCD /* SliderNode.swift */,
|
||||||
9EEDE02E246FCD800096C735 /* SpinningLogoComponent.swift */,
|
9EEDE02E246FCD800096C735 /* SpinningLogoComponent.swift */,
|
||||||
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */,
|
9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */,
|
||||||
2086465B2461B66200817C23 /* TimerComponent.swift */,
|
|
||||||
);
|
);
|
||||||
path = Components;
|
path = Components;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -410,6 +410,7 @@
|
|||||||
8BB6FF402472B8F000162BBD /* SingeClickButtonNode.swift in Sources */,
|
8BB6FF402472B8F000162BBD /* SingeClickButtonNode.swift in Sources */,
|
||||||
C064E9A8246C0EA50022B228 /* LabelNode.swift in Sources */,
|
C064E9A8246C0EA50022B228 /* LabelNode.swift in Sources */,
|
||||||
3F745DF0246F48FC00CE7375 /* PlayerMoveType.swift in Sources */,
|
3F745DF0246F48FC00CE7375 /* PlayerMoveType.swift in Sources */,
|
||||||
|
3EAD889524801B6A0048A10A /* RoundTimer.swift in Sources */,
|
||||||
3E67854024728368007B9DE4 /* CElements.swift in Sources */,
|
3E67854024728368007B9DE4 /* CElements.swift in Sources */,
|
||||||
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */,
|
ABA03DA0244BD54F00A66916 /* Base.swift in Sources */,
|
||||||
C064E9AC246C151F0022B228 /* Label.swift in Sources */,
|
C064E9AC246C151F0022B228 /* Label.swift in Sources */,
|
||||||
@ -420,7 +421,6 @@
|
|||||||
9E174C84245DD8CE00209FF0 /* Button.swift in Sources */,
|
9E174C84245DD8CE00209FF0 /* Button.swift in Sources */,
|
||||||
110360DB244B101A008610AF /* GameViewController.swift in Sources */,
|
110360DB244B101A008610AF /* GameViewController.swift in Sources */,
|
||||||
3E6785442472CC27007B9DE4 /* DefaultWayComponent.swift in Sources */,
|
3E6785442472CC27007B9DE4 /* DefaultWayComponent.swift in Sources */,
|
||||||
2086465C2461B66200817C23 /* TimerComponent.swift in Sources */,
|
|
||||||
C05BB9C4247D890C00411249 /* SliderComponent.swift in Sources */,
|
C05BB9C4247D890C00411249 /* SliderComponent.swift in Sources */,
|
||||||
110360D3244B101A008610AF /* AppDelegate.swift in Sources */,
|
110360D3244B101A008610AF /* AppDelegate.swift in Sources */,
|
||||||
9EC86B9F245C88A300796EF3 /* Modal.swift in Sources */,
|
9EC86B9F245C88A300796EF3 /* Modal.swift in Sources */,
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
//
|
|
||||||
// TimerComponent.swift
|
|
||||||
// GoldWars
|
|
||||||
//
|
|
||||||
// Created by Daniel Steckert on 05.05.20.
|
|
||||||
// Copyright © 2020 SP2. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import GameplayKit
|
|
||||||
|
|
||||||
class TimerComponent: GKComponent {
|
|
||||||
|
|
||||||
let labelNode :SKLabelNode
|
|
||||||
var endTime :Date!
|
|
||||||
var duration :Double
|
|
||||||
var isRunning = false
|
|
||||||
|
|
||||||
init(text: String, anchorPoint: CGPoint, duration: TimeInterval) {
|
|
||||||
self.labelNode = SKLabelNode(text: text)
|
|
||||||
self.labelNode.fontColor = UIColor.black
|
|
||||||
self.labelNode.fontSize = CGFloat(45)
|
|
||||||
self.labelNode.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - 15)
|
|
||||||
self.duration = duration + 1
|
|
||||||
super.init()
|
|
||||||
startWithDuration(duration: self.duration)
|
|
||||||
}
|
|
||||||
|
|
||||||
func startWithDuration(duration: TimeInterval){
|
|
||||||
isRunning = true
|
|
||||||
endTime = Date().addingTimeInterval(duration)
|
|
||||||
RoundCalculatorService.sharedInstance.isCalculating = false
|
|
||||||
}
|
|
||||||
|
|
||||||
func timeLeft() -> Int {
|
|
||||||
if isRunning {
|
|
||||||
let remainingSeconds = Int(endTime.timeIntervalSince(Date()))
|
|
||||||
if(remainingSeconds == 0) {
|
|
||||||
isRunning = false
|
|
||||||
}
|
|
||||||
return remainingSeconds
|
|
||||||
}
|
|
||||||
|
|
||||||
// if(remainingSeconds < 0){
|
|
||||||
// startWithDuration(duration: duration)
|
|
||||||
// }
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func isFinished() -> Bool {
|
|
||||||
return timeLeft() == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func update() {
|
|
||||||
self.labelNode.text = String(timeLeft())
|
|
||||||
|
|
||||||
if(isFinished()){
|
|
||||||
self.labelNode.text = "Synching"
|
|
||||||
RoundCalculatorService.sharedInstance.resetNumberOfAttacksAndFormats()
|
|
||||||
if !MultiplayerNetwork.sharedInstance.isSending {
|
|
||||||
MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData)
|
|
||||||
}
|
|
||||||
if !RoundCalculatorService.sharedInstance.isCalculating
|
|
||||||
&& DataService.sharedInstance.didReceiveAllData()
|
|
||||||
&& GameCenterManager.sharedInstance.isServer {
|
|
||||||
RoundCalculatorService.sharedInstance.calculateRound()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
fatalError("init(coder:) has not been implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -53,7 +53,7 @@ class DataService {
|
|||||||
|
|
||||||
var mapModel: MapGenerationModel?
|
var mapModel: MapGenerationModel?
|
||||||
var entityManager = EntityManager.gameEMInstance
|
var entityManager = EntityManager.gameEMInstance
|
||||||
|
|
||||||
func addMove(playerMove: PlayerMove) {
|
func addMove(playerMove: PlayerMove) {
|
||||||
var equalMove = localRoundData.localPlayerMoves.filter { (ele) -> Bool in
|
var equalMove = localRoundData.localPlayerMoves.filter { (ele) -> Bool in
|
||||||
ele.fromBase == playerMove.fromBase && ele.toBase == playerMove.toBase
|
ele.fromBase == playerMove.fromBase && ele.toBase == playerMove.toBase
|
||||||
|
@ -42,14 +42,15 @@ class EntityManager {
|
|||||||
isModal = true
|
isModal = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if let hudEnitity = entity as? HUD {
|
if let hudEntitiy = entity as? HUD {
|
||||||
scene.addChild(hudEnitity.hostLabel)
|
scene.addChild(hudEntitiy.hostLabel)
|
||||||
scene.addChild(hudEnitity.hostUnitsLabel)
|
scene.addChild(hudEntitiy.hostUnitsLabel)
|
||||||
scene.addChild(hudEnitity.peerLabel)
|
scene.addChild(hudEntitiy.peerLabel)
|
||||||
scene.addChild(hudEnitity.peerUnitsLabel)
|
scene.addChild(hudEntitiy.peerUnitsLabel)
|
||||||
scene.addChild(hudEnitity.defSkill)
|
scene.addChild(hudEntitiy.defSkill)
|
||||||
scene.addChild(hudEnitity.atkSkill)
|
scene.addChild(hudEntitiy.atkSkill)
|
||||||
scene.addChild(hudEnitity.spySkill)
|
scene.addChild(hudEntitiy.spySkill)
|
||||||
|
scene.addChild(hudEntitiy.roundTimerLabel)
|
||||||
isModal = true
|
isModal = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,9 +61,6 @@ class EntityManager {
|
|||||||
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 timer = entity.component(ofType: TimerComponent.self) {
|
|
||||||
scene.addChild(timer.labelNode)
|
|
||||||
}
|
|
||||||
if let buttonNode = entity.component(ofType: ButtonComponent.self)?.buttonNode {
|
if let buttonNode = entity.component(ofType: ButtonComponent.self)?.buttonNode {
|
||||||
scene.addChild(buttonNode)
|
scene.addChild(buttonNode)
|
||||||
}
|
}
|
||||||
@ -264,9 +262,6 @@ class EntityManager {
|
|||||||
return SnapshotModel(baseEntites: snapBase)
|
return SnapshotModel(baseEntites: snapBase)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTimer() -> TimerComponent {
|
|
||||||
return entities.filter{$0 is HUD}[0].component(ofType: TimerComponent.self)!
|
|
||||||
}
|
|
||||||
func getUnitSum(by player: GKPlayer) -> Int{
|
func getUnitSum(by player: GKPlayer) -> Int{
|
||||||
let bases = getBasesByPlayer(for: player)
|
let bases = getBasesByPlayer(for: player)
|
||||||
|
|
||||||
@ -307,4 +302,12 @@ class EntityManager {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getTimer() -> RoundTimer? {
|
||||||
|
return getHUD()?.roundTimer
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateTime(time: String) {
|
||||||
|
getHUD()?.roundTimerLabel.text = time
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,9 @@ class HUD: GKEntity {
|
|||||||
var defSkill: SingeClickButtonNode
|
var defSkill: SingeClickButtonNode
|
||||||
var atkSkill: SingeClickButtonNode
|
var atkSkill: SingeClickButtonNode
|
||||||
|
|
||||||
|
var roundTimerLabel: SKLabelNode
|
||||||
|
let roundTimer: RoundTimer
|
||||||
|
|
||||||
init(size: CGSize) {
|
init(size: CGSize) {
|
||||||
host = GameCenterManager.sharedInstance.hostingPlayer
|
host = GameCenterManager.sharedInstance.hostingPlayer
|
||||||
peer = GameCenterManager.sharedInstance.peerPlayer
|
peer = GameCenterManager.sharedInstance.peerPlayer
|
||||||
@ -32,6 +35,13 @@ class HUD: GKEntity {
|
|||||||
peerLabel = SKLabelNode(text: peer?.displayName)
|
peerLabel = SKLabelNode(text: peer?.displayName)
|
||||||
peerUnitsLabel = SKLabelNode(text: "500")
|
peerUnitsLabel = SKLabelNode(text: "500")
|
||||||
|
|
||||||
|
roundTimerLabel = SKLabelNode(text: "")
|
||||||
|
roundTimerLabel.fontColor = UIColor.black
|
||||||
|
roundTimerLabel.fontSize = CGFloat(45)
|
||||||
|
roundTimerLabel.position = CGPoint(x: size.width * 0.5, y: size.height * 0.9 - 15)
|
||||||
|
|
||||||
|
self.roundTimer = RoundTimer()
|
||||||
|
|
||||||
spySkill = SingeClickButtonNode(
|
spySkill = SingeClickButtonNode(
|
||||||
textureName: "yellow_circle",
|
textureName: "yellow_circle",
|
||||||
text: "Spy",
|
text: "Spy",
|
||||||
@ -62,7 +72,8 @@ class HUD: GKEntity {
|
|||||||
peerUnitsLabel.position = CGPoint(x: size.width * 0.95, y: size.height * 0.9)
|
peerUnitsLabel.position = CGPoint(x: size.width * 0.95, y: size.height * 0.9)
|
||||||
setColor(labelNodes: [hostLabel,hostUnitsLabel,peerLabel,peerUnitsLabel])
|
setColor(labelNodes: [hostLabel,hostUnitsLabel,peerLabel,peerUnitsLabel])
|
||||||
|
|
||||||
addComponent(TimerComponent(text: "", anchorPoint: CGPoint(x: size.width * 0.5, y: size.height * 0.9), duration: 30))
|
roundTimer.initTimer()
|
||||||
|
startWithDuration()
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateUnitSum(){
|
func updateUnitSum(){
|
||||||
@ -80,4 +91,8 @@ class HUD: GKEntity {
|
|||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func startWithDuration(){
|
||||||
|
roundTimer.startTimer()
|
||||||
|
RoundCalculatorService.sharedInstance.isCalculating = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ final class GameCenterManager: NSObject, GKMatchmakerViewControllerDelegate ,GKM
|
|||||||
if let snapshotModel = try? jsonDecoder.decode(SnapshotModel.self, from: data) {
|
if let snapshotModel = try? jsonDecoder.decode(SnapshotModel.self, from: data) {
|
||||||
DataService.sharedInstance.snapshotModel = snapshotModel
|
DataService.sharedInstance.snapshotModel = snapshotModel
|
||||||
entityManager.updateSnapshotModel(snapshotModel: snapshotModel)
|
entityManager.updateSnapshotModel(snapshotModel: snapshotModel)
|
||||||
entityManager.getTimer().startWithDuration(duration: 31)
|
entityManager.getHUD()?.startWithDuration()
|
||||||
}
|
}
|
||||||
if let mapModel = try? jsonDecoder.decode(MapGenerationModel.self, from: data) {
|
if let mapModel = try? jsonDecoder.decode(MapGenerationModel.self, from: data) {
|
||||||
os_log("Peer hat Map erhalten", log: LOG, type: .info)
|
os_log("Peer hat Map erhalten", log: LOG, type: .info)
|
||||||
|
@ -38,6 +38,7 @@ class MultiplayerNetwork{
|
|||||||
|
|
||||||
func sendPlayerMoves(localRoundData: LocalRoundData) {
|
func sendPlayerMoves(localRoundData: LocalRoundData) {
|
||||||
if GameCenterManager.sharedInstance.isServer == false {
|
if GameCenterManager.sharedInstance.isServer == false {
|
||||||
|
print("I am client")
|
||||||
self.isSending = true
|
self.isSending = true
|
||||||
let encoder = JSONEncoder()
|
let encoder = JSONEncoder()
|
||||||
let encoded = (try? encoder.encode(localRoundData))!
|
let encoded = (try? encoder.encode(localRoundData))!
|
||||||
|
@ -128,8 +128,7 @@ class RoundCalculatorService {
|
|||||||
MultiplayerNetwork.sharedInstance.sendSnapshotModelToPlayers()
|
MultiplayerNetwork.sharedInstance.sendSnapshotModelToPlayers()
|
||||||
DataService.sharedInstance.snapshotModel = currentSnapshotModel
|
DataService.sharedInstance.snapshotModel = currentSnapshotModel
|
||||||
entityManager.updateSnapshotModel(snapshotModel: currentSnapshotModel!)
|
entityManager.updateSnapshotModel(snapshotModel: currentSnapshotModel!)
|
||||||
sleep(1)
|
entityManager.getHUD()?.startWithDuration()
|
||||||
entityManager.getTimer().startWithDuration(duration: 31)
|
|
||||||
os_log("Finished calculating Round", log: RoundCalculatorService.LOG, type: .info)
|
os_log("Finished calculating Round", log: RoundCalculatorService.LOG, type: .info)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
54
GoldWars/GoldWars/RoundTimer.swift
Normal file
54
GoldWars/GoldWars/RoundTimer.swift
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// RoundTimer.swift
|
||||||
|
// GoldWars
|
||||||
|
//
|
||||||
|
// Created by Jakob Haag on 28.05.20.
|
||||||
|
// Copyright © 2020 SP2. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
class RoundTimer: Timer {
|
||||||
|
|
||||||
|
var timer: Timer?
|
||||||
|
var timeLeft: Int = 0
|
||||||
|
var calculate = false
|
||||||
|
|
||||||
|
func initTimer() {
|
||||||
|
timer = Timer.scheduledTimer(
|
||||||
|
timeInterval: 1.0,
|
||||||
|
target: self,
|
||||||
|
selector: #selector(onTimerFires),
|
||||||
|
userInfo: nil,
|
||||||
|
repeats: true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func startTimer() {
|
||||||
|
timeLeft = 30
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func onTimerFires()
|
||||||
|
{
|
||||||
|
timeLeft = timeLeft - 1
|
||||||
|
|
||||||
|
EntityManager.gameEMInstance.updateTime(time: (timeLeft > 0 ? String(timeLeft) : "Syncing"))
|
||||||
|
|
||||||
|
if timeLeft == 0 {
|
||||||
|
RoundCalculatorService.sharedInstance.resetNumberOfAttacksAndFormats()
|
||||||
|
if !MultiplayerNetwork.sharedInstance.isSending {
|
||||||
|
MultiplayerNetwork.sharedInstance.sendPlayerMoves(playerMoves: DataService.sharedInstance.localPlayerMoves)
|
||||||
|
}
|
||||||
|
calculate = true
|
||||||
|
}
|
||||||
|
if timeLeft <= 0 {
|
||||||
|
if calculate
|
||||||
|
&& !RoundCalculatorService.sharedInstance.isCalculating
|
||||||
|
&& DataService.sharedInstance.didReceiveAllData()
|
||||||
|
&& GameCenterManager.sharedInstance.isServer {
|
||||||
|
RoundCalculatorService.sharedInstance.calculateRound()
|
||||||
|
calculate = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -76,7 +76,6 @@ class GameScene: SKScene{
|
|||||||
|
|
||||||
override func update(_ currentTime: TimeInterval) {
|
override func update(_ currentTime: TimeInterval) {
|
||||||
entityManager.getBackground()?.update(deltaTime: currentTime)
|
entityManager.getBackground()?.update(deltaTime: currentTime)
|
||||||
entityManager.getHUD()?.component(ofType: TimerComponent.self)?.update()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func addBaseDetails(touchLocation: CGPoint, spriteNode: SKNode?, touches: Set<UITouch>, event: UIEvent?, entity: GKEntity){
|
func addBaseDetails(touchLocation: CGPoint, spriteNode: SKNode?, touches: Set<UITouch>, event: UIEvent?, entity: GKEntity){
|
||||||
|
Loading…
Reference in New Issue
Block a user