Merge branch '69-globales-unit-wachstum' into 'development'
Resolve "Globales Unit Wachstum" Closes #69 See merge request marcel.schwarz/software-projekt-2!101
This commit is contained in:
commit
392f59108b
@ -40,12 +40,12 @@ class Base: GKEntity{
|
||||
if ownershipPlayer == GKLocalPlayer.local {
|
||||
self.component(ofType: DefaultBaseComponent.self)?.labelNode.text = "\(unitCount)"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
func doPlayerMoveTypeToBase(base: Base, playerMoveType: PlayerMoveType, units: Int) -> [GKEntity]{
|
||||
if base.ownershipPlayer != GKLocalPlayer.local {
|
||||
base.changeOwnership = true
|
||||
}
|
||||
base.ownershipPlayer = self.ownershipPlayer
|
||||
self.unitCount -= units
|
||||
base.unitCount += units
|
||||
|
@ -117,7 +117,6 @@ class EntityManager {
|
||||
scene.addChild(fire)
|
||||
}
|
||||
}
|
||||
base.changeOwnership = false
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -129,6 +128,7 @@ class EntityManager {
|
||||
let snapBase = self.getSnapshotBaseById(baseId: base.baseID, snapshotModel: snapshotModel)
|
||||
var getOwnerBySnapBase: GKPlayer? = nil
|
||||
base.unitCount = snapBase.unitCount
|
||||
base.changeOwnership = false
|
||||
|
||||
if snapBase.ownership != nil {
|
||||
getOwnerBySnapBase = GameCenterManager.sharedInstance.getGKPlayerByUsername(displayName: snapBase.ownership!)
|
||||
@ -142,7 +142,6 @@ class EntityManager {
|
||||
} else {
|
||||
base.component(ofType: DefaultBaseComponent.self)?.labelNode.text = ""
|
||||
}
|
||||
base.changeOwnership = true
|
||||
base.ownershipPlayer = getOwnerBySnapBase
|
||||
if (entity.component(ofType: TeamComponent.self) != nil) {
|
||||
entity.component(ofType: TeamComponent.self)!.change(to: getTeamByPlayer(playerName: snapBase.ownership!), to: getOwnerBySnapBase!)
|
||||
|
@ -16,6 +16,7 @@ class RoundCalculatorService {
|
||||
let ATK_BOOST_MULTIPLICATOR = 1.1
|
||||
let DEF_BOOST_MULTIPLICATOR = 1.1
|
||||
|
||||
var allPlayerMoves: [String: [PlayerMove]] = [:]
|
||||
// TODO: Better data structure
|
||||
var boosts: [String: (Bool, Bool)] = [:] // First bool is atk boost, second is def boost
|
||||
|
||||
@ -61,7 +62,9 @@ class RoundCalculatorService {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (baseId, playerMovesByBase) in baseSpecificMoves {
|
||||
var combinePotentionalForces: [String: PlayerMove] = [:]
|
||||
|
||||
for playerMoves in playerMovesByBase {
|
||||
@ -122,6 +125,26 @@ class RoundCalculatorService {
|
||||
}
|
||||
baseSpecificMoves.removeValue(forKey: baseId)
|
||||
}
|
||||
var player1BaseCount = 0;
|
||||
var player2BaseCount = 0;
|
||||
let player1 = GameCenterManager.sharedInstance.hostingPlayer?.displayName
|
||||
let player2 = GameCenterManager.sharedInstance.peerPlayer?.displayName
|
||||
for baseEntry in currentSnapshotModel!.baseEntites {
|
||||
if baseEntry.ownership == player1 {
|
||||
player1BaseCount += 1
|
||||
} else if baseEntry.ownership == player2 {
|
||||
player2BaseCount += 1
|
||||
}
|
||||
}
|
||||
currentSnapshotModel?.baseEntites = currentSnapshotModel!.baseEntites.map { (BaseEntityModel) -> BaseEntityModel in
|
||||
if BaseEntityModel.ownership == player1 {
|
||||
BaseEntityModel.unitCount += player1BaseCount
|
||||
} else if BaseEntityModel.ownership == player2 {
|
||||
BaseEntityModel.unitCount += player2BaseCount
|
||||
}
|
||||
return BaseEntityModel
|
||||
}
|
||||
allPlayerMoves.removeAll()
|
||||
DataService.sharedInstance.localRoundData.localPlayerMoves.removeAll()
|
||||
DataService.sharedInstance.localRoundData.hasAttackBoost = false
|
||||
DataService.sharedInstance.localRoundData.hasDefenceBoost = false
|
||||
@ -133,10 +156,6 @@ class RoundCalculatorService {
|
||||
}
|
||||
|
||||
func collectBaseSpecificMoves() -> [Int: [String: [PlayerMove]]] {
|
||||
|
||||
var allPlayerMoves: [String: [PlayerMove]] = [:]
|
||||
|
||||
// collect moves from remote player
|
||||
for playerMove in DataService.sharedInstance.remotePlayerMoves {
|
||||
allPlayerMoves[playerMove.key] = playerMove.value.localPlayerMoves
|
||||
}
|
||||
@ -145,13 +164,11 @@ class RoundCalculatorService {
|
||||
DataService.sharedInstance.localRoundData.hasAttackBoost,
|
||||
DataService.sharedInstance.localRoundData.hasDefenceBoost
|
||||
)
|
||||
|
||||
boosts[GameCenterManager.sharedInstance.peerPlayer!.displayName] = (
|
||||
DataService.sharedInstance.remotePlayerMoves[GameCenterManager.sharedInstance.peerPlayer!.displayName]!.hasAttackBoost,
|
||||
DataService.sharedInstance.remotePlayerMoves[GameCenterManager.sharedInstance.peerPlayer!.displayName]!.hasDefenceBoost
|
||||
DataService.sharedInstance.remotePlayerMoves[GameCenterManager.sharedInstance.peerPlayer!.displayName]?.hasAttackBoost ?? false,
|
||||
DataService.sharedInstance.remotePlayerMoves[GameCenterManager.sharedInstance.peerPlayer!.displayName]?.hasDefenceBoost ?? false
|
||||
)
|
||||
|
||||
// collect moves from local player
|
||||
allPlayerMoves[GKLocalPlayer.local.displayName] = DataService.sharedInstance.localRoundData.localPlayerMoves
|
||||
|
||||
var baseSpecificMoves: [Int: [String: [PlayerMove]]] = [:]
|
||||
@ -169,9 +186,7 @@ class RoundCalculatorService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DataService.sharedInstance.remotePlayerMoves.removeAll()
|
||||
|
||||
return baseSpecificMoves
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ class RoundTimer: Timer {
|
||||
if timeLeft == 0 {
|
||||
RoundCalculatorService.sharedInstance.resetNumberOfAttacksAndFormats()
|
||||
if !MultiplayerNetwork.sharedInstance.isSending {
|
||||
MultiplayerNetwork.sharedInstance.sendPlayerMoves(playerMoves: DataService.sharedInstance.localPlayerMoves)
|
||||
MultiplayerNetwork.sharedInstance.sendPlayerMoves(localRoundData: DataService.sharedInstance.localRoundData)
|
||||
}
|
||||
calculate = true
|
||||
}
|
||||
|
@ -53,7 +53,6 @@ class GameScene: SKScene{
|
||||
addBaseDetails(touchLocation: touchLocation, spriteNode: spriteNode, touches: touches, event: event, entity: entity)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
@ -68,9 +67,7 @@ class GameScene: SKScene{
|
||||
}
|
||||
}
|
||||
checkSlider()
|
||||
|
||||
let bases = entityManager.getBasesByPlayer(for: GKLocalPlayer.local)
|
||||
|
||||
checkBases(bases: bases, touchLocation: touchLocation)
|
||||
}
|
||||
|
||||
@ -93,7 +90,6 @@ class GameScene: SKScene{
|
||||
anchorPoint: CGPoint(x: self.size.width / 2 , y: self.size.height / 2),
|
||||
gameScene: self,
|
||||
currentDraggedBase: currentDraggedBase, touchLocation: touchLocation, collisionBase: collisionBase))
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -142,6 +138,7 @@ class GameScene: SKScene{
|
||||
func checkBases(bases: Set<Base>, touchLocation: CGPoint){
|
||||
for base in bases {
|
||||
if atPoint(touchLocation) == base.component(ofType: DefaultBaseComponent.self)?.spriteNode {
|
||||
if !base.changeOwnership {
|
||||
if !isMoveTouch {
|
||||
currentDraggedBase = base
|
||||
}
|
||||
@ -151,6 +148,7 @@ class GameScene: SKScene{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func moveFireAndBase(base: Base, touchLocation: CGPoint){
|
||||
base.component(ofType: DefaultBaseComponent.self)?.spriteNode.position = touchLocation
|
||||
|
Loading…
Reference in New Issue
Block a user