diff --git a/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift b/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift index b1256a2bc4cc597fac070abd1da4055047164e9f..62d9ea909b6d4a8c2909429b139406ce8d3a1199 100644 --- a/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift +++ b/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift @@ -59,19 +59,19 @@ class LocalTeamPlayManager: NSObject, MCNearbyServiceAdvertiserDelegate, MCBrows let action = try decoder.decode(SessionAction.self, from: data) switch action { case .setup(.selectedLevel(let level)): - NotificationCenter.default.post(name: .levelSelectedFromHost, object: nil, userInfo: ["level": level]) + DispatchQueue.main.async{ NotificationCenter.default.post(name: .levelSelectedFromHost, object: nil, userInfo: ["level": level]) } case .setup(.responseForLevelSetting( _)): - self.delegate?.receivedLevelConfirmation(for: peerID) + DispatchQueue.main.async{ self.delegate?.receivedLevelConfirmation(for: peerID) } case .setup(.syncCharacterIndexForGameScene(let playersInfo)): - self.delegate?.syncCharacterIndexForGameScene(playersInfo: playersInfo) + DispatchQueue.main.async{ self.delegate?.syncCharacterIndexForGameScene(playersInfo: playersInfo) } case .setup(.responseForCharacterInfoSyncDone(let done)): - self.delegate?.playerSyncDoneReceived(for: peerID, isDone: done) + DispatchQueue.main.async{ self.delegate?.playerSyncDoneReceived(for: peerID, isDone: done) } case .setup(.startGame(let start)): - NotificationCenter.default.post(name: .startGame, object: nil, userInfo: ["playerInfoSync": start]) + DispatchQueue.main.async{ NotificationCenter.default.post(name: .startGame, object: nil, userInfo: ["playerInfoSync": start]) } case .setup(.gameOver(_)): NotificationCenter.default.post(name: .gameResultReceived, object: nil, userInfo: ["result": "fail"]) case .setup(.gameSceneLoaded(let isReady)): - self.delegate?.playersGameSceneLoadStateReceived(for: peerID, isReady: isReady) + DispatchQueue.main.async{ self.delegate?.playersGameSceneLoadStateReceived(for: peerID, isReady: isReady)} case .setup(.gameSuccess(_)): NotificationCenter.default.post(name: .gameResultReceived, object: nil, userInfo: ["result": "success"]) case .gamePhysics(let characterActionData): @@ -79,11 +79,15 @@ class LocalTeamPlayManager: NSObject, MCNearbyServiceAdvertiserDelegate, MCBrows case .syncAllCharacters(let syncData): delegate?.allChracterActionsReceived(charactersActions: syncData.data) case .setup(.clientsConfiguration(let config)): - let index = allPlayersPeerIDs!.firstIndex(of: peerID)! + DispatchQueue.main.async{ + let index = self.allPlayersPeerIDs!.firstIndex(of: peerID)! CharacterManager.sharedInstance.addNewConfigurationServer(config: config, for: peerID, for: index) - delegate?.receivedNewCustomization(config: config, for: peerID) + self.delegate?.receivedNewCustomization(config: config, for: peerID) + } case .setup(.dismissedInvitation(let value)): + DispatchQueue.main.async { NotificationCenter.default.post(name: .dimissedInvitationBrowserClient , object: nil, userInfo: ["value": value]) + } } } catch { debugPrint("receive - decoding error: \(error)")