-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathitems.lua
More file actions
101 lines (86 loc) · 2.25 KB
/
Copy pathitems.lua
File metadata and controls
101 lines (86 loc) · 2.25 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
local utils = require "utils"
local noArt = love.graphics.newImage "images/noArt_32x32.png"
---@class ItemHandler
---@field Items Item[]
local ItemHandler = { Items = {} }
---@class Item
local Item = {
x = 0,
y = 0,
pickedUp = false,
usage = "none",
attatched = false,
radius = noArt:getHeight() / 2,
width = noArt:getWidth(),
height = noArt:getHeight(),
color = { 1, 1, 1 },
}
Item.__index = Item
ItemHandler.types = require "itemTypes"
ItemHandler.pickedUpCounts = {}
for name, item in pairs(ItemHandler.types) do
item.__index = Item
setmetatable(item, Item)
ItemHandler.pickedUpCounts[name] = 0
end
function ItemHandler:update(dt)
for i = #self.Items, 1, -1 do
local item = self.Items[i]
if item.kill then
table.remove(self.Items, i)
elseif item.update ~= nil then
item:update(dt)
end
end
end
function ItemHandler:draw()
for _, item in ipairs(self.Items) do
if item.pickedUp == false then
item:draw()
end
end
end
--- not a constructor for ItemHandler
--- constructs a Item, and adds it to the handler's list
---@param type string
---@param x number
---@param y number
---@return Item
function ItemHandler:new(type, x, y, targetX, targetY)
local item
if ItemHandler.types[type] ~= nil and ItemHandler.types[type] ~= "none" then
--print("newItem: " .. type)
item = ItemHandler.types[type]:new(x, y, targetX, targetY)
else
error("Invalid Item: " .. type)
end
table.insert(self.Items, item)
return item
end
---Item constructor
---@param x number
---@param y number
---@return Item
function Item:new(x, y)
local item = {}
--ID(item)
self.__index = self
setmetatable(item, self)
item.x, item.y = x, y
return item
end
function Item:pickUp()
assert(self.pickedUp == false)
assert(self.attatched == false)
self.pickedUp = true
self.kill = true
World.itemHandler.pickedUpCounts[self.typeName] = World.itemHandler.pickedUpCounts[self.typeName] + 1
end
function Item:update(dt)
-- nothing yet
end
function Item:draw()
love.graphics.setColor(1, 1, 1, 1)
love.graphics.draw(noArt, self.x - self.radius, self.y - self.radius)
end
return ItemHandler