Compare commits
No commits in common. "45a9950c70c5fbe5465f45295e27023942b70a1e" and "cf7edba39fcee0dc9f2236623c4f91323eec7972" have entirely different histories.
45a9950c70
...
cf7edba39f
|
|
@ -6,7 +6,6 @@ name = "Arendelle"
|
|||
|
||||
[[world]]
|
||||
name = "The Caribbean"
|
||||
rooms = [""]
|
||||
|
||||
[[drops]]
|
||||
name = "Twilight Stone"
|
||||
|
|
|
|||
|
|
@ -3,10 +3,6 @@ name = "Gold Beat"
|
|||
[[world]]
|
||||
name = "Toy Box"
|
||||
|
||||
[[world]]
|
||||
name = "The Caribbean"
|
||||
rooms = ["Exile Island"]
|
||||
|
||||
[[drops]]
|
||||
name = "Lightning Stone"
|
||||
kind = "material"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ name = "Arendelle"
|
|||
|
||||
[[world]]
|
||||
name = "San Fransokyo"
|
||||
rooms = ["Battlegate 11"]
|
||||
|
||||
[[drops]]
|
||||
name = "Writhing Gem"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ name = "High Soldier"
|
|||
|
||||
[[world]]
|
||||
name = "San Fransokyo"
|
||||
rooms = ["Battlegate 12", "North District (Night)"]
|
||||
|
||||
[[drops]]
|
||||
name = "Wellspring Gem"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ name = "Mechanitaur"
|
|||
|
||||
[[world]]
|
||||
name = "San Fransokyo"
|
||||
rooms = ["Battlegate 12"]
|
||||
|
||||
[[drops]]
|
||||
name = "Wellspring Gem"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ name = "Metal Troll"
|
|||
|
||||
[[world]]
|
||||
name = "San Fransokyo"
|
||||
rooms = ["Battlegate 11", "North District (Night)"]
|
||||
|
||||
[[drops]]
|
||||
name = "Wellspring Stone"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ name = "Spear Lizard"
|
|||
|
||||
[[world]]
|
||||
name = "The Caribbean"
|
||||
rooms = ["Battlegate 10", "Isla de los Mastiles"]
|
||||
|
||||
[[drops]]
|
||||
name = "Soothing Stone"
|
||||
|
|
|
|||
|
|
@ -10,8 +10,3 @@ note = "Spawn in Thoroughfare and go back to The Forest around the trees"
|
|||
world = "Toy Box"
|
||||
room = "Andy's House"
|
||||
note = "Outside the house in the garden"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Isla de los Mastiles"
|
||||
note = "On a rock to the right of the spawn point"
|
||||
|
|
|
|||
|
|
@ -5,12 +5,3 @@ group = "herb"
|
|||
world = "Monstropolis"
|
||||
room = "Lobby & Offices"
|
||||
note = "Vending Machine at the Laugh Floor's entrance"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Isla de los Mastiles"
|
||||
note = "Climb the walls and traverse the platforms"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Forsaken Isle"
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ note = "Laugh Floor on the desk in the very back"
|
|||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Fort"
|
||||
note = "In an yellow box on the front terrace from the spawn"
|
||||
note = "In a box on the front terrace from the spawn"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,2 @@
|
|||
name = "Portobello"
|
||||
group = "mushroom"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Horseshoe Island"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Ship's End"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,2 @@
|
|||
name = "Quail"
|
||||
group = "meat"
|
||||
|
||||
[[locations]]
|
||||
world = "The Carribean"
|
||||
room = "Docks"
|
||||
note = "Inside the building on the right side in a yellow box"
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
|
@ -1,19 +1,7 @@
|
|||
const TRACKED_STORAGE_NAME = "/drops/tracked/";
|
||||
|
||||
let gameName;
|
||||
|
||||
export let showOnlyTracked = false;
|
||||
export let kindFilter = new Set();
|
||||
|
||||
export function init() {
|
||||
const url = window.location.href;
|
||||
const firstPoint = url.indexOf("/", 8);
|
||||
const subUrl = url.substring(firstPoint + 1);
|
||||
const finalPoint = subUrl.indexOf("/");
|
||||
gameName = subUrl.substring(0, finalPoint);
|
||||
|
||||
loadTracked();
|
||||
|
||||
const onlyTrackedFilter = document.querySelector(
|
||||
'input[name="onlyTracked"]',
|
||||
);
|
||||
|
|
@ -61,49 +49,12 @@ function filter() {
|
|||
}
|
||||
}
|
||||
|
||||
function loadTracked() {
|
||||
const categories = document.querySelectorAll(".category-wrapper");
|
||||
let updates = 0;
|
||||
|
||||
for (const category of categories) {
|
||||
let id =
|
||||
category.dataset["matKind"] + "-" + category.dataset["matType"];
|
||||
id = gameName + TRACKED_STORAGE_NAME + id;
|
||||
|
||||
let isTracked = localStorage.getItem(id) === "true";
|
||||
if (isTracked) {
|
||||
category.dataset["isTracked"] = true;
|
||||
let trackButton = category.querySelector(".category button");
|
||||
updateTrackedState(trackButton, isTracked);
|
||||
updates += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (updates > 0) {
|
||||
filter();
|
||||
}
|
||||
}
|
||||
|
||||
export function track(element) {
|
||||
let parent = element.parentElement.parentElement;
|
||||
let id = parent.dataset["matKind"] + "-" + parent.dataset["matType"];
|
||||
id = gameName + TRACKED_STORAGE_NAME + id;
|
||||
|
||||
let isTracked = parent.dataset["isTracked"] ?? false;
|
||||
isTracked = isTracked === "true" ? false : true;
|
||||
|
||||
if (isTracked) {
|
||||
localStorage.setItem(id, true);
|
||||
} else {
|
||||
localStorage.removeItem(id);
|
||||
}
|
||||
|
||||
parent.dataset["isTracked"] = isTracked;
|
||||
updateTrackedState(element, isTracked);
|
||||
filter();
|
||||
}
|
||||
|
||||
function updateTrackedState(element, isTracked) {
|
||||
element.innerHTML = isTracked ? "Stop tracking" : "Start tracking";
|
||||
element.style["border-bottom-color"] = isTracked ? "#a00" : "#0a0";
|
||||
filter();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import "../common/prototypes.js";
|
||||
|
||||
const RECIPE_STORAGE_NAME = "kh1/synth/";
|
||||
const LIST_STORAGE_NAME = "kh1/synth/needed-mats";
|
||||
const RECIPE_STORAGE_NAME = "kh1/synth/recipe.";
|
||||
const LIST_STORAGE_NAME = "kh1/synth/needed-maths";
|
||||
|
||||
let markedNeededMaterials = [];
|
||||
|
||||
|
|
|
|||
|
|
@ -107,6 +107,8 @@ function selectRecipe(item, index) {
|
|||
}
|
||||
|
||||
let recipeName = item.querySelector(".title").innerText;
|
||||
console.log(item);
|
||||
console.log(item.querySelectorAll(".title"));
|
||||
localStorage.setItem(STORAGE_NAME + index, recipeName);
|
||||
|
||||
let stats = JSON.parse(item.dataset["stats"]);
|
||||
|
|
|
|||
|
|
@ -16,4 +16,15 @@ table {
|
|||
color: #ff7400;
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr:hover {
|
||||
background-color: #4f4f4f;
|
||||
}
|
||||
|
||||
& tr,
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #fff;
|
||||
padding: 7px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,17 +32,6 @@ table {
|
|||
thead th {
|
||||
background-color: var(--bg-dark-color);
|
||||
}
|
||||
|
||||
tbody tr:hover {
|
||||
background-color: #4f4f4f;
|
||||
}
|
||||
|
||||
& tr,
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #515151;
|
||||
padding: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
|
|
@ -129,37 +118,3 @@ input[type="checkbox"] {
|
|||
color: var(--primary-light-color);
|
||||
}
|
||||
}
|
||||
|
||||
.help {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 0px 8px;
|
||||
|
||||
&:after {
|
||||
content: "?";
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltip-wrapper {
|
||||
position: relative;
|
||||
|
||||
.tooltip {
|
||||
visibility: hidden;
|
||||
background-color: var(--bg-light-color);
|
||||
position: absolute;
|
||||
top: -42px;
|
||||
color: var(--text-color);
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 8px;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
&:hover .tooltip {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
li {
|
||||
max-height: 3rem;
|
||||
min-height: 3rem;
|
||||
align-content: center;
|
||||
}
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
use std::fmt::Display;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
pub mod direction;
|
||||
|
|
@ -16,17 +14,3 @@ pub enum Game {
|
|||
Bbs,
|
||||
Ddd,
|
||||
}
|
||||
|
||||
impl Display for Game {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let str = match self {
|
||||
Game::Kh1 => "kh1",
|
||||
Game::Kh2 => "kh2",
|
||||
Game::Kh3 => "kh3",
|
||||
Game::Bbs => "bbs",
|
||||
Game::Ddd => "ddd",
|
||||
};
|
||||
|
||||
f.write_str(str)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use std::{fmt::Display, path::PathBuf};
|
|||
|
||||
use serde::Deserialize;
|
||||
|
||||
use super::{Game, materials::MaterialDetails};
|
||||
use super::materials::MaterialDetails;
|
||||
|
||||
#[derive(Default, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Clone)]
|
||||
pub struct Enemy {
|
||||
|
|
@ -94,11 +94,7 @@ pub struct SpawnLocation {
|
|||
}
|
||||
|
||||
impl SpawnLocation {
|
||||
pub fn texture(&self, game: &Game) -> String {
|
||||
format!(
|
||||
"{}/{}",
|
||||
game,
|
||||
self.name.replace(" ", "-").replace("'", "").to_lowercase()
|
||||
)
|
||||
pub fn texture(&self) -> String {
|
||||
self.name.replace(" ", "-").to_lowercase()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use std::{fmt::Display, path::PathBuf};
|
||||
use std::path::PathBuf;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum IngredientGroup {
|
||||
Meat,
|
||||
|
|
@ -15,23 +15,6 @@ pub enum IngredientGroup {
|
|||
Special,
|
||||
}
|
||||
|
||||
impl Display for IngredientGroup {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let str = match self {
|
||||
IngredientGroup::Meat => "Meat",
|
||||
IngredientGroup::Seafood => "Seafood",
|
||||
IngredientGroup::Vegetable => "Vegetable",
|
||||
IngredientGroup::Mushroom => "Mushroom",
|
||||
IngredientGroup::Herb => "Herb",
|
||||
IngredientGroup::Fruit => "Fruit",
|
||||
IngredientGroup::Other => "Other",
|
||||
IngredientGroup::Special => "Special",
|
||||
};
|
||||
|
||||
f.write_str(str)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq)]
|
||||
pub struct Ingredient {
|
||||
pub name: String,
|
||||
|
|
@ -40,6 +23,13 @@ pub struct Ingredient {
|
|||
pub locations: Vec<Location>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq)]
|
||||
pub struct Location {
|
||||
pub world: String,
|
||||
pub room: String,
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
||||
impl Ingredient {
|
||||
pub fn import(path: &str) -> Vec<Ingredient> {
|
||||
let mut ingredients: Vec<Ingredient> = vec![];
|
||||
|
|
@ -63,15 +53,6 @@ impl Ingredient {
|
|||
}
|
||||
}
|
||||
|
||||
ingredients.sort_by(|a, b| a.group.cmp(&b.group));
|
||||
|
||||
ingredients
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq)]
|
||||
pub struct Location {
|
||||
pub world: String,
|
||||
pub room: String,
|
||||
pub note: Option<String>,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
<div>
|
||||
<div
|
||||
class="icon"
|
||||
style="background-image: url('../public/assets/worlds/{{ spawn.texture(data.game) }}.webp');"
|
||||
style="background-image: url('../public/assets/worlds/{{ spawn.texture() }}.webp');"
|
||||
></div>
|
||||
<div class="info">
|
||||
<p>{{ spawn.name }}</p>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
<h1>Kingdom Hearts III</h1>
|
||||
<ul>
|
||||
<li><a href="./kh3/drops.html">Material Drops</a></li>
|
||||
<li><a href="./kh3/ingredients.html">Ingredients</a></li>
|
||||
<li><a href="./kh3/food-sim.html">Food Simulator</a></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -3,30 +3,12 @@
|
|||
{% block title %}KH3 - Ingredients{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="{{ crate::find_hash("/public/styles/kh3/ingredients.css") }}"></link>
|
||||
<link rel="stylesheet" href="{{ crate::find_hash("/public/styles/common/ingredients.css") }}"></link>
|
||||
<script
|
||||
type="module"
|
||||
src="{{ crate::find_hash("/public/scripts/kh3/ingredients.js") }}"
|
||||
src="{{ crate::find_hash("/public/scripts/common/ingredients.js") }}"
|
||||
></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% for ingredient in ingredients %}
|
||||
<div>
|
||||
<h1>{{ingredient.name}}</h1>
|
||||
<ul>
|
||||
{% for location in ingredient.locations %}
|
||||
<li class="tooltip-wrapper" {% if location.note.is_some() %}style="cursor: help"{% endif %}>
|
||||
{{location.world+}} - {{+location.room}}
|
||||
{% match location.note %}
|
||||
{% when Some with (val) %}
|
||||
<div class="help"></div>
|
||||
<div class="tooltip">{{ val }}</div>
|
||||
{% when None %}
|
||||
{% endmatch %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
|
|
|||