In my project I am loading various players from my database before entering my gamescene. The problem is I go to various places to load different variables. Is it possible to set some sort of return statement to make a function wait to continue until after each firebase function is done loading? This is the big function that calls various small ones. This I'm sure is a quick fix I just am new to Firebase. Thanks in advance!
//quickevent
loading.isHidden = false
gameType = 3
isMainCard = false
let mainCardFighterInt = Int(arc4random_uniform(3)) + 1
let undercardFighterInt = Int(arc4random_uniform(5)) + 1
if mainCardFighterInt == 1 {
mainCardFighter.ID = USfighter1.ID
}
if mainCardFighterInt == 2 {
mainCardFighter.ID = USfighter2.ID
}
if mainCardFighterInt == 3 {
mainCardFighter.ID = USfighter3.ID
}
loadMainCardForFight()
//set underCard Fighter now
if undercardFighterInt == 1 {
underCardFighter.ID = USfighter4.ID
}
if undercardFighterInt == 2 {
underCardFighter.ID = USfighter5.ID
}
if undercardFighterInt == 3 {
underCardFighter.ID = USfighter6.ID
}
if undercardFighterInt == 4 {
underCardFighter.ID = USfighter7.ID
}
if undercardFighterInt == 5 {
underCardFighter.ID = USfighter8.ID
}
loadUnderCardForFight()
//find what guy you are playing
findMainCard = false
let randomForUndercard = Int(arc4random_uniform(100)) + 1
if randomForUndercard >= 95 {
findGoldPlayerToFight()
}
if randomForUndercard >= 55 && randomForUndercard <= 94 {
findSilverPlayerToFight()
}
if randomForUndercard <= 54 {
findBronzePlayerToFight()
}
loadOpponentUnderCard()
//find main card now
findMainCard = true
let randomForMainCard = Int(arc4random_uniform(100)) + 1
if randomForMainCard >= 95 {
findDiamondPlayerToFight()
}
if randomForMainCard >= 65 && randomForMainCard <= 94 {
findElitePlayerToFight()
}
if randomForMainCard <= 64 {
findGoldPlayerToFight()
}
loadOpponentMainCard()
//Actually enter game
let nextScene = GameScene(fileNamed: "GameScene")
nextScene!.scaleMode = scaleMode
self.view?.presentScene(nextScene)
The functions that load from firebase (if this is relevant) are: loadMainCardForFight, loadUnderCardForFight, findGoldPlayerToFight (bronze and the others), loadOpponentUndercard and loadOpponentMainCard.
CODE AFTER SUGGESTIONS, new error: takes infinate time to load. This is the code
//quickevent
loading.isHidden = false
gameType = 3
isMainCard = false
let mainCardFighterInt = Int(arc4random_uniform(3)) + 1
let undercardFighterInt = Int(arc4random_uniform(5)) + 1
if mainCardFighterInt == 1 {
mainCardFighter.ID = USfighter1.ID
}
if mainCardFighterInt == 2 {
mainCardFighter.ID = USfighter2.ID
}
if mainCardFighterInt == 3 {
mainCardFighter.ID = USfighter3.ID
}
loadMainCardForFight{
//set underCard Fighter now
if undercardFighterInt == 1 {
underCardFighter.ID = USfighter4.ID
}
if undercardFighterInt == 2 {
underCardFighter.ID = USfighter5.ID
}
if undercardFighterInt == 3 {
underCardFighter.ID = USfighter6.ID
}
if undercardFighterInt == 4 {
underCardFighter.ID = USfighter7.ID
}
if undercardFighterInt == 5 {
underCardFighter.ID = USfighter8.ID
}
self.loadUnderCardForFight{
//find what guy you are playing
findMainCard = false/*
let randomForUndercard = Int(arc4random_uniform(100)) + 1
if randomForUndercard >= 95 {
findGoldPlayerToFight()
}
if randomForUndercard >= 55 && randomForUndercard <= 94 {
findSilverPlayerToFight()
}
if randomForUndercard <= 54 {
findBronzePlayerToFight()
}*/
//findBronzePlayerToFight{
//
//}
opponentUnderCard.ID = 26
self.loadOpponentUnderCard{
//find main card now
findMainCard = true
/*let randomForMainCard = Int(arc4random_uniform(100)) + 1
if randomForMainCard >= 95 {
findDiamondPlayerToFight()
}
if randomForMainCard >= 65 && randomForMainCard <= 94 {
findElitePlayerToFight()
}
if randomForMainCard <= 64 {
findGoldPlayerToFight()
}*/
opponentMainCard.ID = 26
self.loadOpponentMainCard{
//Actually enter game
let nextScene = GameScene(fileNamed: "GameScene")
nextScene!.scaleMode = self.scaleMode
self.view?.presentScene(nextScene)
}
}
}
}
}