-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.lua
More file actions
158 lines (142 loc) · 3.87 KB
/
main.lua
File metadata and controls
158 lines (142 loc) · 3.87 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
-- Working on:
-- Adjust emitter things so you can drop a trail of stuff - maybe vary floaty params?
-- Implement torch
-- Grappling hook (i.e. Rope effector)
-- Tool building in inventoryview
-- Mouse aim??
-- How to capture neat side-effects like "floaty bombs" and reward tricky shots (using timers, long shots, etc.) over easy shots (projection, crawlers, etc.)
-- Trigger on things other than terrain - cleanup spiders?
-- Coolest shit: Samsung LJN15390 Repeating Burst Emitter Spider Precision Torch Probe
require 'Properties'
require 'Level'
require 'State'
require 'Player'
require 'Camera'
require 'Circle'
require 'Grapple'
require 'Toolkit'
require 'ToolBuilder'
require 'Inventory'
require 'Thing'
require 'Annihilator'
require 'Probe'
require 'Converter'
require 'Dilator'
require 'Harvester'
require 'Extruder'
require 'Materials'
require 'Projection'
require 'Wind'
require 'ToolCraft'
require 'trace'
function love.load()
Circle:Initialize()
Materials:Initialize()
Level:initialize()
Inventory:addPartSet(ToolBuilder:CreateFullPartSet())
--Inventory:addTool(ToolBuilder:CreateBasicTool()) -- add this back when done testing tool crafting
Player:spawn(200,200)
Grapple:initialize()
Camera:initialize()
Camera:setCenter(0,0)
print("loading")
trace.print("loading")
worldtask = love.thread.newThread('WorldTask.lua')
worldChannel = love.thread.getChannel("world")
mainChannel = love.thread.getChannel("main")
worldtask:start()
worldChannel:push({x=0,y=0})
mainChannel:demand()
trace.print("done!")
print("done!")
Level:load()
trace.clear()
end
function love.threaderror(thread, errorstr)
print("Thread error!\n"..errorstr)
-- thread:getError() will return the same error string now.
end
function love.draw()
if State.paused then
love.graphics.setBackgroundColor(163, 163, 163)
else
love.graphics.setBackgroundColor(63, 63, 63)
end
Level:draw()
Player:draw()
Grapple:draw()
Thing:draw()
Inventory:draw()
Probe:draw()
Annihilator:draw()
Converter:draw()
Dilator:draw()
Harvester:draw()
Extruder:draw()
Projection:draw()
Wind:draw()
ToolCraft:draw()
trace.draw()
end
function love.update(dt)
if State.paused then
return
end
dt = math.min(dt, Properties.MaximumTimestep)
Level:update(dt)
Player:update(dt)
Grapple:update(dt)
Thing:update(dt,Wind.wind)
Probe:update(dt)
Annihilator:update(dt)
Converter:update(dt)
Dilator:update(dt)
Harvester:update(dt)
Extruder:update(dt)
Projection:update(dt)
Wind:update(dt)
local reticulex = Player.Pos.x + Player.Aim.x * Properties.AimFocusDistance
local reticuley = Player.Pos.y + Player.Aim.y * Properties.AimFocusDistance
Camera:setTargetCenter(reticulex,reticuley)
Camera:setTargetVel(Player.Vel.x,Player.Vel.y)
Camera:update(dt)
end
function love.focus(f)
if not f then
State.paused = true
end
end
function love.mousepressed(x,y,button,touch)
end
function love.mousereleased(x,y,button,touch)
end
function love.keypressed(key,isrepeat)
if key == Properties.Keybindings.pause then
State.toggle("paused")
elseif key == Properties.Keybindings.inventoryview then
State.toggle("inventoryView")
elseif key == 'tab' then
local tool = ToolBuilder:CreateRandomTool()
Inventory:addTool(tool)
print(tool.Name)
elseif key == '2' then
print(tostring(love.math.randomNormal(2,0)))
elseif key == '3' then
local part = ToolBuilder:CreateRandomToolPart()
Inventory:addPart(part)
print(ts('part',part))
else
if not State.inventoryView then
Player:keypressed(key,isrepeat)
else
ToolCraft:keypressed(key,isrepeat)
end
end
end
function love.keyreleased(key)
if key == 'l' then
--nothing
else
Player:keyreleased(key)
end
end