• 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:ShipRemodelListKai"

From Kancolle Wiki
Jump to navigation Jump to search
m (36 revisions imported)
Line 7: Line 7:
  
 
local ShipRemodelListKai = BaseTable{
 
local ShipRemodelListKai = BaseTable{
_header_template = [[! colspan=6 | Before Remodel
+
_header_template = [[! colspan=4 | Before Remodel
 
! rowspan=2 style="width:30px;" | ⇒
 
! rowspan=2 style="width:30px;" | ⇒
 
! colspan=3 | After Remodel
 
! colspan=3 | After Remodel
! colspan=3 | Required Resources
+
! colspan=11 | Required Resources
 
|-
 
|-
 
! style="width: 50px;" | No.
 
! style="width: 50px;" | No.
Line 16: Line 16:
 
! style="width: 30px;" | Type
 
! style="width: 30px;" | Type
 
! style="width: 30px;" | Level
 
! style="width: 30px;" | Level
! style="width: 30px;" | ${blueprint}
 
! style="width: 30px;" | ${catapult}
 
 
! style="width: 50px;" | No.
 
! style="width: 50px;" | No.
 
! style="width: 100px;" | Name
 
! style="width: 100px;" | Name
Line 23: Line 21:
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo}
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo}
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
! style="width: 30px;" | ${devmat}]],
+
! style="width: 30px;" | ${devmat}
 +
! style="width: 30px;" | ${conmat}
 +
! style="width: 30px;" | ${screw}
 +
! style="width: 30px;" | ${blueprint}
 +
! style="width: 30px;" | ${catapult}
 +
! style="width: 30px;" | ${report}
 +
! style="width: 30px;" | ${gunmat}
 +
! style="width: 30px;" | ${airmat}
 +
! style="width: 30px;" | ${armament}]],
 
_header_template_bottom = [[! style="width: 50px;" | No.
 
_header_template_bottom = [[! style="width: 50px;" | No.
 
! style="width: 100px;" | Name
 
! style="width: 100px;" | Name
 
! style="width: 30px;" | Type
 
! style="width: 30px;" | Type
 
! style="width: 30px;" | Level
 
! style="width: 30px;" | Level
! style="width: 30px;" | ${blueprint}
 
! style="width: 30px;" | ${catapult}
 
 
! rowspan=2 style="width:30px;" | ⇒
 
! rowspan=2 style="width:30px;" | ⇒
 
! style="width: 50px;" | No.
 
! style="width: 50px;" | No.
Line 37: Line 41:
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
 
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
 
! style="width: 30px;" | ${devmat}
 
! style="width: 30px;" | ${devmat}
 +
! style="width: 30px;" | ${conmat}
 +
! style="width: 30px;" | ${screw}
 +
! style="width: 30px;" | ${blueprint}
 +
! style="width: 30px;" | ${catapult}
 +
! style="width: 30px;" | ${report}
 +
! style="width: 30px;" | ${gunmat}
 +
! style="width: 30px;" | ${airmat}
 +
! style="width: 30px;" | ${armament}
 
|-
 
|-
! colspan=6 | Before Remodel
+
! colspan=4 | Before Remodel
 
! colspan=3 | After Remodel
 
! colspan=3 | After Remodel
! colspan=3 | Required Resources]],
+
! colspan=11 | Required Resources]],
 
_columns = {
 
_columns = {
 
"id",
 
"id",
Line 46: Line 58:
 
"type",
 
"type",
 
"remodel_level",
 
"remodel_level",
"remodel_blueprint",
 
"remodel_catapult",
 
 
"arrow",
 
"arrow",
 
"id_after",
 
"id_after",
Line 55: Line 65:
 
"steel",
 
"steel",
 
"devmat",
 
"devmat",
 +
"conmat",
 +
"screw",
 +
"blueprint",
 +
"catapult",
 +
"report",
 +
"gunmat",
 +
"airmat",
 +
"armament",
 
},
 
},
 
