some more additions related to move usage
This commit is contained in:
@@ -202,7 +202,7 @@ fn increase_attack_usage(index: i64) {
|
|||||||
fn search_learnset(index: i64) -> Vec<PokemonDataLearnset> {
|
fn search_learnset(index: i64) -> Vec<PokemonDataLearnset> {
|
||||||
let connection = sqlite::open("./pokemon.db").unwrap();
|
let connection = sqlite::open("./pokemon.db").unwrap();
|
||||||
let mut learnset: Vec<PokemonDataLearnset> = vec![];
|
let mut learnset: Vec<PokemonDataLearnset> = vec![];
|
||||||
let move_query = "SELECT pl.id, pl.learnset_id, l.name, l.types, l.power, l.category FROM pokemon__learnset pl JOIN learnset l on pl.learnset_id = l.id WHERE pl.pokemon_id = ? ORDER BY usage DESC";
|
let move_query = "SELECT pl.id, pl.learnset_id, l.name, l.types, l.power, l.category, pl.usage FROM pokemon__learnset pl JOIN learnset l on pl.learnset_id = l.id WHERE pl.pokemon_id = ? ORDER BY usage DESC";
|
||||||
for row in connection
|
for row in connection
|
||||||
.prepare(move_query)
|
.prepare(move_query)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
@@ -218,6 +218,7 @@ fn search_learnset(index: i64) -> Vec<PokemonDataLearnset> {
|
|||||||
types: serde_json::from_str(row.read::<&str, _>("types")).unwrap_or(vec![0]),
|
types: serde_json::from_str(row.read::<&str, _>("types")).unwrap_or(vec![0]),
|
||||||
power: row.read::<i64, _>("power"),
|
power: row.read::<i64, _>("power"),
|
||||||
category: row.read::<i64, _>("category"),
|
category: row.read::<i64, _>("category"),
|
||||||
|
usage: row.read::<i64, _>("usage"),
|
||||||
};
|
};
|
||||||
learnset.push(row_result)
|
learnset.push(row_result)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ pub struct PokemonDataLearnset {
|
|||||||
pub types: Vec<i64>,
|
pub types: Vec<i64>,
|
||||||
pub power: i64,
|
pub power: i64,
|
||||||
pub category: i64,
|
pub category: i64,
|
||||||
|
pub usage: i64,
|
||||||
}
|
}
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
pub struct MoveSearchResult {
|
pub struct MoveSearchResult {
|
||||||
|
|||||||
@@ -68,12 +68,15 @@
|
|||||||
}
|
}
|
||||||
$: {
|
$: {
|
||||||
if (pokemonData) {
|
if (pokemonData) {
|
||||||
if (pokemonData.terastype[0] !== selected_terastype) {
|
console.log(pokemonData)
|
||||||
|
if (init_flag) {
|
||||||
selected_terastype = pokemonData.terastype[0];
|
selected_terastype = pokemonData.terastype[0];
|
||||||
|
init_flag = false;
|
||||||
}
|
}
|
||||||
if (pokemonData.item !== selected_item) {
|
if (pokemonData.item !== selected_item) {
|
||||||
selected_item = pokemonData.item;
|
selected_item = pokemonData.item;
|
||||||
}
|
}
|
||||||
|
total_move_usage = pokemonData.learnset.map((v) => v.usage).reduce((partialSum, a) => partialSum + a, 0);
|
||||||
// validator
|
// validator
|
||||||
level = level_validator(level);
|
level = level_validator(level);
|
||||||
pokemonData.hp_v = v_validator(pokemonData.hp_v);
|
pokemonData.hp_v = v_validator(pokemonData.hp_v);
|
||||||
@@ -306,7 +309,7 @@
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let total_move_usage = 0;
|
||||||
export let hp_final = 0;
|
export let hp_final = 0;
|
||||||
export let attack_final = 0;
|
export let attack_final = 0;
|
||||||
export let defense_final = 0;
|
export let defense_final = 0;
|
||||||
@@ -316,7 +319,8 @@
|
|||||||
let level = 50;
|
let level = 50;
|
||||||
let selected_terastype = 0;
|
let selected_terastype = 0;
|
||||||
let selected_item = 0;
|
let selected_item = 0;
|
||||||
|
let init_flag = true;
|
||||||
|
let filter_move = '';
|
||||||
function calculate_hp(stat, v, d) {
|
function calculate_hp(stat, v, d) {
|
||||||
// floor({(種族値+個体値)×2+min(63,floor(floor(1+√努力値)÷4))}×レベル÷100)+レベル+10
|
// floor({(種族値+個体値)×2+min(63,floor(floor(1+√努力値)÷4))}×レベル÷100)+レベル+10
|
||||||
return Math.floor((stat * 2 + v + d / 4) * (level / 100) + level + 10);
|
return Math.floor((stat * 2 + v + d / 4) * (level / 100) + level + 10);
|
||||||
@@ -357,8 +361,11 @@
|
|||||||
<td style="display: flex;">
|
<td style="display: flex;">
|
||||||
<select
|
<select
|
||||||
bind:value={selected_terastype}
|
bind:value={selected_terastype}
|
||||||
on:change={() =>
|
on:change={(a) => {
|
||||||
(pokemonData.terastype = [selected_terastype])}
|
console.log(a);
|
||||||
|
pokemonData.terastype = [selected_terastype];
|
||||||
|
console.log(selected_terastype);
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<option value={0}> なし </option>
|
<option value={0}> なし </option>
|
||||||
{#each available_type as curr_type}
|
{#each available_type as curr_type}
|
||||||
@@ -924,8 +931,10 @@
|
|||||||
</table>
|
</table>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
<AccordionItem open title="技">
|
<AccordionItem open title="技">
|
||||||
|
<input bind:value={filter_move} type="text"/>
|
||||||
<table class="learnset">
|
<table class="learnset">
|
||||||
{#each pokemonData.learnset as learnset}
|
{#each pokemonData.learnset as learnset}
|
||||||
|
{#if filter_move === '' || learnset.name.includes(filter_move)}
|
||||||
<tr
|
<tr
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
console.log("passing" + learnset.name);
|
console.log("passing" + learnset.name);
|
||||||
@@ -949,7 +958,9 @@
|
|||||||
<td>{@html generate_type(learnset.types)}</td>
|
<td>{@html generate_type(learnset.types)}</td>
|
||||||
<td>{learnset.name}</td>
|
<td>{learnset.name}</td>
|
||||||
<td>{learnset.power}</td>
|
<td>{learnset.power}</td>
|
||||||
|
<td>{total_move_usage === 0 ? 0 : Math.round(learnset.usage/total_move_usage*10000)/100}%</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
</table>
|
</table>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
|
|||||||
@@ -62,4 +62,5 @@ export interface PokemonLearnsetDBData {
|
|||||||
types: number[];
|
types: number[];
|
||||||
power: number;
|
power: number;
|
||||||
category: number;
|
category: number;
|
||||||
|
usage: number;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user