set zPosistion on all Nodes

update host and peer Label Nodes
This commit is contained in:
Niko Jochim 2020-05-21 19:40:46 +02:00
parent bf8ce0c477
commit b2f84bc3f4
6 changed files with 51 additions and 41 deletions

View File

@ -11,26 +11,25 @@ import SpriteKit
import GameKit
class DefaultBaseComponent: GKComponent {
var spriteNode: BaseNode
var spriteNode: BaseNode
var labelNode : SKLabelNode?
init(texture: SKTexture, position: CGPoint) {
spriteNode = BaseNode(texture: texture, size: CGSize(width: 80, height: 80))
spriteNode.position = position
init(texture: SKTexture, position: CGPoint) {
spriteNode = BaseNode(texture: texture, size: CGSize(width: 80, height: 80))
spriteNode.position = position
spriteNode.zPosition = 2
super.init()
super.init()
labelNode = SKLabelNode(text: "")
labelNode?.fontColor = SKColor.black
labelNode?.horizontalAlignmentMode = .left
labelNode?.verticalAlignmentMode = .center
labelNode?.fontName = "AvenirNext-Bold"
labelNode?.fontSize = 15
labelNode?.position = CGPoint(x: position.x + 20 , y: position.y - 40 )
labelNode?.position = CGPoint(x: position.x + 30 , y: position.y - 50 )
labelNode?.zPosition = spriteNode.zPosition - 1
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

View File

@ -18,43 +18,34 @@ class PlayerInfoComponent: GKComponent {
var peerLabel:SKLabelNode
var peerUnitsLabel:SKLabelNode
var host: GKPlayer?
var peer: GKPlayer?
init(size: CGSize) {
var host: String?
var peer: String?
if MatchmakingHelper.sharedInstance.isServer {
host = GKLocalPlayer.local.displayName
peer = MatchmakingHelper.sharedInstance.mpMatch?.players[0].displayName
host = GKLocalPlayer.local
peer = MatchmakingHelper.sharedInstance.mpMatch?.players[0]
} else {
host = MatchmakingHelper.sharedInstance.mpMatch?.players[0].displayName
peer = GKLocalPlayer.local.displayName
host = MatchmakingHelper.sharedInstance.mpMatch?.players[0]
peer = GKLocalPlayer.local
}
hostLabel = SKLabelNode(text: host)
hostUnitsLabel = SKLabelNode(text: "500")
peerLabel = SKLabelNode(text: peer)
hostLabel = SKLabelNode(text: host?.displayName)
hostUnitsLabel = SKLabelNode(text: "500" )
peerLabel = SKLabelNode(text: peer?.displayName)
peerUnitsLabel = SKLabelNode(text: "500")
super.init()
hostLabel.position = CGPoint(x: size.width * 0.02, y: size.height * 0.95)
hostLabel.horizontalAlignmentMode = .left
peerLabel.position = CGPoint(x: size.width * 0.98, y: size.height * 0.95)
peerLabel.horizontalAlignmentMode = .right
hostUnitsLabel.position = CGPoint(x: size.width * 0.05, y: size.height * 0.9)
peerUnitsLabel.position = CGPoint(x: size.width * 0.95, y: size.height * 0.9)
setColor(labelNodes: [hostLabel,hostUnitsLabel,peerLabel,peerUnitsLabel])
}
func update(){
hostUnitsLabel.text = "\(EntityManager.sharedInstance.getUnitSum(by: host!))"
peerUnitsLabel.text = "\(EntityManager.sharedInstance.getUnitSum(by: peer!))"
}
func setColor(labelNodes: [SKLabelNode]) -> Void {

View File

@ -37,8 +37,11 @@ class Base: GKEntity{
addComponent(TeamComponent(team: team!, player: player!, position: spritePos))
self.unitCount = 500
}
if ownershipPlayer == GKLocalPlayer.local {
self.component(ofType: DefaultBaseComponent.self)?.labelNode?.text = "\(unitCount)"
}
self.component(ofType: DefaultBaseComponent.self)?.labelNode?.text = "\(unitCount)"
}
func doPlayerMoveTypeToBase(base: Base, playerMoveType: PlayerMoveType, units: Int) -> [GKEntity]{

View File

@ -150,13 +150,18 @@ class EntityManager {
let snapBase = self.getSnapshotBaseById(baseId: base.baseID, snapshotModel: snapshotModel)
var getOwnerBySnapBase: GKPlayer? = nil
base.unitCount = snapBase.unitCount
base.component(ofType: DefaultBaseComponent.self)?.labelNode?.text = "\(base.unitCount)"
if snapBase.ownership != nil {
getOwnerBySnapBase = MatchmakingHelper.sharedInstance.getGKPlayerByUsername(displayName: snapBase.ownership!)
} else {
entity.removeComponent(ofType: TeamComponent.self)
}
if getOwnerBySnapBase != nil {
if getOwnerBySnapBase == GKLocalPlayer.local {
base.component(ofType: DefaultBaseComponent.self)?.labelNode?.text = "\(base.unitCount)"
}else {
base.component(ofType: DefaultBaseComponent.self)?.labelNode?.text = ""
}
base.changeOwnership = true
base.ownershipPlayer = getOwnerBySnapBase
if (entity.component(ofType: TeamComponent.self) != nil) {
@ -174,6 +179,9 @@ class EntityManager {
}
}
}
getHUD()?.component(ofType: PlayerInfoComponent.self)?.update()
}
func getSnapshotBaseById(baseId: Int, snapshotModel: SnapshotModel) -> BaseEntityModel{
@ -254,8 +262,6 @@ class EntityManager {
return entities.filter{$0 is HUD}[0]
}
func getSnapshotModel() -> SnapshotModel {
let bases = entities.filter{$0 is Base}
var snapBase: [BaseEntityModel] = []
@ -271,4 +277,13 @@ class EntityManager {
func getTimer() -> TimerComponent {
return entities.filter{$0 is HUD}[0].component(ofType: TimerComponent.self)!
}
func getUnitSum(by player: GKPlayer) -> Int{
let bases = getBasesByPlayer(for: player)
var sum = 0
for base in bases {
sum += base.unitCount
}
return sum
}
}

View File

@ -26,6 +26,7 @@ class HUD: GKEntity {
anchorPoint: CGPoint(x: size.width * 0.5, y: size.height * 0.9), duration: 30))
addComponent(PlayerInfoComponent(size: size))
}
required init?(coder: NSCoder) {

View File

@ -46,7 +46,7 @@ class GameScene: SKScene{
isMoveTouch = false
currentDraggedBase!.component(ofType: DefaultBaseComponent.self)?.spriteNode.position = currentDraggedBase!.position
currentDraggedBase!.component(ofType: TeamComponent.self)?.fire.position = currentDraggedBase!.position
currentDraggedBase!.component(ofType: DefaultBaseComponent.self)?.labelNode?.position = CGPoint(x: currentDraggedBase!.position.x + 30, y: currentDraggedBase!.position.y - 50)
addAttackDetails(touchLocation: touchLocation)
}
else {
@ -152,6 +152,7 @@ class GameScene: SKScene{
func moveFireAndBase(base: Base, touchLocation: CGPoint){
base.component(ofType: DefaultBaseComponent.self)?.spriteNode.position = touchLocation
base.component(ofType: TeamComponent.self)?.fire.position = touchLocation
base.component(ofType: DefaultBaseComponent.self)?.labelNode?.position = CGPoint(x:touchLocation.x + 30, y: touchLocation.y - 50)
}
func showNearestBases(base: Base){