_empty_cell = [[| style="text-align: center; vertical-align: middle;" | -]],
 
_empty_cell = [[| style="text-align: center; vertical-align: middle;" | -]],
Line 100: Line 118:
 
end
 
end
 
return {values = {value = remodel_level == false and self._dash or Formatting:format_stat(remodel_level)}, bg_color = self._transparent, text_align = self._center_align}
 
return {values = {value = remodel_level == false and self._dash or Formatting:format_stat(remodel_level)}, bg_color = self._transparent, text_align = self._center_align}
end
 
 
function ShipRemodelListKai:remodel_blueprint(ship)
 
local value = self._dash
 
if self._remodel_to then
 
if self._remodel_is_reversion then
 
value = Formatting:format_blueprint_requirement(ship:remodel_to_blueprint(), true)
 
else
 
value = Formatting:format_blueprint_requirement(self._remodel_to:remodel_blueprint(), true)
 
end
 
elseif self._remodel_to == nil then
 
value = self._question_marks
 
end
 
return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align}
 
end
 
 
function ShipRemodelListKai:remodel_catapult(ship)
 
local value = self._dash
 
if self._remodel_to then
 
if self._remodel_is_reversion then
 
value = Formatting:format_catapult_requirement(ship:remodel_to_catapult(), true)
 
else
 
value = Formatting:format_catapult_requirement(self._remodel_to:remodel_catapult(), true)
 
end
 
elseif self._remodel_to == nil then
 
value = self._question_marks
 
end
 
return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align}
 
 
end
 
end
  
Line 161: Line 151:
 
return {values = {value = type_after}, bg_color = self._transparent, text_align = self._center_align}
 
return {values = {value = type_after}, bg_color = self._transparent, text_align = self._center_align}
 
end
 
end
 +
 +
function ShipRemodelListKai:get_remodel_item_count(ship, item)
 +
local value = self._remodel_to == nil and self._question_marks
 +
or self._remodel_is_reversion and ship:remodel_to_cost()[item]
 +
or self._remodel_to:remodel_cost()[item]
 +
or self._dash
 +
return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align}
 +
end
 +
 +
-- TODO: fancy formatting
 +
-- Formatting:format_blueprint_requirement(ship:remodel_to_blueprint(), true)
 +
-- Formatting:format_blueprint_requirement(self._remodel_to:remodel_blueprint(), true)
 +
-- Formatting:format_catapult_requirement(ship:remodel_to_catapult(), true)
 +
-- Formatting:format_catapult_requirement(self._remodel_to:remodel_catapult(), true)
 +
-- etc.
  
 
function ShipRemodelListKai:ammo(ship)
 
function ShipRemodelListKai:ammo(ship)
local ammo = self._remodel_to == nil and self._question_marks or self._dash
+
return self:get_remodel_item_count(ship, 'ammo')
if self._remodel_to then
 
if self._remodel_is_reversion then
 
ammo = ship:remodel_to_cost().ammo
 
else
 
ammo = self._remodel_to:remodel_cost().ammo
 
end
 
end
 
return {values = {value = ammo or self._dash}, bg_color = self._transparent, text_align = self._center_align}
 
 
end
 
end
  
 
function ShipRemodelListKai:steel(ship)
 
function ShipRemodelListKai:steel(ship)
local steel = self._remodel_to == nil and self._question_marks or self._dash
+
return self:get_remodel_item_count(ship, 'steel')
if self._remodel_to then
 
if self._remodel_is_reversion then
 
steel = ship:remodel_to_cost().steel
 
else
 
steel = self._remodel_to:remodel_cost().steel
 
end
 
end
 
return {values = {value = steel or self._dash}, bg_color = self._transparent, text_align = self._center_align}
 
 
end
 
end
  
 
function ShipRemodelListKai:devmat(ship)
 
function ShipRemodelListKai:devmat(ship)
local devmat = self._remodel_to == nil and self._question_marks or self._dash
+
return self:get_remodel_item_count(ship, 'devmat')
if self._remodel_to then
+
end
if self._remodel_is_reversion then
+
 
