Difference between revisions of "User:Histidine/Sandbox"

From Zero-K
Jump to navigation Jump to search
(Created page with "{| class="wikitable" style="text-align:center;" ! colspan="6" | http://manual.zero-k.info/unitpics/factorycloak.pngCloakbot Factory |- ! || Name || Role || Aliases || Cost...")
 
Line 28: Line 28:
 
|}
 
|}
  
Lua code to generate:
+
Lua widget code to generate:
<syntaxhighlight lang="Lua">
+
<syntaxhighlight lang="Lua" line='line'>
 
local fileOutputDir = "temp/"
 
local fileOutputDir = "temp/"
  
Line 102: Line 102:
  
 
function widget:Initialize()
 
function widget:Initialize()
  --local tbl = WG.crude.allOptions
 
  --WG.SaveTable(tbl, "", "crudeOptions.lua", "options", nil)
 
 
printTable("factorycloak", fileOutputDir)
 
printTable("factorycloak", fileOutputDir)
 
end
 
end
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 06:40, 6 April 2019

factorycloak.pngCloakbot Factory
Name Role Aliases Cost HP
cloakcon.png Conjurer Construction 120 450
cloakraid.png Glaive Raider 65 200
cloakheavyraid.png Scythe Raider 250 820
cloakskirm.png Ronin Skirmisher 90 420
cloakriot.png Reaver Riot 220 820
cloakassault.png Knight Assault 350 2400
cloakarty.png Sling Artillery 110 350
cloaksnipe.png Phantom Artillery 750 560
cloakaa.png Gremlin Other 150 550
cloakbomb.png Imp Bomb 120 50
cloakjammer.png Iris Other 600 600

Lua widget code to generate:

local fileOutputDir = "temp/"

local function getDescString(unitDef)
	local desc = Spring.Utilities.GetDescription(unitDef)
	if desc:find("Raider") then
		return "Raider"
	elseif desc:find("Riot") then
		return "Riot"
	elseif desc:find("Skirmisher") then
		return "Skirmisher"
	elseif desc:find("Assault") then
		return "Assault"
	elseif desc:find("Artillery") then
		return "Artillery"
	elseif desc:find("Anti-Air") then
		return "Anti-Air"
	elseif desc:find("Construction") then
		return "Construction"
	elseif desc:find("Scout") then
		return "Scout"
	elseif desc:find("Support") then
		return "Support"
	elseif desc:find("Anti-Heavy") then
		return "Anti-Heavy"
	elseif desc:find("Fighter") then
		return "Fighter"
	elseif desc:find("Bomber") then
		return "Bomber"
	elseif desc:find("Transport") then
		return "Transport"
	elseif desc:find("Bomb") then
		return "Bomb"
	else
		return "Other"
	end
end

local function generateTable(factoryDefName)
	local factoryDef = UnitDefNames[factoryDefName]

	local output = '{| class="wikitable" style="text-align:center;"\n'
	local imagePath = "http://manual.zero-k.info/unitpics/" .. factoryDefName .. ".png"
	output = output .. '! colspan="6" | ' .. imagePath .. "[[" .. factoryDef.humanName .. "]]\n"
	output = output .. "|-\n"
	output = output .. "! || Name || Role || Aliases || Cost || HP\n"
	output = output .. "|-\n"
	
	for index, unitDefID in ipairs(factoryDef.buildOptions) do
		local unitDef = UnitDefs[unitDefID]
		local unitName = unitDef.name
		imagePath = "http://manual.zero-k.info/unitpics/" .. unitName .. ".png"
		output = output .. "| " .. imagePath .. " || [[" .. unitDef.humanName .. "]] || " 
			.. getDescString(unitDef) .. " ||  || " .. unitDef.metalCost .. " || " 
			.. unitDef.health .. "\n"
		output = output .. "|-\n"
	end
	
	output = output .. "|}"
	
	return output
end

local function printTable(factoryDefName, outputDir)
	local str = generateTable(factoryDefName)
	local file = io.open (outputDir .. "/" .. factoryDefName .. ".txt", "w")
	if (file== nil) then Spring.Echo ("could not open file for writing!") return end
	file:write(str)
	file:flush()
	file:close()
end

function widget:Initialize()
	printTable("factorycloak", fileOutputDir)
end