added Statemanager with Singleton, used to create and enter states, already with logging if entering state is un/successful
This commit is contained in:
parent
767548cb82
commit
3bbae779af
@ -111,6 +111,8 @@
|
||||
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>"; };
|
||||
ABC0C3722481509300387B8F /* MapUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapUtils.swift; sourceTree = "<group>"; };
|
||||
AE6BB1BF248030720063ECAE /* StateTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateTypes.swift; sourceTree = "<group>"; };
|
||||
AE6BB1C124807AC00063ECAE /* StateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateManager.swift; sourceTree = "<group>"; };
|
||||
C04783ED2468583F004961FB /* intro-music.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "intro-music.mp3"; sourceTree = "<group>"; };
|
||||
C04783EF24685995004961FB /* SettingsScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsScene.swift; sourceTree = "<group>"; };
|
||||
C05BB9C3247D890C00411249 /* SliderComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderComponent.swift; sourceTree = "<group>"; };
|
||||
@ -182,6 +184,8 @@
|
||||
9E0E459624796262009817A6 /* GameCenterManager.swift */,
|
||||
C04783EF24685995004961FB /* SettingsScene.swift */,
|
||||
3EAD889424801B6A0048A10A /* RoundTimer.swift */,
|
||||
AE6BB1BF248030720063ECAE /* StateTypes.swift */,
|
||||
AE6BB1C124807AC00063ECAE /* StateManager.swift */,
|
||||
);
|
||||
path = GoldWars;
|
||||
sourceTree = "<group>";
|
||||
@ -406,6 +410,7 @@
|
||||
9EC2FBA72476B1EC00ABF11F /* PlayerInfoComponent.swift in Sources */,
|
||||
AE6BB1C0248030720063ECAE /* StateTypes.swift in Sources */,
|
||||
9EEDE02D246FCD770096C735 /* SpinningLogoEntity.swift in Sources */,
|
||||
AE6BB1C224807AC00063ECAE /* StateManager.swift in Sources */,
|
||||
9E174C86245DD91500209FF0 /* ButtonComponent.swift in Sources */,
|
||||
11036113244B3E30008610AF /* MenuScene.swift in Sources */,
|
||||
C099579C246C5E5C0016AA22 /* DataService.swift in Sources */,
|
||||
|
51
GoldWars/GoldWars/StateManager.swift
Normal file
51
GoldWars/GoldWars/StateManager.swift
Normal file
@ -0,0 +1,51 @@
|
||||
//
|
||||
// StateManager.swift
|
||||
// GoldWars
|
||||
//
|
||||
// Created by Chauntalle Schüle on 29.05.20.
|
||||
// Copyright © 2020 SP2. All rights reserved.
|
||||
//
|
||||
|
||||
import GameKit
|
||||
import os
|
||||
|
||||
class StateManager{
|
||||
|
||||
static let stateManager = StateManager()
|
||||
|
||||
var stateMachine: GKStateMachine?
|
||||
var allowedState: StateTypes?
|
||||
let LOG = OSLog.init(subsystem: "StateManager", category: "StateManager")
|
||||
|
||||
func enterState(){
|
||||
switch allowedState {
|
||||
case .menuSt:
|
||||
if stateMachine?.enter(MenuState.self) == false {
|
||||
os_log("Failed entering Menu State", log: LOG, type: .info)
|
||||
}
|
||||
case .gameSt:
|
||||
if stateMachine?.enter(GameState.self) == false {
|
||||
os_log("Failed entering Game State", log: LOG, type: .info)
|
||||
}
|
||||
case .syncingSt:
|
||||
if stateMachine?.enter(SyncingState.self) == false {
|
||||
os_log("Failed entering Syncing State", log: LOG, type: .info)
|
||||
}
|
||||
case .endGameSt:
|
||||
if stateMachine?.enter(EndGameState.self) == false {
|
||||
os_log("Failed entering EndGame State", log: LOG, type: .info)
|
||||
}
|
||||
default:
|
||||
os_log("Allowed State was found nil, can't enter any State", log: LOG, type: .info)
|
||||
}
|
||||
}
|
||||
|
||||
func createStates(){
|
||||
let menuSt = MenuState()
|
||||
let syncingSt = SyncingState()
|
||||
let playingSt = GameState()
|
||||
let endGameSt = EndGameState()
|
||||
|
||||
stateMachine = GKStateMachine(states: [menuSt, syncingSt, playingSt, endGameSt])
|
||||
}
|
||||
}
|
@ -16,47 +16,6 @@ enum StateTypes {
|
||||
case endGameSt
|
||||
}
|
||||
|
||||
class StateManager{
|
||||
|
||||
static let stateManager = StateManager()
|
||||
|
||||
var stateMachine: GKStateMachine?
|
||||
var allowedState: StateTypes?
|
||||
let LOG = OSLog.init(subsystem: "StateManager", category: "StateManager")
|
||||
|
||||
func enterState(){
|
||||
switch allowedState {
|
||||
case .menuSt:
|
||||
if stateMachine?.enter(MenuState.self) == false {
|
||||
os_log("Failed entering Menu State", log: LOG, type: .info)
|
||||
}
|
||||
case .gameSt:
|
||||
if stateMachine?.enter(GameState.self) == false {
|
||||
os_log("Failed entering Game State", log: LOG, type: .info)
|
||||
}
|
||||
case .syncingSt:
|
||||
if stateMachine?.enter(SyncingState.self) == false {
|
||||
os_log("Failed entering Syncing State", log: LOG, type: .info)
|
||||
}
|
||||
case .endGameSt:
|
||||
if stateMachine?.enter(EndGameState.self) == false {
|
||||
os_log("Failed entering EndGame State", log: LOG, type: .info)
|
||||
}
|
||||
default:
|
||||
os_log("Allowed State was found nil, can't enter any State", log: LOG, type: .info)
|
||||
}
|
||||
}
|
||||
|
||||
func createStates(){
|
||||
let menuSt = MenuState()
|
||||
let syncingSt = SyncingState()
|
||||
let playingSt = GameState()
|
||||
let endGameSt = EndGameState()
|
||||
|
||||
stateMachine = GKStateMachine(states: [menuSt, syncingSt, playingSt, endGameSt])
|
||||
}
|
||||
}
|
||||
|
||||
class MenuState: GKState {
|
||||
|
||||
let LOG = OSLog.init(subsystem: "MenuState", category: "MenuState")
|
||||
|
Loading…
Reference in New Issue
Block a user