• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:ShipCardKai"

From Kancolle Wiki
Jump to navigation Jump to search
com>Ckwng
com>Ckwng
Line 1: Line 1:
 
local Ship = require('Module:Ship')
 
local Ship = require('Module:Ship')
 
local Formatting = require('Module:Formatting')
 
local Formatting = require('Module:Formatting')
 +
 +
local format = require("Module:StringInterpolation").format
  
 
local ShipCardKai = {
 
local ShipCardKai = {
 
_card_size = "218x300px",
 
_card_size = "218x300px",
 
_battle_card_size = "160x40px",
 
_battle_card_size = "160x40px",
 +
_battle_card_layers = {
 +
takoyaki = {image = "Hell plane 2.png", top = "5px", left = "50px", size = "30x30px"},
 +
flagship = {image = "Flagship battle card icon.png", top = "5px", left = "137px"},
 +
},
 +
_battle_card_wrapper = [[<div style="position: relative; width: 160px; height: 40px;">${layers}</div>]],
 +
_battle_card_layer = [[<div style="position: absolute;">${image}</div>]],
 +
_image_layer = [[<div style="position: absolute; top: ${top}; left: ${left};">${image}</div>]],
 
}
 
}
  
Line 25: Line 34:
 
ship = args.ship
 
ship = args.ship
 
end
 
end
return Formatting:format_image{ship:battle_card(), size = args.size or self._battle_card_size, link = args.link, caption = args.caption}
+
local image = Formatting:format_image{ship:battle_card(), size = args.size or self._battle_card_size, link = args.link, caption = args.caption}
 +
local ship_layers = ship:battle_card_layers()
 +
if ship_layers or args.flagship then
 +
local layers = {format{self._battle_card_layer, image = image}}
 +
if ship_layers then
 +
for _, layer in ipairs(ship_layers) do
 +
self:_add_layer(layers, self._battle_card_layers[layer])
 +
end
 +
end
 +
if args.flagship then
 +
self:_add_layer(layers, self._battle_card_layers.flagship)
 +
end
 +
image = format{self._battle_card_wrapper, layers = table.concat(layers)}
 +
end
 +
return image
 +
end
 +
 
 +
function ShipCardKai:_add_layer(layers, layer)
 +
table.insert(layers, format{self._image_layer, image = Formatting:format_image{layer.image, caption = layer.caption, size = layer.size}, top = layer.top, left = layer.left})
 
end
 
end
  

Revision as of 02:45, 23 May 2015

Documentation for this module may be created at Module:ShipCardKai/doc

local Ship = require('Module:Ship')
local Formatting = require('Module:Formatting')

local format = require("Module:StringInterpolation").format

local ShipCardKai = {
	_card_size = "218x300px",
	_battle_card_size = "160x40px",
	_battle_card_layers = {
		takoyaki = {image = "Hell plane 2.png", top = "5px", left = "50px", size = "30x30px"},
		flagship = {image = "Flagship battle card icon.png", top = "5px", left = "137px"},
	},
	_battle_card_wrapper = [[<div style="position: relative; width: 160px; height: 40px;">${layers}</div>]],
	_battle_card_layer = [[<div style="position: absolute;">${image}</div>]],
	_image_layer = [[<div style="position: absolute; top: ${top}; left: ${left};">${image}</div>]],
}

function ShipCardKai:card(ship, args)
	if not args then
		args = ship
		ship = args.ship
	end
	return Formatting:format_image{ship:card(), size = args.size or self._card_size, link = args.link, caption = args.caption}
end

function ShipCardKai:Card(args)
	local ship = self:create_ship(args)
	return self:card(ship, args)
end

function ShipCardKai:battle_card(ship, args)
	if not args then
		args = ship
		ship = args.ship
	end
	local image = Formatting:format_image{ship:battle_card(), size = args.size or self._battle_card_size, link = args.link, caption = args.caption}
	local ship_layers = ship:battle_card_layers()
	if ship_layers or args.flagship then
		local layers = {format{self._battle_card_layer, image = image}}
		if ship_layers then
			for _, layer in ipairs(ship_layers) do
				self:_add_layer(layers, self._battle_card_layers[layer])
			end
		end
		if args.flagship then
			self:_add_layer(layers, self._battle_card_layers.flagship)
		end
		image = format{self._battle_card_wrapper, layers = table.concat(layers)}
	end
	return image
end

function ShipCardKai:_add_layer(layers, layer)
	table.insert(layers, format{self._image_layer, image = Formatting:format_image{layer.image, caption = layer.caption, size = layer.size}, top = layer.top, left = layer.left})
end

function ShipCardKai:BattleCard(args)
	local ship = self:create_ship(args)
	return self:battle_card(ship, args)
end

function ShipCardKai:create_ship(args)
	if args.name then
		return Ship(args.name, args.model)
	else
		return Ship(args[1])
	end
end

return ShipCardKai