Skip to content
Snippets Groups Projects
Commit 57ee0072 authored by Olivia Foshaug Ingvaldsen's avatar Olivia Foshaug Ingvaldsen
Browse files

Merge branch '37-countdown-for-the-beginning-of-the-game' into 'master'

Resolve "Countdown for the beginning of the game"

Closes #37

See merge request !6
parents 7701113b 88472667
No related branches found
No related tags found
2 merge requests!7Master,!6Resolve "Countdown for the beginning of the game"
Pipeline #217136 passed with stage
in 4 minutes and 17 seconds
......@@ -90,6 +90,7 @@ class GameController(val game: Netrunner) {
fun deregisterGameEvents() {
// Note: Any registered `sock.on()`s made in this class MUST be deregistered here.
Client.sock.off("entities")
Client.sock.off("counter")
logger.debug("Game events deregistered")
// Note: this is not an elegant solution. It would be better for the server to emit
......
......@@ -10,6 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent
import com.badlogic.gdx.scenes.scene2d.Stage
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener
......@@ -36,13 +37,23 @@ class GameScreen(private val game: Netrunner, private val controller: GameContro
init {
val buttonStyle = TextButton.TextButtonStyle()
buttonStyle.font = game.skin.getFont("default-font")
buttonStyle.downFontColor = Color.RED;
buttonStyle.downFontColor = Color.RED
val exitButton = TextButton("Exit", buttonStyle) //bruk evt. game.skin
val exitButton = TextButton("Exit", buttonStyle) //bruk evt. game.skin
//if we want an exact position
//exitButton.setPosition(1000f, 10f)
// stage.addActor(exitButton)
val labelStyle = Label.LabelStyle()
labelStyle.font = game.skin.getFont("default-font")
labelStyle.fontColor = Color.WHITE
val label = Label(" ", labelStyle)
label.setFontScale(5F,5F)
label.setPosition(20f,20f)
stage.addActor(label)
exitButton.addListener(object : ClickListener() {
override fun clicked(event: InputEvent?, x: Float, y: Float) {
game.screen = MenuScreen(game)
......@@ -50,6 +61,23 @@ class GameScreen(private val game: Netrunner, private val controller: GameContro
}
})
Client.sock.on("counter") { it ->
if (it.isEmpty()) return@on
if(it[0] == "0"){
logger.debug("Du kom deg inn i ifen!")
label.setText("")}
else
label.setText(it[0].toString())
}
val table = Table()
table.setFillParent(true)
table.row()
......
......@@ -6,7 +6,6 @@ import tdt4240.netrunner.game.WorldGen
import tdt4240.netrunner.game.controllers.MovementController
import tdt4240.netrunner.model.game.EcsEngine
import tdt4240.netrunner.model.game.Entity
import tdt4240.netrunner.model.game.components.dynamic.GravityComponent
import tdt4240.netrunner.model.game.components.dynamic.VelocityComponent
import tdt4240.netrunner.model.game.factories.PlayerFactory
import tdt4240.netrunner.model.requests.JoinGameRequest
......@@ -14,7 +13,7 @@ import tdt4240.netrunner.model.response.EntityData
import tdt4240.netrunner.model.util.Vec2f
import tdt4240.netrunner.model.util.gsonImpl
import tdt4240.netrunner.server.controllers.GameController
import java.util.UUID
import java.util.*
import java.util.concurrent.ConcurrentHashMap
class GameRoom(val socketRoomID: String, val server: SocketIoServer, val controller: GameController){
......@@ -58,17 +57,28 @@ class GameRoom(val socketRoomID: String, val server: SocketIoServer, val control
if (System.currentTimeMillis() - createdAt >= MAX_WAIT_TIME * 1000 && players.size >= MIN_PLAYERS
|| players.size == MAX_PLAYERS) {
logger.info("Play threshold reached. Starting game")
started = true
// TODO: timer
// TODO: broadcast time remaining every second or so?
// How many players have joined is automatically broadcast whenever someone joins or leaves,
// so that doesn't need to be handled here.
prevTime = System.currentTimeMillis()
ecs.entities.addAll(players.values.toMutableList())
server.namespace("/").broadcast(socketRoomID, "game-started")
controller.notifyStart(this)
Thread.sleep(1000)
server.namespace("/").broadcast(socketRoomID, "counter", gsonImpl.toJson(3))
Thread.sleep(1000)
server.namespace("/").broadcast(socketRoomID, "counter", gsonImpl.toJson(2))
Thread.sleep(1000)
server.namespace("/").broadcast(socketRoomID, "counter", gsonImpl.toJson(1))
Thread.sleep(1000)
server.namespace("/").broadcast(socketRoomID, "counter", gsonImpl.toJson(0))
server.namespace("/").broadcast(socketRoomID, "game-started")
} else if (System.currentTimeMillis() - createdAt >= MAX_WAIT_TIME * 1000 && players.size == 0) {
synchronized(this) {
done = true
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment