fixed linting

This commit is contained in:
2023-01-21 21:46:24 +09:00
parent 6c5b4a1452
commit 2b8edd5c25
3 changed files with 71 additions and 54 deletions

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import MainWrapper from './lib/MainWrapper.svelte' import MainWrapper from "./lib/MainWrapper.svelte";
import DamageCalculator from './lib/DamageCalculator.svelte' import DamageCalculator from "./lib/DamageCalculator.svelte";
let player1Data; let player1Data;
let player2Data; let player2Data;
</script> </script>
@@ -8,21 +8,14 @@
<main class="container"> <main class="container">
<div class="main-row"> <div class="main-row">
<div class="column-1"> <div class="column-1">
<MainWrapper <MainWrapper bind:pokemonStatus={player1Data} />
bind:pokemonStatus={player1Data}
/>
</div> </div>
<div class="column-2"> <div class="column-2">
<MainWrapper <MainWrapper bind:pokemonStatus={player2Data} />
bind:pokemonStatus={player2Data}
/>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<DamageCalculator <DamageCalculator bind:player1Data bind:player2Data />
bind:player1Data={player1Data}
bind:player2Data={player2Data}
/>
</div> </div>
</main> </main>

View File

@@ -7,7 +7,6 @@
let attackData; let attackData;
$: { $: {
if (myValue > 0 && myValue !== currentValue) { if (myValue > 0 && myValue !== currentValue) {
invoke("search_move", { index: myValue }).then((r) => { invoke("search_move", { index: myValue }).then((r) => {
currentValue = myValue; currentValue = myValue;
attackData = r; attackData = r;
@@ -23,7 +22,13 @@
let defender; let defender;
let atk_value; let atk_value;
let def_value; let def_value;
if (!player1Data || !player2Data || !attackData || (!!attackData && ![1, 2].includes(attackData.category))) { if (
!player1Data ||
!player2Data ||
!attackData ||
(!!attackData && ![1, 2].includes(attackData.category))
) {
// display some message somewhere
console.log("skip"); console.log("skip");
return; return;
} }
@@ -53,13 +58,13 @@
minDamage: 0, minDamage: 0,
// 攻撃側タイプ // 攻撃側タイプ
// TODO: try catchでエラーハンドリング // TODO: try catchでエラーハンドリング
atk_type: JSON.parse(attacker.types),// 配列なのでjson parse atk_type: JSON.parse(attacker.types), // 配列なのでjson parse
// 防御側タイプ // 防御側タイプ
def_type: JSON.parse(defender.types), def_type: JSON.parse(defender.types),
// 技タイプ // 技タイプ
move_type: JSON.parse(attackData.types), move_type: JSON.parse(attackData.types),
// 範囲の計算で使用する // 範囲の計算で使用する
} };
// 計算 // 計算
let d = damage(data); let d = damage(data);
@@ -67,33 +72,35 @@
total_max_damage = d.maxDamage; total_max_damage = d.maxDamage;
total_min_damage = d.minDamage; total_min_damage = d.minDamage;
} }
function damage(data){ function damage(data) {
// 基本の計算 // 基本の計算
var step1 = Math.trunc(data.level * 2 / 5 + 2); var step1 = Math.trunc((data.level * 2) / 5 + 2);
var step2 = Math.trunc(step1 * data.attack_power * data.atk_value / data.def_value); var step2 = Math.trunc(
(step1 * data.attack_power * data.atk_value) / data.def_value
);
data.maxDamage = Math.trunc(step2 / 50 + 2); // この時点の計算結果は最大ダメージ data.maxDamage = Math.trunc(step2 / 50 + 2); // この時点の計算結果は最大ダメージ
// 各種補正かけた結果を返す // 各種補正かけた結果を返す
return modify(data) return modify(data);
} }
// 全部一気にやると大変なので、一旦基本計算から // 全部一気にやると大変なので、一旦基本計算から
function modify(data){ function modify(data) {
// 範囲補正 // 範囲補正
// 親子愛補正 // 親子愛補正
// ※svでおやこあいの特性はないのでスキップする // ※svでおやこあいの特性はないのでスキップする
// 天気補正 // 天気補正
// 急所補正 // 急所補正
// 乱数補正 // 乱数補正
data.minDamage = getMinDamage(data) data.minDamage = getMinDamage(data);
// タイプ一致補正 // タイプ一致補正
let type_match = false let type_match = false;
for (let i = 0; i < data.atk_type.length && !type_match; i++){ for (let i = 0; i < data.atk_type.length && !type_match; i++) {
for (let j = 0; j < data.move_type.length && !type_match; j++){ for (let j = 0; j < data.move_type.length && !type_match; j++) {
if (data.atk_type[i] === data.move_type[j]){ if (data.atk_type[i] === data.move_type[j]) {
// タイプ一致したら判定終了 // タイプ一致したら判定終了
type_match = true; type_match = true;
data.maxDamage = Math.trunc(data.maxDamage*1.5) data.maxDamage = Math.trunc(data.maxDamage * 1.5);
data.minDamage = Math.trunc(data.minDamage*1.5) data.minDamage = Math.trunc(data.minDamage * 1.5);
} }
} }
} }
@@ -101,7 +108,6 @@
// 相性補正 // 相性補正
// 相性の計算の関数をとってくる // 相性の計算の関数をとってくる
// やけど補正 // やけど補正
// 壁補正 // 壁補正
// ブレインフォース補正 // ブレインフォース補正
@@ -117,15 +123,15 @@
// 半減木の実補正 // 半減木の実補正
// その他ダメージ補正(M twice) // その他ダメージ補正(M twice)
// ダイマックス技などの軽減(M protect) // ダイマックス技などの軽減(M protect)
return data return data;
} }
// 乱数補正 // 乱数補正
// ダメージは、乱数で0.85~1.00をかけた値の範囲で変動する // ダメージは、乱数で0.85~1.00をかけた値の範囲で変動する
// 1.00はそのままの値なので、 // 1.00はそのままの値なので、
// 0.85をかけた最小ダメージだけを計算する // 0.85をかけた最小ダメージだけを計算する
// 少数切り捨て // 少数切り捨て
function getMinDamage(data){ function getMinDamage(data) {
return Math.trunc(data.maxDamage * 85/100); return Math.trunc((data.maxDamage * 85) / 100);
} }
async function getItems(keyword) { async function getItems(keyword) {
try { try {
@@ -140,40 +146,58 @@
let myValue; let myValue;
let currentValue = 0; let currentValue = 0;
</script> </script>
<div class="calculator"> <div class="calculator">
<table> <table>
<tr> <tr>
<td> <td>
<input type="radio" name="direction" value="p1p2" bind:group={attack_direction}> P1 ->> P2 <input
type="radio"
name="direction"
value="p1p2"
bind:group={attack_direction}
/> P1 ->> P2
</td> </td>
<td> <td>
<input type="radio" name="direction" value="p2p1" bind:group={attack_direction}> P2 ->> P1 <input
type="radio"
name="direction"
value="p2p1"
bind:group={attack_direction}
/> P2 ->> P1
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<AutoComplete <AutoComplete
showClear={true} showClear={true}
searchFunction="{getItems}" searchFunction={getItems}
delay="200" delay="200"
localFiltering={false} localFiltering={false}
labelFieldName="name" labelFieldName="name"
valueFieldName="id" valueFieldName="id"
bind:value="{myValue}" bind:value={myValue}
/> />
</td> </td>
<td><input type="button" value="Calculate" on:click={calculate_damage}></td> <td
><input
type="button"
value="Calculate"
on:click={calculate_damage}
/></td
>
<td>Total Damage: {total_min_damage} ~ {total_max_damage}</td> <td>Total Damage: {total_min_damage} ~ {total_max_damage}</td>
</tr> </tr>
</table> </table>
{JSON.stringify(player1Data)} - {JSON.stringify(player1Data)} -
{JSON.stringify(player2Data)}<br> {attack_direction} {JSON.stringify(player2Data)}<br />
{attack_direction}
</div> </div>
<style> <style>
.calculator { .calculator {
height: 100px; height: 100px;
width: 100%; width: 100%;
border-top: 2px solid white; border-top: 2px solid white;
} }
</style> </style>

View File

@@ -55,23 +55,23 @@
<div class="row"> <div class="row">
<AutoComplete <AutoComplete
showClear={true} showClear={true}
searchFunction="{getItems}" searchFunction={getItems}
delay="200" delay="200"
localFiltering={false} localFiltering={false}
labelFieldName="name" labelFieldName="name"
valueFieldName="id" valueFieldName="id"
bind:value="{myValue}" bind:value={myValue}
/> />
</div> </div>
<div class="row"> <div class="row">
<DisplayData <DisplayData
pokemonData={pokemonData} {pokemonData}
bind:hp_final={hp_final} bind:hp_final
bind:atk_final={atk_final} bind:atk_final
bind:def_final={def_final} bind:def_final
bind:spatk_final={spatk_final} bind:spatk_final
bind:spdef_final={spdef_final} bind:spdef_final
bind:spd_final={spd_final} bind:spd_final
/> />
</div> </div>
</div> </div>