forked from Blightbuster/The-Forest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutoSaveMode.cs
84 lines (69 loc) · 1.59 KB
/
AutoSaveMode.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections;
using TheForest.Utils;
using UnityEngine;
public class AutoSaveMode : MonoBehaviour
{
private void Awake()
{
UnityEngine.Object.DontDestroyOnLoad(base.gameObject);
}
private void Start()
{
base.StartCoroutine(this.StartWhenready());
}
private void Update()
{
if (!Scene.FinishGameLoad)
{
return;
}
if ((Scene.SceneTracker && Scene.SceneTracker.allPlayers.Count == 0) || SteamDSConfig.isUsingDummyPlayer)
{
if (this.autosaveWhenEmpty)
{
this.autosaveWhenEmpty = false;
this.timer = (float)(60 * SteamDSConfig.GameAutoSaveIntervalMinutes);
base.StartCoroutine(this.AutoSave());
}
return;
}
this.autosaveWhenEmpty = true;
if (SteamDSConfig.GameAutoSaveIntervalMinutes > 0 && this.timer > 0f)
{
this.timer -= Time.deltaTime;
if (this.timer <= 0f)
{
this.timer = (float)(60 * SteamDSConfig.GameAutoSaveIntervalMinutes);
base.StartCoroutine(this.AutoSave());
}
}
}
private IEnumerator StartWhenready()
{
this.timer = 0f;
while (!Scene.FinishGameLoad)
{
yield return null;
}
this.timer = (float)(60 * SteamDSConfig.GameAutoSaveIntervalMinutes);
Debug.Log("Game autosave started");
yield break;
}
private IEnumerator AutoSave()
{
while (!Scene.FinishGameLoad)
{
yield return null;
}
SteamDSConfig.SetServerStatus(1);
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();
SteamDSConfig.SaveGame();
SteamDSConfig.SetServerStatus(0);
Debug.Log("Game saved");
yield break;
}
private float timer;
private bool autosaveWhenEmpty;
}