bon même le return ne fonctionne pas comme il faut, il me renvoi les données que de temps en temps… je met un (gros) bout du code pour que tu comprennes ce que j’essaie de faire… les fonctions doivent être appeler depuis n’importe quel activités, pour actualiser les points etc, les variables doivent être a jour pour quand une activité demande l’info…
Sur Xcode en faisant ça, tout fonctionne, mais Android non, et je ne comprend pas pourquoi.
class gérerInfo {
var pieceJoueur = 0
var gradeJoueur = 0
var pointJoueur = 0
var pointGagnerChasse = 0
var pieceGagnerChasse = 0
var pubAccepter = true
var prénomJoueur = « bob »
var niveauJoueur = « »
var jeu = pagePrincipal()
fun infoJoueur() {
auth = FirebaseAuth.getInstance()
database = FirebaseDatabase.getInstance()
val user = auth.currentUser
val ref = database?.reference!!
ref.child("users").child(user?.uid!!).addListenerForSingleValueEvent(object :
ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
prénomJoueur = snapshot.child("prénom").value.toString()
pieceJoueur = snapshot.child("pièces").value.toString().toInt()
gradeJoueur = snapshot.child("grade").value.toString().toInt()
pointJoueur = snapshot.child("points").value.toString().toInt()
niveauJoueur = snapshot.child("niveau").value.toString()
pubAccepter = snapshot.child("pubAccepter").value.toString().toBoolean()
jeu.save.putString("prénomJoueur", prénomJoueur).apply()
jeu.save.putInt("pièceJoueur", pieceJoueur).apply()
jeu.save.putInt("gradeJoueur", gradeJoueur).apply()
jeu.save.putInt("pointJoueur", pointJoueur).apply()
jeu.save.putString("niveauJoueur", niveauJoueur).apply()
jeu.save.putBoolean("pubAccepter", pubAccepter).apply()
conversionPointEnGrade()
récupérerPointChasseCreer()
}
override fun onCancelled(error: DatabaseError) {
}
})
}
fun sauvegarderInfoJoueur() {
auth = FirebaseAuth.getInstance()
database = FirebaseDatabase.getInstance()
val user = auth.currentUser
val ref = database?.reference!!
prénomJoueur = jeu.read.getString("prénomJoueur", "No imported").toString()
pieceJoueur = jeu.read.getInt("pièceJoueur", 0)
gradeJoueur = jeu.read.getInt("gradeJoueur", 0)
pointJoueur = jeu.read.getInt("pointJoueur", 0)
niveauJoueur = jeu.read.getString("niveauJoueur", "").toString()
pubAccepter = jeu.read.getBoolean("pubAccepter", true)
ref.child("users").child(user?.uid!!).child("pièces").setValue(pieceJoueur)
ref.child("users").child(user?.uid!!).child("points").setValue(pointJoueur)
ref.child("users").child(user?.uid!!).child("grade").setValue(gradeJoueur)
ref.child("users").child(user?.uid!!).child("pubAccepter").setValue(pubAccepter)
ref.child("users").child(user?.uid!!).child("niveau").setValue(niveauJoueur)
}
fun ajoutPiècesJoueur(pièceGagner: Int) {
pieceJoueur = jeu.read.getInt("pièceJoueur", 0)
pieceJoueur += pièceGagner
jeu.save.putInt("pièceJoueur", pieceJoueur).apply()
sauvegarderInfoJoueur()
}
fun ajoutPointJoueur(pointGagner: Int) {
pointJoueur = jeu.read.getInt("pointJoueur", 0)
pointJoueur += pointGagner
jeu.save.putInt("pointJoueur", pointJoueur).apply()
conversionPointEnGrade()
sauvegarderInfoJoueur()
}
fun ajoutGradeJoueur(gradeGagner: Int) {
gradeJoueur = jeu.read.getInt("gradeJoueur", 0)
gradeJoueur += gradeGagner
jeu.save.putInt("pointJoueur", pointJoueur).apply()
niveauDuJoueur()
sauvegarderInfoJoueur()
}
fun achatSupprimerPub() {
auth = FirebaseAuth.getInstance()
database = FirebaseDatabase.getInstance()
val user = auth.currentUser
val ref = database?.reference!!
jeu.save.putBoolean("pubAccepter", true).apply()
ref.child("users").child(user?.uid!!).child("pubAccepter").setValue(false)
ref.child("users").child(user?.uid!!).child("paiement").child("supprimerPub")
.setValue("$formatted + paiement pub supprimer")
pubAccepter = false
}
fun achatPièces(nombrePieceAcheter: Int) {
auth = FirebaseAuth.getInstance()
database = FirebaseDatabase.getInstance()
val user = auth.currentUser
val ref = database?.reference!!
pieceJoueur = jeu.read.getInt("pièceJoueur", 0)
pieceJoueur += nombrePieceAcheter
jeu.save.putInt("pièceJoueur", pieceJoueur).apply()
ref.child("users").child(user?.uid!!).child("pièces").setValue(pieceJoueur)
ref.child("users").child(user?.uid!!).child("paiement").child("achatPièces")
.child("Le $formatted").setValue("Achat de $nombrePieceAcheter pièces")
}
fun récupérerPointChasseCreer() {
database = FirebaseDatabase.getInstance()
val ref = database?.reference!!
ref.child("JoueurInscrit").child("prénom").child(prénomJoueur).child("pointObtenuChasse")
.addListenerForSingleValueEvent(object :
ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
pointGagnerChasse = snapshot.child("points").value.toString().toInt()
pieceGagnerChasse = snapshot.child("pièces").value.toString().toInt()
jeu.read.getInt("pointGagnerChasse", pointGagnerChasse)
jeu.read.getInt("pieceGagnerChasse", pieceGagnerChasse)
}
override fun onCancelled(error: DatabaseError) {
}
})
}
fun supprimerPointChasseCreer() {
database = FirebaseDatabase.getInstance()
val ref = database?.reference!!
ref.child("JoueurInscrit").child("prénom").child(prénomJoueur).child("pointObtenuChasse")
.child("points").removeValue()
ref.child("JoueurInscrit").child("prénom").child(prénomJoueur).child("pointObtenuChasse")
.child("pièces").removeValue()
}
fun conversionPointEnGrade() {
pointJoueur = jeu.read.getInt("pointJoueur", 0)
gradeJoueur = jeu.read.getInt("gradeJoueur", 0)
if (gradeJoueur >= 100 && pointJoueur >= 15000) {
gradeJoueur += 1
pointJoueur -= 15000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 80 && gradeJoueur <= 99 && pointJoueur >= 10000) {
gradeJoueur += 1
pointJoueur -= 10000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 70 && gradeJoueur <= 79 && pointJoueur >= 6000) {
gradeJoueur += 1
pointJoueur -= 6000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 50 && gradeJoueur <= 69 && pointJoueur >= 5000) {
gradeJoueur += 1
pointJoueur -= 5000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 30 && gradeJoueur <= 49 && pointJoueur >= 3000) {
gradeJoueur += 1
pointJoueur -= 3000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 20 && gradeJoueur <= 29 && pointJoueur >= 2000) {
gradeJoueur += 1
pointJoueur -= 2000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 11 && gradeJoueur <= 19 && pointJoueur >= 1500) {
gradeJoueur += 1
pointJoueur -= 1500
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 4 && gradeJoueur <= 10 && pointJoueur >= 1000) {
gradeJoueur += 1
pointJoueur -= 1000
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
}
if (gradeJoueur >= 0 && gradeJoueur <= 3 && pointJoueur >= 500) {
gradeJoueur += 1
pointJoueur -= 500
jeu.save.putInt("gradeJoueur", 0).apply()
jeu.save.putInt("pointJoueur", 0).apply()
conversionPointEnGrade()
} else {
sauvegarderInfoJoueur()
niveauDuJoueur()
}
}
et sur les activités, j’appelle les fonctions, par exemple gérerInfo.infoJoueur() ou gérerInfo.ajoutGradeJoueur(3) etc. mais les variables quand elles sont appelé sont toujours celle par défaut, et le getSharedPréference ne marche pas…