Module:ShipData
Revision as of 14:29, 16 February 2015 by com>Ckwng (add reading)
Documentation for this module may be created at Module:ShipData/doc
local Equipment = require('Module:Equipment')
local ShipClass = require('Module:ShipClass')
local BaseData = require("Module:BaseData")
local ShipData = BaseData()
function ShipData:name()
if self._suffix then
return self:base_name() .. " " .. self._suffix
else
return self:base_name()
end
end
function ShipData:base_name()
return self._name
end
function ShipData:link()
if self._suffix then
return self:base_name(), self:name()
else
return self:name()
end
end
function ShipData:japanese_name()
return self._japanese_name
end
function ShipData:reading()
return self._reading
end
function ShipData:id()
return self._id
end
function ShipData:true_id()
return self._true_id
end
function ShipData:rarity()
return self._rarity
end
function ShipData:class()
return self._class
end
function ShipData:type()
return self._type
end
function ShipData:card()
return self._card
end
function ShipData:hp()
return self._hp
end
function ShipData:firepower()
return self._firepower
end
function ShipData:firepower_max()
return self._firepower_max
end
function ShipData:torpedo()
return self._torpedo
end
function ShipData:torpedo_max()
return self._torpedo_max
end
function ShipData:aa()
return self._aa
end
function ShipData:aa_max()
return self._aa_max
end
function ShipData:armor()
return self._armor
end
function ShipData:armor_max()
return self._armor_max
end
function ShipData:asw()
return self._asw
end
function ShipData:asw_max()
return self._asw_max
end
function ShipData:evasion()
return self._evasion
end
function ShipData:evasion_max()
return self._evasion_max
end
function ShipData:los()
return self._los
end
function ShipData:los_max()
return self._los_max
end
function ShipData:luck()
return self._luck
end
function ShipData:luck_max()
return self._luck_max
end
function ShipData:buildable()
return self._buildable
end
function ShipData:build_time()
return self._build_time
end
function ShipData:remodel_level()
return self._remodel_level
end
function ShipData:remodel_cost()
return {ammo = self._remodel_ammo, steel = self._remodel_steel}
end
function ShipData:remodel_blueprint()
return self._remodel_blueprint
end
function ShipData:fuel()
return self._fuel
end
function ShipData:ammo(raw)
return self._ammo
end
function ShipData:slot(slot)
local equipment_slot = self._equipment[slot]
return equipment_slot.equipment, equipment_slot.size
end
function ShipData:slots()
return #self._equipment
end
function ShipData:total_space()
local total_space = 0
local size
for _, v in ipairs(self._equipment) do
size = v["size"]
if size == nil then
total_space = nil
break
elseif size == false then
else
total_space = total_space + size
end
end
return total_space
end
function ShipData:speed()
return self._speed
end
function ShipData:range()
return self._range
end
function ShipData:create(ship)
ship = ship or {}
if ship._class then
ship._class = ShipClass(ship._class)
end
if not ship._equipment then
ship._equipment = {}
end
for _, slot in ipairs(ship._equipment) do
if slot.equipment then
slot.equipment = Equipment(slot.equipment)
end
end
setmetatable(ship, ship)
ship.__index = self
return ship
end
ShipData.__call = ShipData.create
return ShipData