This repository has been archived by the owner on Mar 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameHud.swift
73 lines (55 loc) · 2.51 KB
/
GameHud.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//
// PanelNode.swift
// Bomberman
//
// Created by Wolfgang Schreurs on 07/05/16.
//
//
import SpriteKit
class GameHud: SKSpriteNode {
let timeNode = SKLabelNode(text: "00:00")
let p1Hud: PlayerHud
let p2Hud: PlayerHud
init(size: CGSize) {
let infoNodeSize = CGSize(width: 225, height: 380)
p1Hud = PlayerHud(size: infoNodeSize, forPlayer: .player1)
p2Hud = PlayerHud(size: infoNodeSize, forPlayer: .player2)
let texture = SKTexture(imageNamed: "Panel.png")
super.init(texture: texture, color: SKColor.black, size: size)
timeNode.zPosition = 10
timeNode.fontName = "TamilSangamMN-Bold"
timeNode.fontSize = 40
timeNode.position = CGPoint(x: size.width / 2, y: size.height / 2 - timeNode.frame.height / 2)
addChild(timeNode)
addChild(p1Hud)
p1Hud.position = CGPoint(x: 55, y: 590)
addChild(p2Hud)
p2Hud.position = CGPoint(x: 55, y: 115)
anchorPoint = CGPoint.zero
position = CGPoint.zero
blendMode = .replace
}
required init?(coder aDecoder: NSCoder) {
return nil
}
func updateTimeRemaining(_ timeRemaining: TimeInterval) {
let minutes = String(format: "%02d", Int(timeRemaining / 60))
let seconds = String(format: "%02d", Int(timeRemaining.truncatingRemainder(dividingBy: 60)))
timeNode.text = "\(minutes):\(seconds)"
}
func updateForPlayer(_ player: Player) {
let playerInfoNode = player.index == .player1 ? p1Hud : p2Hud
playerInfoNode.updateLives(player.lives)
playerInfoNode.updateHealth(player.health)
let explosionPowerActive = player.explosionPowerLimit.currentCount > 0
playerInfoNode.updatePower(PowerType.explosionSize, setActive: explosionPowerActive)
let bombPowerActive = player.bombPowerLimit.currentCount > 0
playerInfoNode.updatePower(PowerType.bombAdd, setActive: bombPowerActive)
let triggerPowerActive = player.bombTriggerPowerLimit.currentCount > 0
playerInfoNode.updatePower(PowerType.bombSpeed, setActive: triggerPowerActive)
let shieldPowerActive = player.shieldPowerLimit.currentCount > 0
playerInfoNode.updatePower(PowerType.shield, setActive: shieldPowerActive)
let movePowerActive = player.moveSpeedPowerLimit.currentCount > 0
playerInfoNode.updatePower(PowerType.moveSpeed, setActive: movePowerActive)
}
}