Module:AreaMapDisplay: Difference between revisions
From IdleOn MMO Wiki
Tag: Undo |
mNo edit summary |
||
Line 33: | Line 33: | ||
height = '428px' | height = '428px' | ||
}) | }) | ||
:wikitext('[[File:' . | :wikitext('[[File:' .. WorldImage .. '|808x428px]]') | ||
-- 画像リンク無効化用DIV | -- 画像リンク無効化用DIV | ||
Line 50: | Line 50: | ||
-- 各エリアごとの地点を追加 | -- 各エリアごとの地点を追加 | ||
for _, record in ipairs(results) do | for _, record in ipairs(results) do | ||
-- color_textとcolor_fillをAreaMapDisplay/rowに格納するまでの暫定処理 | |||
local mapping_color_text = { | |||
['Blunder Hills World Map.png'] = '#392927', | |||
['Yum Yum Desert World Map.png'] = '#392827', | |||
['Frostbite Tundra World Map.png'] = '#272F39', | |||
['Hyperion Nebula World Map.png'] = '#261C27', | |||
["Smoulderin' Plateau World Map.png"] = '#372626', | |||
['Spirited Valley World Map.png'] = '#2D4732' | |||
} | |||
local mapping_color_fill = { | |||
['Blunder Hills World Map.png'] = '#C0985C', | |||
['Yum Yum Desert World Map.png'] = '#C68D5C', | |||
['Frostbite Tundra World Map.png'] = '#85BACB', | |||
['Hyperion Nebula World Map.png'] = '#9F6671', | |||
["Smoulderin' Plateau World Map.png"] = '#A5796B', | |||
['Spirited Valley World Map.png'] = '#9FB582' | |||
} | |||
record.color_text = mapping_color_text[record.WorldImage] | |||
record.color_fill = mapping_color_fill[record.WorldImage] | |||
root:tag('div') | root:tag('div') | ||
:css({ | :css({ | ||
Line 59: | Line 90: | ||
['z-index'] = 2 | ['z-index'] = 2 | ||
}) | }) | ||
:wikitext('[[Worlds#' .. record.ID .. ' - ' .. record.Area .. '|' .. tostring(p.createMapPoint(record.ID, record.Area, record.Size + 6)) .. ']]') | :wikitext('[[Worlds#' .. record.ID .. ' - ' .. record.Area .. '|' .. tostring(p.createMapPoint(record.ID, record.Area, record.Size + 6, record.color_text, record.color_fill)) .. ']]') | ||
end | end | ||
Line 65: | Line 96: | ||
end | end | ||
function p.createMapPoint(id, text, size) | function p.createMapPoint(id, text, size, color_text, color_fill) | ||
-- wiki link [[]]をまたぐので、ヘルプファンクションでinnerdivとspanを作る。 | -- wiki link [[]]をまたぐので、ヘルプファンクションでinnerdivとspanを作る。 | ||
local innerdiv = mw.html.create('div') | local innerdiv = mw.html.create('div') | ||
Line 75: | Line 106: | ||
height = size .. 'px', | height = size .. 'px', | ||
['border-radius'] = '50%', | ['border-radius'] = '50%', | ||
['background-color'] = | ['background-color'] = color_fill, | ||
border = '2px solid | border = '2px solid ' .. color_text, | ||
}) | }) | ||
Line 82: | Line 113: | ||
:attr('title', text) | :attr('title', text) | ||
:css({ | :css({ | ||
color = | color = color_text, | ||
['font-size'] = '10px', | ['font-size'] = '10px', | ||
['font-family'] = "'Helvetica', sans-serif", | ['font-family'] = "'Helvetica', sans-serif", |
Revision as of 02:18, 25 July 2024
Usage:
{{#invoke:AreaMapDisplay|map|WorldImage=Blunder Hills World Map.png}}
Lua error: Error: Table AreaMapDisplayData not found..
The data:
Special:CargoTables/AreaData (edit in Worlds)
local p = {}
local cargo = mw.ext.cargo
function p.map(frame)
local args = frame.args
local WorldImage = args.WorldImage
local results = cargo.query(
'AreaMapDisplayData',
'Area, WorldImage, x, y, Size, ID',
{where = 'WorldImage = "' .. mw.text.nowiki(WorldImage) .. '"'}
)
local root = mw.html.create('div')
:css({
position = 'relative',
left = '0px',
top = '0px',
width = '808px',
height = '428px'
})
-- ベースイメージの設定
root:tag('span')
:css({
position = 'absolute',
left = '0px',
top = '0px',
['z-index'] = 0,
width = '808px',
height = '428px'
})
:wikitext('[[File:' .. WorldImage .. '|808x428px]]')
-- 画像リンク無効化用DIV
root:tag('div')
:css({
position = 'absolute',
left = '0px',
top = '0px',
right = '0px',
bottom = '0px',
['z-index'] = 1,
['background-color'] = 'rgba(0, 0, 0, 0)'
})
-- 各エリアごとの地点を追加
for _, record in ipairs(results) do
-- color_textとcolor_fillをAreaMapDisplay/rowに格納するまでの暫定処理
local mapping_color_text = {
['Blunder Hills World Map.png'] = '#392927',
['Yum Yum Desert World Map.png'] = '#392827',
['Frostbite Tundra World Map.png'] = '#272F39',
['Hyperion Nebula World Map.png'] = '#261C27',
["Smoulderin' Plateau World Map.png"] = '#372626',
['Spirited Valley World Map.png'] = '#2D4732'
}
local mapping_color_fill = {
['Blunder Hills World Map.png'] = '#C0985C',
['Yum Yum Desert World Map.png'] = '#C68D5C',
['Frostbite Tundra World Map.png'] = '#85BACB',
['Hyperion Nebula World Map.png'] = '#9F6671',
["Smoulderin' Plateau World Map.png"] = '#A5796B',
['Spirited Valley World Map.png'] = '#9FB582'
}
record.color_text = mapping_color_text[record.WorldImage]
record.color_fill = mapping_color_fill[record.WorldImage]
root:tag('div')
:css({
position = 'absolute',
left = record.x .. 'px',
top = record.y .. 'px',
transform = 'translate(-50%, -50%)',
['line-height'] = '95%',
['z-index'] = 2
})
:wikitext('[[Worlds#' .. record.ID .. ' - ' .. record.Area .. '|' .. tostring(p.createMapPoint(record.ID, record.Area, record.Size + 6, record.color_text, record.color_fill)) .. ']]')
end
return tostring(root)
end
function p.createMapPoint(id, text, size, color_text, color_fill)
-- wiki link [[]]をまたぐので、ヘルプファンクションでinnerdivとspanを作る。
local innerdiv = mw.html.create('div')
:css({
display = 'inline-flex',
['justify-content'] = 'center',
['align-items'] = 'center',
width = size .. 'px',
height = size .. 'px',
['border-radius'] = '50%',
['background-color'] = color_fill,
border = '2px solid ' .. color_text,
})
innerdiv:tag('span')
:attr('title', text)
:css({
color = color_text,
['font-size'] = '10px',
['font-family'] = "'Helvetica', sans-serif",
['font-weight'] = 'bold'
})
:wikitext(id)
return tostring(innerdiv)
end
return p