| Line 1: |
Line 1: |
| | local U = require('Module:Core') | | local U = require('Module:Core') |
| | local EquipmentData = require('Module:EquipmentData') | | local EquipmentData = require('Module:EquipmentData') |
| − | local EquipmentCollection = require('Module:Collection/Equipment') | + | |
| | + | local EquipmentCollection = mw.loadData('Module:Data/Equipment') |
| | | | |
| | local Equipment = {} | | local Equipment = {} |
| Line 7: |
Line 8: |
| | local equipments = {} | | local equipments = {} |
| | | | |
| − | function Equipment:create(name) | + | local function requireEquipmentModule(name, is_enemy) |
| − | if not name then
| + | local success, data |
| − | return EquipmentData()
| + | if not is_enemy then |
| − | end
| + | success, data = U.requireModule('Data/Equipment/' .. name) |
| − | if equipments[name] then
| + | if not success then |
| − | return equipments[name]
| + | success, data = U.requireModule('Data/Item/' .. name) |
| − | end
| + | end |
| − | local success, equipment_table = U.requireModule(name)
| + | if not success then |
| − | if not success then
| + | success, data = U.requireModule('Data/PseudoItem/' .. name) |
| − | local eq = U.find(EquipmentCollection, name, '_name')
| + | end |
| − | local success2, equipment_table2
| + | if not success then |
| − | if eq and (eq._module or eq._dev) then
| + | data = U.find(EquipmentCollection, name, '_name') |
| − | success2, equipment_table2 = U.requireModule(eq._module or eq._dev and name .. '/Dev')
| + | -- success = true |
| − | end
| + | end |
| − | equipment_table = success2 and equipment_table2 or eq or { _name = name }
| + | end |
| − | if eq and eq._module then
| + | if not success then |
| − | equipment_table._module = eq._module
| + | success, data = U.requireModule('Data/EnemyEquipment/' .. name) |
| − | end
| + | end |
| − | if eq and eq._dev then
| + | if not success then |
| − | equipment_table._dev = eq._dev
| + | return {_name = name} |
| − | end
| + | end |
| − | end
| + | data._is_enemy = is_enemy |
| − | local equipment = EquipmentData(equipment_table)
| + | return data |
| − | equipments[name] = equipment
| + | end |
| − | return equipment
| + | |
| | + | function Equipment:create(name, is_enemy) |
| | + | if not name then |
| | + | return EquipmentData() |
| | + | end |
| | + | if not equipments[name] then |
| | + | equipments[name] = EquipmentData(requireEquipmentModule(name, is_enemy)) |
| | + | end |
| | + | return equipments[name] |
| | end | | end |
| | | | |
| | function Equipment:get(stat, name) | | function Equipment:get(stat, name) |
| − | return self:create(name)[stat]()
| + | return self:create(name)[stat]() |
| | end | | end |
| | | | |
| − | function Equipment:get_module(name) | + | function Equipment:get_module(name, typeName) |
| − | return name and mw.ustring.format(
| + | return name and string.format('Module:Data/%s/%s', typeName or 'Equipment', name) or nil |
| − | 'Module:%s',
| |
| − | equipments[name] and (equipments[name]._module or equipments[name]._dev and name .. '/Dev') or name
| |
| − | ) or nil
| |
| | end | | end |
| | | | |
| | function Equipment:extend(data) | | function Equipment:extend(data) |
| − | data = data or {}
| + | data = data or {} |
| − | setmetatable(data, data)
| + | setmetatable(data, data) |
| − | data.__index = self
| + | data.__index = self |
| − | data.__call = self.__call
| + | data.__call = self.__call |
| − | return data
| + | return data |
| | end | | end |
| | | | |