Save room to online storage when the room is closed (#122)

* save game when room end

* Only save room when there is existed room
This commit is contained in:
giongto35 2019-10-23 03:49:25 +08:00 committed by GitHub
parent 6c8d39f86f
commit 1adcfb55cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -253,8 +253,13 @@ func (r *Room) Close() {
}
r.IsRunning = false
log.Println("Closing room", r.ID)
log.Println("Closing director of room ", r.ID)
log.Println("Closing room and director of room ", r.ID)
// Save game before quit. Only save for game which was previous saved to avoid flooding database
if r.isRoomExisted() {
log.Println("Saved Game before closing room")
r.SaveGame()
}
r.director.Close()
log.Println("Closing input of room ", r.ID)
close(r.inputChannel)
@ -265,6 +270,22 @@ func (r *Room) Close() {
//close(r.audioChannel)
}
func (r *Room) isRoomExisted() bool {
// Check if room is in online storage
_, err := r.onlineStorage.LoadFile(r.ID)
if err == nil {
return true
}
// Check if room is in local
savepath := util.GetSavePath(r.ID)
if r.isGameOnLocal(savepath) {
return true
}
return false
}
// SaveGame will save game to local and trigger a callback to store game on onlineStorage, so the game can be accessed later
func (r *Room) SaveGame() error {
onlineSaveFunc := func() error {