adds StateName generic to EntityStateMachine

This commit is contained in:
Igor Kravchenko 2020-09-29 12:19:47 +03:00
parent 08e20d1656
commit 81e18ba443
2 changed files with 6 additions and 7 deletions

View File

@ -166,8 +166,8 @@ public class StateComponentMapping {
// MARK: -
public class EntityStateMachine {
private var states: [String: EntityState]
public class EntityStateMachine<StateName: Hashable> {
private var states: [StateName: EntityState]
private var currentState: EntityState?
@ -178,18 +178,18 @@ public class EntityStateMachine {
states = [:]
}
@discardableResult public func addState(name: String, state: EntityState) -> Self {
@discardableResult public func addState(name: StateName, state: EntityState) -> Self {
states[name] = state
return self
}
public func createState(name: String) -> EntityState {
public func createState(name: StateName) -> EntityState {
let state = EntityState()
states[name] = state
return state
}
public func changeState(name: String) {
public func changeState(name: StateName) {
guard let newState = states[name] else {
fatalError("Entity state '\(name)' doesn't exist")
}

View File

@ -223,9 +223,8 @@ class EntityStateTests: XCTestCase {
}
class EntityStateMachineTests: XCTestCase {
var nexus = Nexus()
var fsm = EntityStateMachine(entity: .init(nexus: .init(), id: .invalid))
var fsm = EntityStateMachine<String>(entity: .init(nexus: .init(), id: .invalid))
var entity = Entity(nexus: .init(), id: .init(rawValue: 1))
override func setUp() {