Add class Item
This commit is contained in:
parent
3ce2d83c22
commit
8e637400a5
2 changed files with 62 additions and 10 deletions
52
cf-lib/data/Item.lua
Normal file
52
cf-lib/data/Item.lua
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
--- Utility class for a single item
|
||||||
|
--- @class Item
|
||||||
|
local Item = {}
|
||||||
|
|
||||||
|
--- Pass an item name or an item table to get a Item object
|
||||||
|
--- @param value string|table The name of the item or the item table
|
||||||
|
function Item:new(value)
|
||||||
|
local name
|
||||||
|
local item
|
||||||
|
|
||||||
|
if type(value) == "string" then
|
||||||
|
name = value
|
||||||
|
item = data.raw.item[name]
|
||||||
|
if not item then
|
||||||
|
log("Item not found: " .. name)
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
elseif type(value) == "table" then
|
||||||
|
name = value.name
|
||||||
|
item = value
|
||||||
|
end
|
||||||
|
|
||||||
|
local obj = {
|
||||||
|
prototype = item
|
||||||
|
}
|
||||||
|
|
||||||
|
setmetatable(obj, self)
|
||||||
|
self.__index = self
|
||||||
|
return obj
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Applies the item to the game
|
||||||
|
function Item:apply()
|
||||||
|
data:extend({ self.prototype })
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Assigns data to the item
|
||||||
|
--- Shorthand for table.assign(item.prototype, data)
|
||||||
|
--- @param data table The data to assign
|
||||||
|
function Item:assign(data)
|
||||||
|
table.assign(self.prototype, data)
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Sets the weight of the item calculated from given count per rocket.
|
||||||
|
--- @param count number The amount of items that fit into a rocket
|
||||||
|
function Item:itemsPerRocket(count)
|
||||||
|
self.prototype.weight = (1000 / count) * kg
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
return Item
|
|
@ -1,9 +1,9 @@
|
||||||
---- Utility class for a single recipe
|
--- Utility class for a single recipe
|
||||||
---- @class Recipe
|
--- @class Recipe
|
||||||
local Recipe = {}
|
local Recipe = {}
|
||||||
|
|
||||||
---- Pass a recipe name or a recipe table to get a Recipe object
|
--- Pass a recipe name or a recipe table to get a Recipe object
|
||||||
---- @param value string|table The name of the recipe or the recipe table
|
--- @param value string|table The name of the recipe or the recipe table
|
||||||
function Recipe:new(value)
|
function Recipe:new(value)
|
||||||
local name
|
local name
|
||||||
local recipe
|
local recipe
|
||||||
|
@ -29,14 +29,14 @@ function Recipe:new(value)
|
||||||
return obj
|
return obj
|
||||||
end
|
end
|
||||||
|
|
||||||
---- Applies the recipe to the game
|
--- Applies the recipe to the game
|
||||||
function Recipe:apply()
|
function Recipe:apply()
|
||||||
data:extend({ self.prototype })
|
data:extend({ self.prototype })
|
||||||
end
|
end
|
||||||
|
|
||||||
---- Assigns data to the recipe
|
--- Assigns data to the recipe
|
||||||
---- Shorthand for table.assign(recipe.prototype, data)
|
--- Shorthand for table.assign(recipe.prototype, data)
|
||||||
---- @param data table The data to assign
|
--- @param data table The data to assign
|
||||||
function Recipe:assign(data)
|
function Recipe:assign(data)
|
||||||
table.assign(self.prototype, data)
|
table.assign(self.prototype, data)
|
||||||
return self
|
return self
|
||||||
|
@ -148,8 +148,8 @@ function Recipe:unlockedByTechnology(technology)
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
---- Clones the recipe
|
--- Clones the recipe
|
||||||
---- @param name string The name of the new recipe
|
--- @param name string The name of the new recipe
|
||||||
function Recipe:clone(name)
|
function Recipe:clone(name)
|
||||||
local clone = table.deepcopy(self.prototype)
|
local clone = table.deepcopy(self.prototype)
|
||||||
clone.name = name
|
clone.name = name
|
||||||
|
|
Loading…
Add table
Reference in a new issue