Module:EquipmentCategoriesKai

Revision as of 11:10, 20 October 2022 by Chocolatecravinghobo (talk | contribs) (Makeshift temporary messy hardcode-ish versatility update for an earlier rollout. Learnt a lot by attempting this. Labeled everything I added for smoother replacement/fixing.)

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

local BaseData = require('Module:BaseData')
local Formatting = require('Module:Formatting')
local Equipment = require('Module:Equipment')

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

local EquipmentCategoriesKai = BaseData{
	_type_category_template = "Category:${equipment_type}",
	_gun_fit_group_template = "Category:Guns in ${fit_group} fit group",
}

function EquipmentCategoriesKai:Categories(args)
	return self{
		_args = args
	}:get_categories()
end

function EquipmentCategoriesKai:create_equipment()
	local name = self._args.name or self._args[1]
	if name then
		self._equipment = Equipment(name)
	end
end

function EquipmentCategoriesKai:create_static_categories()
	table.insert(self._categories, "Category:Player equipment")
end

function EquipmentCategoriesKai:create_type_categories()
	local equipment_type = self._equipment:type()
	if equipment_type then
		table.insert(self._categories, format{self._type_category_template, equipment_type = Formatting:format_equipment_type_plural(equipment_type)})
	end
	if equipment_type == 3 or equipment_type == 38 then
		local fit_group = self._equipment:gun_fit_group()
		if fit_group then
			table.insert(self._categories, format{self._gun_fit_group_template, fit_group = fit_group})
		end
	end
end

-- Chocolatecravinghobo's makeshift temporary hardcode section till something better replaces it and/or the equipment categories rework happens 

function EquipmentCategoriesKai:create_icon_categories() --CCH 
	local equipment_icon = self._equipment:icon()
	if equipment_icon == 16 then
		table.insert(self._categories, format{"Category:High-angle Guns"})
	elseif equipment_icon == 45 then
		table.insert(self._categories, format{"Category:Night Fighter Aircraft"})
	elseif equipment_icon == 46 then
		table.insert(self._categories, format{"Category:Night Torpedo Bombers"})
	elseif equipment_icon == 47 then
		table.insert(self._categories, format{"Category:Land-based Patrol Aircraft"})
	elseif equipment_icon == 48 then
		table.insert(self._categories, format{"Category:Land-based Assault Aircraft"})
	elseif equipment_icon == 50 then
		table.insert(self._categories, format{"Category:Night Recon Seaplanes"})
	end
end

function EquipmentCategoriesKai:create_stat_categories() --Tried to utilise  Formatting:format_equipment_types from Module:Formatting  and  eq_group from Module:EquipmentInfoKai  but couldn't figure it out
	local equipment_icon = self._equipment:icon()
	local equipment_type = self._equipment:type()
	if equipment_icon == 16 then
		if self._equipment:aa() >= 8  then
			table.insert(self._categories, format{"Category:High-angle Guns with 8+ AA stat"})
		end
	elseif equipment_icon == 21 then
		if self._equipment:aa() >= 9  then
			table.insert(self._categories, format{"Category:${equipment_type} with 9+ AA stat", equipment_type = Formatting:format_equipment_type_plural(equipment_type)})
		end
	elseif eq_type == 12 or eq_type == 13 or eq_type == 93 then
		if self._equipment:aa() >= 2 then
			table.insert(self._categories, format{"Category:Air Radar"})
		end
		if self._equipment:los() >= 5 then
			table.insert(self._categories, format{"Category:Surface Radar"})
		end
	elseif eq_type == 7 or eq_type == 8 or eq_type == 10 or eq_type == 11 or eq_type == 25 or eq_type == 26 or eq_icon == 47 then
		if eq_type == 25 then
			local equipment_id = self._equipment:id()
			if equipment_id == 326 or equipment_id == 327 then
				table.insert(self._categories, format{"Category:Helicopters"})
			end
		end
		if self._equipment:asw() >= 7 then
			table.insert(self._categories, format{"Category:Aircraft with with 7+ ASW stat"})
		end
	end
end

-- end of Chocolatecravinghobo makeshift section

function EquipmentCategoriesKai:create_rarity_categories()
	local rarity = self._equipment:rarity()
	if rarity then
		table.insert(self._categories, format{"Category:${rarity} rarity equipment", rarity = Formatting:format_equipment_rarity(rarity)})
	end
end

function EquipmentCategoriesKai:create_obtainability_categories()
	local buildable, improvable, obtainable_through_upgrade = self._equipment:buildable(), self._equipment:improvement_products(), self._equipment:improvement_from()
	if buildable then
		table.insert(self._categories, format{"Category:Equipment buildable in Development"})
	end
	if improvable then
		table.insert(self._categories, format{"Category:Equipment improvable in Akashi's Improvement Arsenal"})
	end
	if obtainable_through_upgrade then
		table.insert(self._categories, format{"Category:Equipment obtainable by upgrade through Akashi's Improvement Arsenal"})
	end
end

function EquipmentCategoriesKai:write_categories()
	local links = {}
	for _, category in ipairs(self._categories) do
		table.insert(links, Formatting:format_link(category))
	end
	return table.concat(links)
end

function EquipmentCategoriesKai:get_categories()
	self._categories = {}
	self:create_equipment()
	if self._equipment then
		self:create_categories()
	end
	return self:write_categories()
end

function EquipmentCategoriesKai:create_categories()
	self:create_static_categories()
	self:create_type_categories()
	self:create_icon_categories() --CCH
	self:create_stat_categories() --CCH
	--self:create_rarity_categories()
	self:create_obtainability_categories()
end

return EquipmentCategoriesKai