class MainScreen extends ScreenAdapter {
lazy val camera = new OrthographicCamera()
val batch: SpriteBatch = new SpriteBatch()
var tick = 1L
implicit val actorSystem = ActorSystem("game")
implicit val materializer = ActorMaterializer() (1)
val tickSource: Source[Nothing, ActorRef] = ??? (3)
var tickActor: Option[ActorRef] = None (4)
lazy val font = {
val f = new BitmapFont()
f.getData.setScale(2f)
f
}
override def show() = {
camera.setToOrtho(false, 800, 480)
val tickSettingFlow = Flow[TickDelta].map { td =>
tick += 1
td
} (5)
val graph = tickSource.via(tickSettingFlow).to(Sink.ignore) (6)
tickActor = Some(graph.run()) (7)
}
override def render(delta: TickDelta) = {
tickActor.foreach(_ ! delta) (8)
//print tick
Gdx.gl.glClearColor(0, 0, 0.5f, 1)
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
camera.update()
batch.setProjectionMatrix(camera.combined)
batch.begin()
font.draw(batch, s"Tick: $tick", 0, font.getCapHeight)
batch.end()
}
override def dispose(): Unit = {
actorSystem.terminate() (2)
}
}
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Email