-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathdata.lua
103 lines (86 loc) · 2.21 KB
/
data.lua
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
require("TSerial")
local settingsFilename = "settings"
local statusFilename = "status"
function loadSettings()
local info = love.filesystem.getInfo(settingsFilename, "file")
if info then
local data = love.filesystem.read(settingsFilename)
local set = TSerial.unpack(data)
setScale(set.scale)
SCROLL_SPEED = set.scroll_speed
music_volume = set.music_volume
sound_volume = set.sound_volume
else
setScale(3)
SCROLL_SPEED = 5 -- 3 to 8 = smooth, 9 = none
music_volume = 0.6
sound_volume = 1
end
end
function loadData()
local info = love.filesystem.getInfo(statusFilename, "file")
if info then
local data = love.filesystem.read(statusFilename)
local set = TSerial.unpack(data)
unlocked = set.unlocked
level_status = set.level_status
deaths = set.deaths
jumps = set.jumps
coins = set.coins
else
unlocked = 1
deaths = 0
jumps = 0
coins = 0
level_status = {}
for i=1,9 do
level_status[i] = {}
level_status[i].coins = 0
level_status[i].deaths = nil
level_status[i].time = nil
end
end
end
function saveData()
local set = {}
set.version = 1.0
set.unlocked = unlocked
set.deaths = deaths
set.level_status = level_status
set.jumps = jumps
set.coins = coins
local data = TSerial.pack(set)
love.filesystem.write("status", data)
end
function saveSettings()
local set = {}
set.version = 1.0
set.scale = SCALE
set.scroll_speed = SCROLL_SPEED
set.music_volume = music_volume
set.sound_volume = sound_volume
local data = TSerial.pack(set)
love.filesystem.write("settings", data)
end
function levelCompleted()
if current_map <= 8 then
unlocked = math.max(unlocked, current_map+1)
end
level_status[current_map].coins = math.max(level_status[current_map].coins, map.numcoins)
if level_status[current_map].deaths == nil then
level_status[current_map].deaths = map.deaths
else
level_status[current_map].deaths = math.min(level_status[current_map].deaths, map.deaths)
end
if level_status[current_map].time == nil then
level_status[current_map].time = map.time
else
level_status[current_map].time = math.min(level_status[current_map].time, map.time)
end
coins = 0
for i = 1,9 do
coins = coins + level_status[i].coins
end
saveData()
gamestate = STATE_LEVEL_MENU
end