-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameManager.cs
136 lines (107 loc) · 5.34 KB
/
GameManager.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour {
[Header("- Player Info")]
public float money;
public float moneyIncrement = 10;
[Header("- Planet Info")]
public List<Machine> allMachines = new List<Machine>();
public List<Pocket> allPockets = new List<Pocket>();
public float polutionIncrement;
[Header("- Cost")]
public int fuelBuildingCost;
public int fuelUpgradePumpCost, fuelUpgradeFilterCost, fuelUpgradeRefineryCost;
public int cleanerBuildingCost;
public int cleanerUpgradeFilterCost, cleanerUpgradeEffeciencyCost;
public Planet currentPlanet;
Player player;
float timer;
DateTime currentDate;
public TimeSpan difference;
public float multiplier;
void FixedUpdate() {
//money += moneyPerSecond * Time.fixedDeltaTime;
PlayerPrefs.SetFloat("Money", money);
timer += 1 * Time.fixedDeltaTime;
if (timer >= 1) {
Save();
timer = 0;
}
}
public void AddMachines(Machine machine) {
allMachines.Add(machine);
PlayerPrefs.SetInt("MachineCount", allMachines.Count);
}
public void RemoveMachine(Machine machine) {
int oldCount = allMachines.Count;
allMachines.Remove(machine);
for (int i = 0; i < oldCount - 1; i++) {
if(allMachines[i].currentType == Machine.Type.FUEL) {
PlayerPrefs.SetString("Machine_" + i, HelperConverter.StringFromInt(new float[] { allMachines[i].ID, i, allMachines[i].angle, ((MachineFuel)allMachines[i]).maxPipeLength, ((MachineFuel)allMachines[i]).currentPocket.planetID, ((MachineFuel)allMachines[i]).airFilterLevel, ((MachineFuel)allMachines[i]).pumpLevel, ((MachineFuel)allMachines[i]).refineryLevel }));
} else {
PlayerPrefs.SetString("Machine_" + i, HelperConverter.StringFromInt(new float[] { allMachines[i].ID, i, allMachines[i].angle, ((MachineCleaner)allMachines[i]).airFilterLevel, ((MachineCleaner)allMachines[i]).efficiencyLevel }));
}
}
PlayerPrefs.DeleteKey("Machine_" + (oldCount - 1));
PlayerPrefs.SetInt("MachineCount", allMachines.Count);
}
void Awake () {
player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
DontDestroyOnLoad(gameObject);
FindPlanet();
}
void Start() {
Load();
}
public void Save() {
PlayerPrefs.SetString("SystemTime", System.DateTime.Now.ToBinary().ToString());
PlayerPrefs.Save();
}
public void Load() {
if (PlayerPrefs.HasKey("Money")) {
money = PlayerPrefs.GetFloat("Money");
}
if (PlayerPrefs.HasKey("MachineCount")) {
for (int i = 0; i < PlayerPrefs.GetInt("MachineCount"); i++) {
int type = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[0];
GameObject go = Instantiate(type == 0 ? player.machineFuel.gameObject : player.machineAir.gameObject);
go.transform.parent = currentPlanet.transform.GetChild(0);
go.GetComponent<Machine>().planetID = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[1];
go.GetComponent<Machine>().angle = HelperConverter.FloatFromString(PlayerPrefs.GetString("Machine_" + i))[2];
if(type == 0) {
go.GetComponent<MachineFuel>().maxPipeLength = HelperConverter.FloatFromString(PlayerPrefs.GetString("Machine_" + i))[3];
go.GetComponent<MachineFuel>().currentPocket = currentPlanet.planetPockets[HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[4]];
go.GetComponent<MachineFuel>().airFilterLevel = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[5];
go.GetComponent<MachineFuel>().pumpLevel = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[6];
go.GetComponent<MachineFuel>().refineryLevel = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[7];
} else {
go.GetComponent<MachineCleaner>().airFilterLevel = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[3];
go.GetComponent<MachineCleaner>().efficiencyLevel = HelperConverter.IntFromString(PlayerPrefs.GetString("Machine_" + i))[4];
}
allMachines.Add(go.GetComponent<Machine>());
currentPlanet.machines.Add(go.GetComponent<Machine>());
}
}
currentDate = DateTime.Now;
if (PlayerPrefs.HasKey("SystemTime")) {
long temp = Convert.ToInt64(PlayerPrefs.GetString("SystemTime"));
DateTime oldDate = DateTime.FromBinary(temp);
difference = currentDate.Subtract(oldDate);
foreach (Machine mach in currentPlanet.machines) {
if (mach is MachineFuel) {
MachineFuel machine = (MachineFuel)mach;
multiplier += machine.refineryLevel;
}
}
}
}
void FindPlanet() {
currentPlanet = GameObject.Find("Planet").GetComponent<Planet>();
}
[ContextMenu("Delete PlayerPrefs")]
public void DeletePlayerPrefs() {
PlayerPrefs.DeleteAll();
}
}