func (gamestate *GameState) StartLevel(levelIndex int, screen *tl.Screen) { gamestate.LevelIndex = levelIndex gamestate.Level = gamestate.CreateLevelByIndex() gamestate.Bullets = make([]*Bullet, 0) gamestate.Player = NewPlayer(gamestate.Level.StartX, gamestate.Level.StartY) gamestate.Level.AddEntity(gamestate.Player) screen.SetLevel(gamestate.Level) screen.AddEntity(gamestate.Player.Score) screen.AddEntity(gamestate.Player.Level) screen.AddEntity(gamestate.Player.Health) // animate the beasts go func() { for { for _, enemy := range TheGameState.Level.Enemies { enemy.Animate() } time.Sleep(500 * time.Millisecond) } }() }