devmat = ship:remodel_to_cost().devmat
+
function ShipRemodelListKai:conmat(ship)
else
+
return self:get_remodel_item_count(ship, 'conmat')
devmat = self._remodel_to:remodel_cost().devmat
+
end
end
+
 
end
+
function ShipRemodelListKai:screw(ship)
return {values = {value = devmat or self._dash}, bg_color = self._transparent, text_align = self._center_align}
+
return self:get_remodel_item_count(ship, 'screw')
 +
end
 +
 
 +
function ShipRemodelListKai:blueprint(ship)
 +
return self:get_remodel_item_count(ship, 'blueprint')
 +
end
 +
 
 +
function ShipRemodelListKai:catapult(ship)
 +
return self:get_remodel_item_count(ship, 'catapult')
 +
end
 +
 
 +
function ShipRemodelListKai:report(ship)
 +
return self:get_remodel_item_count(ship, 'report')
 +
end
 +
 
 +
function ShipRemodelListKai:gunmat(ship)
 +
return self:get_remodel_item_count(ship, 'gunmat')
 +
end
 +
 
 +
function ShipRemodelListKai:airmat(ship)
 +
return self:get_remodel_item_count(ship, 'airmat')
 +
end
 +
 
 +
function ShipRemodelListKai:armament(ship)
 +
return self:get_remodel_item_count(ship, 'armament')
 
end
 
end
  
Line 204: Line 217:
 
function ShipRemodelListKai:create_header()
 
function ShipRemodelListKai:create_header()
 
local header_icons = {
 
local header_icons = {
blueprint = ResourceIcons.blueprint,
 
catapult = ResourceIcons.prototype_deck_catapult_item,
 
 
ammo = ResourceIcons.ammo,
 
ammo = ResourceIcons.ammo,
 
steel = ResourceIcons.steel,
 
steel = ResourceIcons.steel,
 
devmat = ResourceIcons.devmat,
 
devmat = ResourceIcons.devmat,
 +
conmat = ResourceIcons.conmat,
 +
screw = ResourceIcons.screw,
 +
blueprint = ResourceIcons.blueprint,
 +
catapult = ResourceIcons.prototype_deck_catapult,
 +
report = ResourceIcons.report,
 +
gunmat = ResourceIcons.new_model_gun_mount_improvement_material,
 +
airmat = ResourceIcons.new_model_aerial_armament_material,
 +
armament = ResourceIcons.new_model_armament_material,
 
}
 
}
 
for key, value in pairs(header_icons) do
 
for key, value in pairs(header_icons) do
header_icons[key] = Formatting:format_image{value, caption = Formatting:format_resource_name(key), size = (key == "blueprint" or key == "catapult") and "24px" or nil}
+
local title = Formatting:format_resource_name(key)
 +
header_icons[key] = Formatting:format_image{value, caption = title, link = title}
 +
-- size = (key == "blueprint" or key == "catapult") and "24px" or nil}
 
end
 
end
 
self._header = format(self._header_template, header_icons)
 
self._header = format(self._header_template, header_icons)

Revision as of 21:22, 23 June 2024

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

local BaseTable = require('Module:BaseTable')
local Formatting = require('Module:Formatting')
local ResourceIcons = require('Module:Data/Asset')
local Ship = require('Module:Ship')

local format = require('Module:Core').format

