Jump to content

Module:Chessboard/Makruk

From Wikipedia, the free encyclopedia

local p = {}

function p.dims()
	return 8, 8
end

function p.letters()
	return {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'}
end

function p.image_board(size)
	return string.format( '[[File:Makrukboard.svg|%dx%dpx|link=]]', 8 * size, 8 * size )
end

function p.image_square( pc, row, col, size )
	local colornames = {
		l = { m = 'white', f = 'white' },
		d = { m = 'black', f = 'black' }
	}
	local piecenames = {
		l = { name = 'feudal', gender = 'm' },
		s = { name = 'seed', gender = 'm' },
		n = { name = 'nobleman', gender = 'm' },
		h = { name = 'horse', gender = 'm' },
		b = { name = 'boat', gender = 'f' },
		c = { name = 'cell', gender = 'f' },
		o = { name = 'inverted cell', gender = 'f' }
	}
	local symnames = {
		xx = 'black cross',
		ox = 'white cross',
		xo = 'black circle',
		oo = 'white circle',
		ul = 'arrow up-left',
		ua = 'arrow up',
		ur = 'arrow up-right',
		la = 'arrow left',
		ra = 'arrow right',
		dl = 'arrow down-left',
		da = 'arrow down',
		dr = 'arrow down-right',
		lr = 'arrow left-right',
		ud = 'arrow up-down',
		x0 = 'zero',
		x1 = 'one',
		x2 = 'two',
		x3 = 'three',
		x4 = 'four',
		x5 = 'five',
		x6 = 'six',
		x7 = 'seven',
		x8 = 'eight',
		x9 = 'nine',
	}
	local colchar = {'A','B','C','D','E','F','G','H'}
    local color = mw.ustring.gsub( pc, '^.*(%w)(%w).*$', '%2' ) or ''
    local piece = mw.ustring.gsub( pc, '^.*(%w)(%w).*$', '%1' ) or ''
    local alt = colchar[col] .. row .. ' '

    if colornames[color] and piecenames[piece] then
		alt = alt .. colornames[color][piecenames[piece]['gender']] .. ' ' .. piecenames[piece]['name']
    else
		alt = alt .. ( symnames[piece .. color] or piece .. ' ' .. color )
	end

	fn = ''

	if     pc == 'll' then
		fn = 'Khun_white'
	elseif pc == 'ld' then
		fn = 'Khun_black'
	elseif pc == 'sl' then
		fn = 'Met_white'
	elseif pc == 'sd' then
		fn = 'Met_black'
	elseif pc == 'nl' then
		fn = 'Khon_white'
	elseif pc == 'nd' then
		fn = 'Khon_black'
	elseif pc == 'hl' then
		fn = 'Ma_white'
	elseif pc == 'hd' then
		fn = 'Ma_black'
	elseif pc == 'bl' then
		fn = 'Ruea_white'
	elseif pc == 'bd' then
		fn = 'Ruea_black'
	elseif pc == 'cl' then
		fn = 'Bia_white'
	elseif pc == 'cd' then
		fn = 'Bia_black'
	elseif pc == 'ol' then
		fn = 'Biangai_white'
	elseif pc == 'od' then
		fn = 'Biangai_black'
	end

	return string.format( '[[File:%s.svg|%dx%dpx|alt=%s|%s|top]]', fn, size, size, alt, alt )

end

return p