|
|
|
@ -3,10 +3,13 @@ package com.example.mathseduc
|
|
|
|
|
import android.content.Context
|
|
|
|
|
import android.content.Intent
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.os.Handler
|
|
|
|
|
import android.os.Looper
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.view.ViewGroup
|
|
|
|
|
import android.widget.ArrayAdapter
|
|
|
|
|
import android.widget.Button
|
|
|
|
|
import android.widget.ListView
|
|
|
|
|
import android.widget.TextView
|
|
|
|
|
import androidx.activity.OnBackPressedCallback
|
|
|
|
@ -15,36 +18,36 @@ import com.example.mathseduc.controllers.ControllerLobby
|
|
|
|
|
import com.example.mathseduc.controllers.ControllerPlayer
|
|
|
|
|
import com.example.mathseduc.controllers.ControllerUtiliser
|
|
|
|
|
import com.example.mathseduc.models.Player
|
|
|
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
|
import okhttp3.MultipartBody
|
|
|
|
|
|
|
|
|
|
class ServerDetailsActivity : AppCompatActivity() {
|
|
|
|
|
|
|
|
|
|
private var playerList: List<Player> = emptyList()
|
|
|
|
|
private lateinit var playerAdapter: PlayerAdapter
|
|
|
|
|
private val handler = Handler(Looper.getMainLooper())
|
|
|
|
|
private val refreshInterval: Long = 2000
|
|
|
|
|
|
|
|
|
|
private val onBackPressedCallback: OnBackPressedCallback = object : OnBackPressedCallback(true) {
|
|
|
|
|
override fun handleOnBackPressed() {
|
|
|
|
|
MyBackPressed()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
|
|
|
|
|
|
|
|
|
|
setContentView(R.layout.activity_server_details)
|
|
|
|
|
|
|
|
|
|
val serverName = intent.getStringExtra("serverName")
|
|
|
|
|
|
|
|
|
|
// Now you can use the data as needed, for example, display it in a TextView
|
|
|
|
|
val serverNameTextView = findViewById<TextView>(R.id.titleServerDetails)
|
|
|
|
|
serverNameTextView.text = serverName
|
|
|
|
|
|
|
|
|
|
val lobbyId = intent.getIntExtra("lobbyId", -1)
|
|
|
|
|
|
|
|
|
|
if (savedInstanceState != null) {
|
|
|
|
|
playerList = savedInstanceState?.getParcelableArrayList("playerList") ?: emptyList() //TODO deprecated c'est pas normal !!!
|
|
|
|
|
playerList = savedInstanceState?.getParcelableArrayList("playerList") ?: emptyList()
|
|
|
|
|
} else {
|
|
|
|
|
// Si l'état d'instance est nul, récupérez la liste des joueurs normalement
|
|
|
|
|
val playerId = ControllerPlayer.getPlayersIdFromLobbyId(lobbyId)
|
|
|
|
|
if (playerId != null) {
|
|
|
|
|
playerList = playerId.mapNotNull { playerId ->
|
|
|
|
@ -54,36 +57,86 @@ class ServerDetailsActivity : AppCompatActivity() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val listViewPlayers = findViewById<ListView>(R.id.listViewPlayers)
|
|
|
|
|
val playerAdapter = PlayerAdapter(this, playerList)
|
|
|
|
|
playerAdapter = PlayerAdapter(this, playerList)
|
|
|
|
|
listViewPlayers.adapter = playerAdapter
|
|
|
|
|
|
|
|
|
|
handler.postDelayed(refreshRunnable, refreshInterval)
|
|
|
|
|
|
|
|
|
|
val btnLaunchQuiz = findViewById<Button>(R.id.btnLaunchQuiz)
|
|
|
|
|
|
|
|
|
|
if (ControllerLobby.PlayerCreatorIdPresentInLobby(MainActivity.idPlayerConnected, lobbyId)) {
|
|
|
|
|
btnLaunchQuiz.visibility = View.VISIBLE
|
|
|
|
|
btnLaunchQuiz.setOnClickListener {
|
|
|
|
|
|
|
|
|
|
val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM)
|
|
|
|
|
formDataBuilder.addFormDataPart("launched", "1")
|
|
|
|
|
|
|
|
|
|
ControllerLobby.updateLobbyLauched(lobbyId,formDataBuilder)
|
|
|
|
|
|
|
|
|
|
val intent = Intent(this, QuizMultiActivity::class.java)
|
|
|
|
|
intent.putExtra("lobbyId", lobbyId)
|
|
|
|
|
startActivity(intent)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
btnLaunchQuiz.visibility = View.GONE
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onSaveInstanceState(outState: Bundle) {
|
|
|
|
|
super.onSaveInstanceState(outState)
|
|
|
|
|
// Save the player list to the instance state
|
|
|
|
|
outState.putParcelableArrayList("playerList", ArrayList(playerList))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun MyBackPressed() {
|
|
|
|
|
private val refreshRunnable: Runnable = object : Runnable {
|
|
|
|
|
override fun run() {
|
|
|
|
|
val lobbyId = intent.getIntExtra("lobbyId", -1)
|
|
|
|
|
|
|
|
|
|
val playerId = ControllerPlayer.getPlayersIdFromLobbyId(lobbyId)
|
|
|
|
|
if (playerId != null) {
|
|
|
|
|
playerList = playerId.mapNotNull { playerId ->
|
|
|
|
|
ControllerPlayer.getPlayerInfoById(playerId.toString())
|
|
|
|
|
}
|
|
|
|
|
playerAdapter.clear()
|
|
|
|
|
playerAdapter.addAll(playerList)
|
|
|
|
|
playerAdapter.notifyDataSetChanged()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val btnLaunchQuiz = findViewById<Button>(R.id.btnLaunchQuiz)
|
|
|
|
|
|
|
|
|
|
if (ControllerLobby.PlayerCreatorIdPresentInLobby(MainActivity.idPlayerConnected, lobbyId)) {
|
|
|
|
|
btnLaunchQuiz.visibility = View.VISIBLE
|
|
|
|
|
} else {
|
|
|
|
|
btnLaunchQuiz.visibility = View.GONE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(ControllerLobby.lobbyIsLaunched(lobbyId)){
|
|
|
|
|
val intent = Intent(this@ServerDetailsActivity, QuizMultiActivity::class.java)
|
|
|
|
|
intent.putExtra("lobbyId", lobbyId)
|
|
|
|
|
startActivity(intent)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
handler.postDelayed(this, refreshInterval)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun MyBackPressed() {
|
|
|
|
|
val lobbyId = intent.getIntExtra("lobbyId", -1)
|
|
|
|
|
|
|
|
|
|
ControllerUtiliser.DeleteUtiliserForLobby(MainActivity.idPlayerConnected, lobbyId)
|
|
|
|
|
|
|
|
|
|
if (ControllerLobby.PlayerCreatorIdPresentInLobby(MainActivity.idPlayerConnected, lobbyId)) {
|
|
|
|
|
|
|
|
|
|
val idNextPlayerCreator = ControllerUtiliser.getIdNextPlayerInLobby(lobbyId)
|
|
|
|
|
|
|
|
|
|
if (idNextPlayerCreator == -1) {
|
|
|
|
|
ControllerLobby.deleteLobby(lobbyId)
|
|
|
|
|
} else {
|
|
|
|
|
val formDataBuilder = MultipartBody.Builder().setType(MultipartBody.FORM)
|
|
|
|
|
|
|
|
|
|
formDataBuilder.addFormDataPart("idplayercreator", idNextPlayerCreator.toString())
|
|
|
|
|
|
|
|
|
|
ControllerLobby.updateLobbyIdCreatorLobby(lobbyId, formDataBuilder)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
handler.removeCallbacks(refreshRunnable)
|
|
|
|
|
finish()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -100,9 +153,7 @@ class ServerDetailsActivity : AppCompatActivity() {
|
|
|
|
|
val playerNameTextView = currentPlayerView!!.findViewById<TextView>(R.id.playerName)
|
|
|
|
|
playerNameTextView.text = getItem(position)?.nickname ?: "Unknown"
|
|
|
|
|
|
|
|
|
|
// You can customize the view further if needed
|
|
|
|
|
|
|
|
|
|
return currentPlayerView
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|