local ShipRemodelListKai = BaseTable{
	_header_template = [[! colspan=4 | Before Remodel
! rowspan=2 style="width:30px;" | ⇒
! colspan=3 | After Remodel
! colspan=11 | Required Resources
|-
! style="width: 50px;" | No.
! style="width: 100px;" | Name
! style="width: 30px;" | Type
! style="width: 30px;" | Level
! style="width: 50px;" | No.
! style="width: 100px;" | Name
! style="width: 30px;" | Type
! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo}
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
! style="width: 30px;" | ${devmat}
! style="width: 30px;" | ${conmat}
! style="width: 30px;" | ${screw}
! style="width: 30px;" | ${blueprint}
! style="width: 30px;" | ${catapult}
! style="width: 30px;" | ${report}
! style="width: 30px;" | ${gunmat}
! style="width: 30px;" | ${airmat}
! style="width: 30px;" | ${armament}]],
	_header_template_bottom = [[! style="width: 50px;" | No.
! style="width: 100px;" | Name
! style="width: 30px;" | Type
! style="width: 30px;" | Level
! rowspan=2 style="width:30px;" | ⇒
! style="width: 50px;" | No.
! style="width: 100px;" | Name
! style="width: 30px;" | Type
! style="width: 30px; text-align: center; vertical-align: middle; background-color: darkgoldenrod;" | ${ammo}
! style="width: 30px; text-align: center; vertical-align: middle; background-color: lightgrey;" | ${steel}
! style="width: 30px;" | ${devmat}
! style="width: 30px;" | ${conmat}
! style="width: 30px;" | ${screw}
! style="width: 30px;" | ${blueprint}
! style="width: 30px;" | ${catapult}
! style="width: 30px;" | ${report}
! style="width: 30px;" | ${gunmat}
! style="width: 30px;" | ${airmat}
! style="width: 30px;" | ${armament}
|-
! colspan=4 | Before Remodel
! colspan=3 | After Remodel
! colspan=11 | Required Resources]],
	_columns = {
		"id",
		"name",
		"type",
		"remodel_level",
		"arrow",
		"id_after",
		"name_after",
		"type_after",
		"ammo",
		"steel",
		"devmat",
		"conmat",
		"screw",
		"blueprint",
		"catapult",
		"report",
		"gunmat",
		"airmat",
		"armament",
	},
	_empty_cell = [[| style="text-align: center; vertical-align: middle;" | -]],
	_column_empty_cells = {
		arrow = [[| style="text-align: center; vertical-align: middle;" | ⇒]],
	},
	_item_class = Ship,
	_dash = "-",
	_arrow = "⇒",
	_question_marks = "??",
	_fragment_prefix = "shipremodellistkai",
}

function ShipRemodelListKai:id(ship)
	return {values = {value = Formatting:format_stat(ship:id())}, 
		bg_color = self._transparent, --Formatting:format_ship_back(back), 
		extra_style = "", --Formatting:extra_style_background_image(back and back > 7, back and back > 6) or ""
		text_align = self._center_align
	}
end

