This repository was archived by the owner on Dec 3, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.lua
More file actions
160 lines (143 loc) · 3.73 KB
/
main.lua
File metadata and controls
160 lines (143 loc) · 3.73 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
-----------------
-- Circulating --
-----------------
-- Classes
local File = require 'src/File'
local Sounds = require 'src/Sounds'
local UI = require 'src/ui/UI'
local Mouse = require 'src/Mouse'
local Circle = require 'src/Circle'
Shop = require 'src/shop/Shop'
function love.load()
gameState = 'menu'
countdown = 3
-- Get the OS
playingOnMobile = false
if love.system.getOS() == 'iOS' or love.system.getOS() == 'Android' then
playingOnMobile = true
end
File.load()
Shop.setTemperature()
UI.load()
end
function love.draw()
UI.drawBackgrounds()
if gameState == 'play' then
if countdown < 0 then
for tempo, coin in ipairs(Shop.coinsList) do
love.graphics.draw(coin.sprite, coin.x, coin.y, 0, coin.scale, coin.scale)
end
for tempo, circle in ipairs(Shop.circleList) do
love.graphics.circle('fill', circle.x, circle.y, circle.size)
end
end
end
UI.drawButtons()
UI.drawTexts()
Mouse.draw()
end
function love.update(dt)
Mouse.update()
Sounds.play()
if gameState == 'play' then
countdown = countdown - dt
if countdown < 0 then
Shop.receiveMoney(dt)
Shop.spawnCoins(dt)
for tempo, coin in ipairs(Shop.coinsList) do
if Shop.coinsMovement then
coin:move(dt)
end
end
for tempo, circle in ipairs(Shop.circleList) do
circle:move(dt)
if circle:touchedByMouse() then
gameOver()
end
end
end
end
end
function startGame()
gameState = 'play'
for tempo = 1, Shop.numberOfCircles, 1 do
table.insert(Shop.circleList, Circle:new(Shop.circleRandomInitialPosition))
end
Mouse.load()
end
function togglePause()
if gameState == 'play' then
gameState = 'pause'
elseif gameState == 'pause' then
gameState = 'play'
end
Mouse.load()
end
function gameOver()
Shop.circleList = {}
Shop.coinsList = {}
Sounds.defeatSE:play()
gameState = 'game over'
Mouse.load()
if Shop.money > Shop.highestScore then
Shop.highestScore = Shop.money
end
Shop.money = 0
countdown = 3
File.save()
end
-- Desktop controls
function love.mousepressed(x, y)
-- Buttons
for tempo, button in ipairs(UI.getList()) do
button:clicked(x, y)
end
-- Coins
if not Shop.coinsPickedOnHover then
for coinNumber, coin in ipairs(Shop.coinsList) do
if coin:clicked() then
table.remove(Shop.coinsList, coinNumber)
end
end
end
end
function love.keypressed(key)
if gameState == 'play' or gameState == 'pause' then
if key == 'escape' or key == 'space' then
togglePause()
end
elseif gameState == 'menu' or gameState == 'game over' then
if key == 'escape' then
File.save()
love.event.quit()
elseif key == 'space' then
startGame()
end
elseif gameState == 'shop - cold' or gameState == 'shop - hot' then
if key == 'escape' then
gameState = 'menu'
end
end
end
-- Touchscreen controls
function love.touchpressed(id, x, y)
-- Buttons
for tempo, button in ipairs(UI.getList()) do
button:clicked(x, y)
end
end
function love.touchmoved(id, x, y)
if playingOnMobile then
Mouse.x = x
Mouse.y = y
end
end
function love.touchreleased()
if playingOnMobile then
if countdown < 0 then
if gameState == 'play' or gameState == 'pause' then
togglePause()
end
end
end
end