mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-08-03 07:13:08 +00:00
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:
parent
6c8d39f86f
commit
1adcfb55cb
1 changed files with 23 additions and 2 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue