third-strike-frame-data-json/index.js
2024-10-31 11:10:31 +01:00

75 lines
2.5 KiB
JavaScript

let characters
async function getCharacters() {
const res = await fetch(`./characters.json`)
if(res.ok) {
const json = await res.json()
window.localStorage.setItem("characters", JSON.stringify(json[0]))
return true
}
throw res.errorCode
}
function setMenu() {
const characters = JSON.parse(window.localStorage.getItem("characters"))
const nav = document.querySelector("nav")
let menuItems = ""
for (const [key, value] of Object.entries(characters)) {
menuItems += `<button onClick="showFrameData" id="${key}">${key}</button>`
}
nav.innerHTML = menuItems
}
function showFrameData(characterId) {
const characters = JSON.parse(window.localStorage.getItem("characters"))
const char = characters[characterId]
let tableString = ""
for (let move of char) {
let cancel = ""
for (const [key, value] of Object.entries(move.Cancel)) {
cancel += `<span class="cancel-box ${value ? key + "--" + value : ""}">
${key === "Super_art" ? "SA" : "" ||
key === "Special" ? "SP" : "" ||
key === "Self" ? "SC" : "" ||
key === "Chain" ? "NC" : "" ||
key === "Dash" ? "DC" : "" ||
key === "High_jump" ? "SJ" : ""}
</span>`
}
tableString += `<tr>
<td>${move.Name}</td>
<td>${move.Startup}</td>
<td>${move.Hit}</td>
<td>${move.Recovery}</td>
<td>${move.Block_advantage}</td>
<td>${move.Hit_advantage}</td>
<td>${move.Crouch_hit_advantage}</td>
<td><div class="cancel-container">${cancel}</div></td>
<td>${move.Parry.High ? "H" : ""}${move.Parry.High && move.Parry.Low ? "+" : ""}${move.Parry.Low ? "L" : ""} </td>
<td>${move.Kara_range}</td>
<td>${move.Throw_range}</td>
<td>${move.Damage}</td>
<td>${move.Stun}</td>
<td>${move.Bar_gain_attacker ? move.Bar_gain_attacker.Whiff : ""}/${move.Bar_gain_attacker ? move.Bar_gain_attacker.Hit : ""}/${move.Bar_gain_attacker ? move.Bar_gain_attacker.Block : ""}</td>
<td>${move.Bar_gain_opponent ? move.Bar_gain_opponent.Hit+ "/" : ""}${move.Bar_gain_opponent ? move.Bar_gain_opponent.Block : ""}</td>
</tr>
`
}
const table = document.querySelector("main tbody")
table.innerHTML = tableString
}
async function initialize() {
await getCharacters()
setMenu()
const btns = document.querySelectorAll('nav button')
btns.forEach(btn => {
btn.addEventListener('click', event => {
showFrameData(event.target.id);
});
});
}