function ShipRemodelListKai:name(ship)
	return {values = {value = Formatting:id_span(tostring(ship:api_id() or mw.ustring.lower(mw.ustring.gsub(ship:name(), "%s+", self._dash))), self._fragment_prefix, Formatting:format_link(ship:link()))}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:type(ship)
	return {values = {value = Formatting:format_ship_code(ship:type())}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:remodel_level(ship)
	self._remodel_to = ship:remodel_to()
	local remodel_level = false
	if self._remodel_to then
		if self._remodel_to == ship:remodel_from() then
			self._remodel_is_reversion = true
		else
			self._remodel_is_reversion = false
		end
		self._remodel_to = Ship(self._remodel_to)
		if self._remodel_is_reversion then
			remodel_level = ship:remodel_to_level()
		else			
			remodel_level = self._remodel_to:remodel_level()
		end
	end
	return {values = {value = remodel_level == false and self._dash or Formatting:format_stat(remodel_level)}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:arrow()
	return {values = {value = self._arrow}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:id_after()
	local id_after = self._remodel_to == nil and self._question_marks or self._dash
	if self._remodel_to then
		id_after = Formatting:format_stat(self._remodel_to:id())
	end
	return {values = {value = id_after}, 
		bg_color = self._transparent, --Formatting:format_ship_back(back), 
		extra_style = "", --Formatting:extra_style_background_image(back and back > 7, back and back > 6) or ""
		text_align = self._center_align
	}
end

function ShipRemodelListKai:name_after()
	local name_after = self._remodel_to == nil and self._question_marks or self._dash
	if self._remodel_to then
		name_after = Formatting:fragment_link(tostring(self._remodel_to:api_id() or mw.ustring.lower(mw.ustring.gsub(self._remodel_to:name(), "%s+", self._dash))), self._fragment_prefix, self._remodel_to:name())
	end
	return {values = {value = name_after}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:type_after()
	local type_after = self._remodel_to == nil and self._question_marks or self._dash
	if self._remodel_to then
		type_after = Formatting:format_ship_code(self._remodel_to:type())
	end
	return {values = {value = type_after}, bg_color = self._transparent, text_align = self._center_align}
end

function ShipRemodelListKai:get_remodel_item_count(ship, item)
	local value = self._remodel_to == nil and self._question_marks
		or self._remodel_is_reversion and ship:remodel_to_cost()[item]
		or self._remodel_to:remodel_cost()[item]
		or self._dash
	return {values = {value = value}, bg_color = self._transparent, text_align = self._center_align}
end

-- TODO: fancy formatting
-- Formatting:format_blueprint_requirement(ship:remodel_to_blueprint(), true)
-- Formatting:format_blueprint_requirement(self._remodel_to:remodel_blueprint(), true)
-- Formatting:format_catapult_requirement(ship:remodel_to_catapult(), true)
-- Formatting:format_catapult_requirement(self._remodel_to:remodel_catapult(), true)
-- etc.

function ShipRemodelListKai:ammo(ship)
	return self:get_remodel_item_count(ship, 'ammo')
end

function ShipRemodelListKai:steel(ship)
	return self:get_remodel_item_count(ship, 'steel')
end

function ShipRemodelListKai:devmat(ship)
	return self:get_remodel_item_count(ship, 'devmat')
end

function ShipRemodelListKai:conmat(ship)
	return self:get_remodel_item_count(ship, 'conmat')
end

function ShipRemodelListKai:screw(ship)
	return self:get_remodel_item_count(ship, 'screw')
end

function ShipRemodelListKai:blueprint(ship)
	return self:get_remodel_item_count(ship, 'blueprint')
end

function ShipRemodelListKai:catapult(ship)
	return self:get_remodel_item_count(ship, 'catapult')
end

function ShipRemodelListKai:report(ship)
	return self:get_remodel_item_count(ship, 'report')
end

function ShipRemodelListKai:gunmat(ship)
	return self:get_remodel_item_count(ship, 'gunmat')
end

function ShipRemodelListKai:airmat(ship)
	return self:get_remodel_item_count(ship, 'airmat')
end

function ShipRemodelListKai:armament(ship)
	return self:get_remodel_item_count(ship, 'armament')
end

ShipRemodelListKai.process_item_key = Ship.process_item_key

ShipRemodelListKai.build_rows = ShipRemodelListKai.build_rows_breaks_as_empty_rows

function ShipRemodelListKai:create_header()
	local header_icons = {
		ammo = ResourceIcons.ammo,
		steel = ResourceIcons.steel,
		devmat = ResourceIcons.devmat,
		conmat = ResourceIcons.conmat,
		screw = ResourceIcons.screw,
		blueprint = ResourceIcons.blueprint,
		catapult = ResourceIcons.prototype_deck_catapult,
		report = ResourceIcons.report,
		gunmat = ResourceIcons.new_model_gun_mount_improvement_material,
		airmat = ResourceIcons.new_model_aerial_armament_material,
		armament = ResourceIcons.new_model_armament_material,
	}
	for key, value in pairs(header_icons) do
		local title = Formatting:format_resource_name(key)
		header_icons[key] = Formatting:format_image{value, caption = title, link = title}
		-- size = (key == "blueprint" or key == "catapult") and "24px" or nil}
	end
	self._header = format(self._header_template, header_icons)
	self._header_bottom = format(self._header_template_bottom, header_icons)
end

return ShipRemodelListKai