Module:View/Expedition

local U = require('Module:Core') local F = require('Module:Formatting') local view = require('Module:View') local data = require('Module:Data/Expedition')

local backgrounds = { [0] = 'EDEDED', [1] = 'EDEDED', [2] = 'EDEDD5', [3] = 'CFE8E8', [4] = 'C5E6D5', [5] = 'D3D3EB', -- [7] = '?', }

local template = [=[|-
 * style="${style}"|${id}
 * style="${style}"|${name}
 * style="${style}"|${time}
 * style="${style}"|${hq}
 * style="${style}"|${ship}
 * style="${style}"|${fuel}
 * style="${style}"|${ammo}
 * style="${style}"|${steel}
 * style="${style}"|${bauxite}
 * style="${style}"|${item1}
 * style="${style}"|${item2}]=]

-- todo: use modules local worldNames = { [1] = '鎮守府海域', [2] = '南西諸島海域', [3] = '北方海域', [4] = '西方海域', [5] = '南方海域', [6] = '中部海域', [7] = '南西海域', }

local headerBackgrounds = { [1] = 'lightgray', [2] = '#cccc99', [3] = '#99cccc', [4] = '#66cc99', [5] = '#9999cc', [6] = 'lightgray', [7] = 'lightgray', }

local isons = { [1] = 'World1icon', [2] = 'World2icon', [3] = 'World3icon', [4] = 'World4icon', [5] = 'World5icon', [6] = 'World6icon', [7] = 'World7icon', }

local tableHeader =
 * style="background:gray;" colspan="14"|
 * style="background:gray;" colspan="14"|

local function pad(n) return n < 10 and '0' .. n or n end

local function formatTime(time) return string.format('%s:%s', pad(math.floor(time / 60)), pad(time % 60)) end

local function tooltip(text, title) return F:tooltip2(text, title, ' ') end

local itemTemplate =

local itemFiles = { [1] = 'Instant_repair.jpg', [2] = 'Instant_construction.jpg', [3] = 'Development_material.jpg', [4] = 'Improvement_material.png', [10] = 'Furniture_box_small.png', [11] = 'Furniture_box_medium.png', [12] = 'Furniture_box_large.jpg', }

local itemLinks = { [1] = 'Tutorial:_FAQ#What_are_buckets.3F', [2] = 'Construction', [3] = 'Development', [4] = 'Improvement Material', [10] = 'Furniture/Guide#Furniture_coin', [11] = 'Furniture/Guide#Furniture_coin', [12] = 'Furniture/Guide#Furniture_coin', }

local itemNames = { [1] = 'Instant Repair', [2] = 'Instant Construction', [3] = 'Development Material', [4] = 'Improvement Material', [10] = 'Small Furniture Coin Box', [11] = 'Medium Furniture Coin Box', [12] = 'Large Furniture Coin Box', }

local function formatItem(id, count) return U.format{ itemTemplate, file = itemFiles[id] or '??', link = itemLinks[id] or '', name = itemNames[id] or '??', text = 'x' .. count, } end

local function render(args) local world = tonumber(args.explicit.world) local es = U.ifilter(data, function(e) return e.maparea_id == world end) return U.format{ tableHeader, icon = isons[world], background = headerBackgrounds[world], name = worldNames[world], } .. U.joinLines(U.imap(es, function(e, i)   local id = e.disp_no return U.format{ template, style = string.format(       'text-align: center; height: 35px; background: #%s; color:#000',        i % 2 == 0 and '' or backgrounds[e.maparea_id] or backgrounds[0]      ), id = tooltip(id, 'ID number as displayed in game'), name = tooltip(e.name, e.details), time = tooltip(formatTime(e.time), 'Time required for expedition'), hq = tooltip(args.explicit[id .. ' hq'] or '??', 'Admiral experience gained upon completion from this expedition'), ship = tooltip(args.explicit[id .. ' ship'] or '??', 'Ship experience gained upon completion from this expedition'), fuel = tooltip(args.explicit[id .. ' fuel'] or '??', 'Base resources gain from expedition (at 100% ratio)'), ammo = tooltip(args.explicit[id .. ' ammo'] or '??', 'Base resources gain from expedition (at 100% ratio)'), steel = tooltip(args.explicit[id .. ' steel'] or '??', 'Base resources gain from expedition (at 100% ratio)'), bauxite = tooltip(args.explicit[id .. ' bauxite'] or '??', 'Base resources gain from expedition (at 100% ratio)'), item1 = e.win_item1[1] > 0 and formatItem(e.win_item1[1], e.win_item1[2]) or '', item2 = e.win_item2[1] > 0 and formatItem(e.win_item2[1], e.win_item2[2]) or '', } end)) .. '\n|}\n ' end

local test = { explicit = { world = '7' } } -- print(p.test)

return view(render, test)