Widget:costumeSwitcher: Difference between revisions
Jump to navigation
Jump to search
Pianoforte (talk | contribs) No edit summary |
Added document-ready wait functionality as the MediaWiki does not wait for DOM |
||
(15 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<includeonly><script> | <includeonly><script> | ||
RLQ.push(['jquery', function () { | |||
$(document).ready(function() { | |||
// Let's make sure the correct values are shown | |||
$('.modswitcher').change(); | |||
}); | |||
}]); | |||
function swap_mod(element) { | |||
var selectBox = $(element); | |||
var selectedValue = selectBox.find(':selected').val(); | |||
var tmp = new DOMParser().parseFromString(selectedValue, "text/html"); | |||
var tdollData = jQuery.parseJSON(tmp.documentElement.textContent); | |||
var statContainer = selectBox.closest('.stattable'); | |||
tdollData = updateCalculatedValues(tdollData); | |||
for (var key in tdollData) { | |||
if (tdollData.hasOwnProperty(key)) { | |||
var valField = statContainer.find('*[data-tdoll-stat-id="' + key + '"]'); | |||
var newValue = tdollData[key]; | |||
valField.text(newValue); | |||
} | |||
} | |||
// ToDo: find a better way of finding out if it's a mod | |||
// ToDo: find a better way of telling which skills are available with which mod | |||
var isMod = selectBox.find(':selected').text().indexOf('MOD') >= 0; | |||
statContainer.find('.skillform .tabButtonLane button').last().toggle(isMod); | |||
// With mod-change the visible skillbuttons might change, too, so trigger the last visible one | |||
// For now it only has to be set if we change to Base, as it has only one skill | |||
if (!isMod) { | |||
statContainer.find('.skillform .tabButtonLane button:visible').last().click(); | |||
} | |||
} | |||
function updateCalculatedValues(data) { | |||
var ret = data; | |||
// Calculating Max HP for full dummied T-Doll | |||
if (ret.hasOwnProperty("max_hp_t")) { | |||
ret.hpmaxwd = ret.max_hp_t * 5; | |||
} | |||
return ret; | |||
} | |||
function swap_costume(element) { | function swap_costume(element) { | ||
var neededGadgets = [ 'ext.gadget.md5hasher' ]; | var neededGadgets = [ 'ext.gadget.md5hasher' ]; | ||
Line 27: | Line 75: | ||
selectBox.closest('.costumeContainer').find('.chibiAnimation,.live2dAnimation,.artTab').trigger("costume_changed", chibiCostumeName); | selectBox.closest('.costumeContainer').find('.chibiAnimation,.live2dAnimation,.artTab').trigger("costume_changed", chibiCostumeName); | ||
var basePath = " | var basePath = "https://en.gfwiki.com/images/"; // ToDo: find a better way to find out the base path | ||
var tdollId = selectBox.closest('.costumeContainer').find('.tdoll_chibi').data('tdollId'); | var tdollId = selectBox.closest('.costumeContainer').find('.tdoll_chibi').data('tdollId'); | ||
var costumeId = tdollId + chibiCostumeName; | var costumeId = tdollId + chibiCostumeName; | ||
Line 56: | Line 104: | ||
</script> | </script> | ||
<div style="display:flex"> | <div style="display:flex"> | ||
<!--{if $moddable neq ''}--><select class="gf-droplist" autocomplete="off" onchange="swap_mod(this)" > | <!--{if $moddable neq ''}--><select class="gf-droplist modswitcher" style="padding-left: 2px;padding-right: 8px;margin-right: 2px;" autocomplete="off" onchange="swap_mod(this)"> | ||
<option value= | <option value='<!--{$defaultstats|escape:'html'}-->'>BASE</option> | ||
<option value= | <option value='<!--{$mod1stats|escape:'html'}-->'>MOD1</option> | ||
<option value= | <option value='<!--{$mod2stats|escape:'html'}-->'>MOD2</option> | ||
<option value= | <option value='<!--{$mod3stats|escape:'html'}-->' selected="selected">MOD3</option> | ||
</select><!--{/if}--> | </select><!--{/if}--> | ||
<select class="gf-droplist" style="flex-grow: 1;" autocomplete="off" onchange="swap_costume(this)" > | <select class="gf-droplist" style="flex-grow: 1;" autocomplete="off" onchange="swap_costume(this)" > | ||
Line 77: | Line 125: | ||
|defaultpaths={{filepath:Springfield.png|420}},,{{filepath:Springfield_D.png|420}},,{{filepath:Springfield_S.png|420}},,{{filepath:Springfield_chibi.png|420}} | |defaultpaths={{filepath:Springfield.png|420}},,{{filepath:Springfield_D.png|420}},,{{filepath:Springfield_S.png|420}},,{{filepath:Springfield_chibi.png|420}} | ||
|costume1name=test1 | |costume1name=test1 | ||
|moddable=1 | |||
|costume1paths={{filepath:Springfield_costume1.png|420}},,{{filepath:Springfield_costume1_D.png|420}},,{{filepath:Springfield_costume1_S.png|420}},,{{filepath:Springfield_costume1_chibi.png|420}} | |costume1paths={{filepath:Springfield_costume1.png|420}},,{{filepath:Springfield_costume1_D.png|420}},,{{filepath:Springfield_costume1_S.png|420}},,{{filepath:Springfield_costume1_chibi.png|420}} | ||
|costume2name=test2 | |costume2name=test2 |