◆少前百科是非盈利性、非官方的少女前线维基百科。 ◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科。 ◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科 ◆To foreigners,You can use twitter to contact us. |
“Widget:融合势力属性”的版本间的差异
小 |
小 |
||
第10行: | 第10行: | ||
let resolution = new Array(5); | let resolution = new Array(5); | ||
− | let variables = {size: 0, formation: | + | let variables = {size: 0, formation: 5, lv: 100, rank: 4, resolution: 4}; |
let stars; | let stars; | ||
第32行: | 第32行: | ||
function updateResSignal() { return; } | function updateResSignal() { return; } | ||
− | function addInputs(container, name, labels, | + | function addInputs(container, name, labels, base = 0) { |
for (let i = 0; i < 5; i++) { | for (let i = 0; i < 5; i++) { | ||
let label = document.createElement('label'); | let label = document.createElement('label'); | ||
第43行: | 第43行: | ||
container.appendChild(label); | container.appendChild(label); | ||
input.addEventListener('click', e => { | input.addEventListener('click', e => { | ||
− | let val = +e.currentTarget.value; | + | let val = +e.currentTarget.value + base; |
− | if (variables[ | + | if (variables[name] != val) { |
− | variables[ | + | variables[name] = val; |
updateAttrs(); | updateAttrs(); | ||
} | } | ||
第58行: | 第58行: | ||
let rankCtrl = document.getElementById('rank-control'); | let rankCtrl = document.getElementById('rank-control'); | ||
let resCtrl = document.getElementById('resolve-control'); | let resCtrl = document.getElementById('resolve-control'); | ||
− | if (sizeCtrl) addInputs(sizeCtrl, 'size', ['微', '小', '中', '大', '巨'] | + | if (sizeCtrl) addInputs(sizeCtrl, 'size', ['微', '小', '中', '大', '巨']); |
− | if (maxform == 5) addInputs(formCtrl, 'formation', ['×1', '×2', '×3', '×4', '×5'], | + | if (maxform == 5) addInputs(formCtrl, 'formation', ['×1', '×2', '×3', '×4', '×5'], 1); |
else formCtrl.textContent = '×1'; | else formCtrl.textContent = '×1'; | ||
let lvLabel = document.createElement('label'); | let lvLabel = document.createElement('label'); | ||
第104行: | 第104行: | ||
let unitid = div.dataset.id; | let unitid = div.dataset.id; | ||
if (unitid < 2000 || unitid == 2006 || unitid == 3010) maxform = 1; | if (unitid < 2000 || unitid == 2006 || unitid == 3010) maxform = 1; | ||
− | variables.formation = maxform | + | variables.formation = maxform; |
type = div.dataset.type; | type = div.dataset.type; | ||
ratios = div.dataset.attrs.split(',').map(x => +x); | ratios = div.dataset.attrs.split(',').map(x => +x); |
2022年5月1日 (日) 22:04的版本
<script> const type_coef = [
[4.79, 3.67, 0.46, 0.55, 0.75, 0.18], [3.84, 2.94, 0.42, 0.44, 0.60, 0.15], [3.60, 2.76, 0.42, 0.42, 0.57, 0.14]];
const size_coef = [100, 102, 105, 108, 110]; const rank_coef = [80, 90, 100, 110, 120]; let div, type, ratios, grow; let maxform = 5; let resolution = new Array(5);
let variables = {size: 0, formation: 5, lv: 100, rank: 4, resolution: 4}; let stars;
function calc(attr, lv, rank, size, resolve, form) {
let ratio = ratios[attr]; let base = type_coef[type][attr] * ratio * 2 * grow * size_coef[size] * rank_coef[rank] * form / (maxform * 5e6); let accretion = type_coef[type][attr] * ratio * (lv - 1) * grow * size_coef[size] * rank_coef[rank] * form / (maxform * 1e8); if (base - Math.floor(base) < 1e-3) { base = Math.floor(base); } return Math.ceil(base) + Math.floor(accretion) + form * resolution[resolve][attr];
}
function updateAttrs() {
for (let i = 7; --i;) document.getElementById('attr-td-' + i).textContent = calc( i-1, variables.lv, variables.rank, variables.size, variables.resolution, variables.formation);
}
function updateResSignal() { return; }
function addInputs(container, name, labels, base = 0) {
for (let i = 0; i < 5; i++) { let label = document.createElement('label'); let input = document.createElement('input'); input.type = 'radio'; input.value = i; input.name = name; label.appendChild(input); if (labels) label.insertAdjacentText('beforeend', labels[i]); container.appendChild(label); input.addEventListener('click', e => { let val = +e.currentTarget.value + base; if (variables[name] != val) { variables[name] = val; updateAttrs(); } }); }
}
function addControl() {
let sizeCtrl = document.getElementById('size-control'); let formCtrl = document.getElementById('formation-control'); let lvCtrl = document.getElementById('lv-control'); let rankCtrl = document.getElementById('rank-control'); let resCtrl = document.getElementById('resolve-control'); if (sizeCtrl) addInputs(sizeCtrl, 'size', ['微', '小', '中', '大', '巨']); if (maxform == 5) addInputs(formCtrl, 'formation', ['×1', '×2', '×3', '×4', '×5'], 1); else formCtrl.textContent = '×1'; let lvLabel = document.createElement('label'); lvLabel.textContent = '等级'; let lvInput = document.createElement('input'); lvInput.type = 'number'; lvInput.max = 100; lvInput.min = 1; lvInput.value = 100; lvLabel.appendChild(lvInput); lvCtrl.appendChild(lvLabel); stars = rankCtrl.children; for (let i = 5; i--;) stars[i].src = '/images/0/0a/StarWhite.svg'; for (let i = 3 - type; i < 5; i++) { let star = stars[i]; stars[i].addEventListener('click', e => { let rank = +e.currentTarget.dataset.id; if (variables.rank != rank) { variables.rank = rank; for (let j = 3 - type; j <= rank; j++) stars[j].className = ; for (let j = rank + 1; j < 5; j++) stars[j].className = 'star-dark'; updateAttrs(); } }); } for (let i = 0; i < 5; i++) { let input = document.createElement('input'); input.type = 'radio'; input.value = i; input.name = 'resolution'; resCtrl.appendChild(input); input.addEventListener('click', e => { let val = +e.currentTarget.value; if (variables.resolution != val) variables.resolution = val; updateAttrs(); updateResSignal(); }); }
}
function main() {
div = document.getElementById('attrs'); let unitid = div.dataset.id; if (unitid < 2000 || unitid == 2006 || unitid == 3010) maxform = 1; variables.formation = maxform; type = div.dataset.type; ratios = div.dataset.attrs.split(',').map(x => +x); grow = div.dataset.grow; let r2d = div.dataset.resolution.split(';'); for (let i = 0; i < 5; i++) { rs = r2d[i].split(','); resolution[i] = new Array(6); for (let j = 0; j < 6; j++) resolution[i][j] = +rs[j]; } addControl(); updateAttrs();
}
window.onload = main; </script>