Add adjacency mapping

This commit is contained in:
Marcel Schwarz 2020-05-02 20:47:17 +02:00
parent 918979d750
commit 67a345e9bf

View File

@ -18,6 +18,7 @@ class TwoPlayerDefaultTestMap: MapProtocoll {
init(scene: SKScene, entityManager: EntityManager) { init(scene: SKScene, entityManager: EntityManager) {
self.entityManager = entityManager; self.entityManager = entityManager;
self.size = scene.size self.size = scene.size
self.adjacencyList = Dictionary()
} }
func adjacent(base: Base) -> Array<Base> { func adjacent(base: Base) -> Array<Base> {
@ -25,7 +26,8 @@ class TwoPlayerDefaultTestMap: MapProtocoll {
} }
func create() { func create() {
// Player one (leftest base)
// Create Bases
let basePlayerOne = Base( let basePlayerOne = Base(
position: CGPoint(x: self.size.width * 0.1, y: self.size.height / 2), position: CGPoint(x: self.size.width * 0.1, y: self.size.height / 2),
team: .team1 team: .team1
@ -48,12 +50,36 @@ class TwoPlayerDefaultTestMap: MapProtocoll {
Base(position: CGPoint(x: self.size.width * 0.75, y: self.size.height * 0.75)) Base(position: CGPoint(x: self.size.width * 0.75, y: self.size.height * 0.75))
] ]
// Player two (rightest base)
let basePlayerTwo = Base( let basePlayerTwo = Base(
position: CGPoint(x: self.size.width * 0.9, y: self.size.height / 2), position: CGPoint(x: self.size.width * 0.9, y: self.size.height / 2),
team: .team2 team: .team2
) )
// Create adjacency Mapping
adjacencyList.updateValue(column1, forKey: basePlayerOne)
column1.forEach({currBase in
adjacencyList[currBase] = Array<Base>()
adjacencyList[currBase]?.append(contentsOf: column2)
adjacencyList[currBase]?.append(basePlayerOne)
})
column2.forEach({currBase in
adjacencyList[currBase] = Array<Base>()
adjacencyList[currBase]?.append(contentsOf: column3)
adjacencyList[currBase]?.append(contentsOf: column1)
})
column3.forEach({currBase in
adjacencyList[currBase] = Array<Base>()
adjacencyList[currBase]?.append(basePlayerTwo)
adjacencyList[currBase]?.append(contentsOf: column3)
})
adjacencyList.updateValue(column3, forKey: basePlayerTwo)
// Add Bases to GameScene
entityManager.add(basePlayerOne) entityManager.add(basePlayerOne)
column1.forEach({base in entityManager.add(base)}) column1.forEach({base in entityManager.add(base)})