fix: remove clownfish (broken untextured scene model)
The clownfish GLB is a full aquarium scene (water plane, light, bubbles, mirrored body) with no textures. It renders as a giant gray/white object that obscures the tank. Replaced with a second blue_tang in the starter lineup. 9 species remain.
This commit is contained in:
+1
-4
@@ -12,7 +12,6 @@ export const FISH_PRICES: Record<FishSpecies, number> = {
|
|||||||
neon_tetra: 75,
|
neon_tetra: 75,
|
||||||
oscar: 120,
|
oscar: 120,
|
||||||
knifefish: 110,
|
knifefish: 110,
|
||||||
clownfish: 90,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Cost to upgrade TO tank tier (index = target tier) */
|
/** Cost to upgrade TO tank tier (index = target tier) */
|
||||||
@@ -88,11 +87,10 @@ export const SPECIES_RARITY_DIST: Record<FishSpecies, Record<Rarity, number>> =
|
|||||||
neon_tetra: { common: 65, uncommon: 20, rare: 8, epic: 5, legendary: 2 },
|
neon_tetra: { common: 65, uncommon: 20, rare: 8, epic: 5, legendary: 2 },
|
||||||
oscar: { common: 55, uncommon: 25, rare: 12, epic: 6, legendary: 2 },
|
oscar: { common: 55, uncommon: 25, rare: 12, epic: 6, legendary: 2 },
|
||||||
knifefish: { common: 50, uncommon: 25, rare: 13, epic: 8, legendary: 4 },
|
knifefish: { common: 50, uncommon: 25, rare: 13, epic: 8, legendary: 4 },
|
||||||
clownfish: { common: 60, uncommon: 22, rare: 10, epic: 6, legendary: 2 },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Available species in shop */
|
/** Available species in shop */
|
||||||
export const SHOP_SPECIES: FishSpecies[] = ["angelfish", "goldfish", "guppy", "neon_tetra", "oscar", "knifefish", "clownfish", "betta", "blue_tang", "flower_horn"];
|
export const SHOP_SPECIES: FishSpecies[] = ["angelfish", "goldfish", "guppy", "neon_tetra", "oscar", "knifefish", "betta", "blue_tang", "flower_horn"];
|
||||||
|
|
||||||
/** Species display names */
|
/** Species display names */
|
||||||
export const SPECIES_NAMES: Record<FishSpecies, string> = {
|
export const SPECIES_NAMES: Record<FishSpecies, string> = {
|
||||||
@@ -105,5 +103,4 @@ export const SPECIES_NAMES: Record<FishSpecies, string> = {
|
|||||||
neon_tetra: "Neon Tetra",
|
neon_tetra: "Neon Tetra",
|
||||||
oscar: "Oscar Cichlid",
|
oscar: "Oscar Cichlid",
|
||||||
knifefish: "Ghost Knifefish",
|
knifefish: "Ghost Knifefish",
|
||||||
clownfish: "Clownfish",
|
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ export function createDefaultState(): GameState {
|
|||||||
makeFish("neon_tetra", 0.28),
|
makeFish("neon_tetra", 0.28),
|
||||||
makeFish("oscar", 0.60),
|
makeFish("oscar", 0.60),
|
||||||
makeFish("knifefish", 0.50),
|
makeFish("knifefish", 0.50),
|
||||||
makeFish("clownfish", 0.40),
|
makeFish("blue_tang", 0.45),
|
||||||
makeFish("betta", 0.45),
|
makeFish("betta", 0.45),
|
||||||
makeFish("blue_tang", 0.50),
|
makeFish("blue_tang", 0.50),
|
||||||
makeFish("flower_horn", 0.55),
|
makeFish("flower_horn", 0.55),
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
export type Rarity = "common" | "uncommon" | "rare" | "epic" | "legendary";
|
export type Rarity = "common" | "uncommon" | "rare" | "epic" | "legendary";
|
||||||
export type Pattern = "solid" | "striped" | "spotted" | "gradient";
|
export type Pattern = "solid" | "striped" | "spotted" | "gradient";
|
||||||
export type Gender = "male" | "female";
|
export type Gender = "male" | "female";
|
||||||
export type FishSpecies = "angelfish" | "goldfish" | "guppy" | "betta" | "blue_tang" | "flower_horn" | "neon_tetra" | "oscar" | "knifefish" | "clownfish";
|
export type FishSpecies = "angelfish" | "goldfish" | "guppy" | "betta" | "blue_tang" | "flower_horn" | "neon_tetra" | "oscar" | "knifefish";
|
||||||
|
|
||||||
export interface Genetics {
|
export interface Genetics {
|
||||||
hueShift: number; // -30 to +30
|
hueShift: number; // -30 to +30
|
||||||
|
|||||||
-11
@@ -56,7 +56,6 @@ function getSpeciesUrl(sp: FishSpecies): string {
|
|||||||
neon_tetra: "models/blendswap/neon_tetra.glb",
|
neon_tetra: "models/blendswap/neon_tetra.glb",
|
||||||
oscar: "models/blendswap/oscar_cichlid.glb",
|
oscar: "models/blendswap/oscar_cichlid.glb",
|
||||||
knifefish: "models/blendswap/ghost_knifefish.glb",
|
knifefish: "models/blendswap/ghost_knifefish.glb",
|
||||||
clownfish: "models/blendswap/clownfish.glb",
|
|
||||||
};
|
};
|
||||||
return urls[sp];
|
return urls[sp];
|
||||||
}
|
}
|
||||||
@@ -65,8 +64,6 @@ function getSpeciesUrl(sp: FishSpecies): string {
|
|||||||
// swim-clip evaluation of the actual GLB data). Fish are scaled by
|
// swim-clip evaluation of the actual GLB data). Fish are scaled by
|
||||||
// targetLength / modelLength. This replaces the old
|
// targetLength / modelLength. This replaces the old
|
||||||
// Box3.setFromObject auto-measure, which under-reports armature-scaled
|
// Box3.setFromObject auto-measure, which under-reports armature-scaled
|
||||||
// models (oscar, knifefish) and for the clownfish is dominated by its
|
|
||||||
// 45.3-unit water plane (see FishSpec.modelLength).
|
|
||||||
const SPECIES_LENGTH: Record<FishSpecies, number> = {
|
const SPECIES_LENGTH: Record<FishSpecies, number> = {
|
||||||
angelfish: 4.2139,
|
angelfish: 4.2139,
|
||||||
goldfish: 1.7386,
|
goldfish: 1.7386,
|
||||||
@@ -77,14 +74,7 @@ const SPECIES_LENGTH: Record<FishSpecies, number> = {
|
|||||||
neon_tetra: 3.6548,
|
neon_tetra: 3.6548,
|
||||||
oscar: 8.8411,
|
oscar: 8.8411,
|
||||||
knifefish: 23.0140,
|
knifefish: 23.0140,
|
||||||
clownfish: 8.2773,
|
|
||||||
};
|
};
|
||||||
// The clownfish GLB bundles a whole aquarium scene: an untextured white
|
|
||||||
// "Surface" water plane (45.3 units — the "white box"), a "TopLight"
|
|
||||||
// emissive slab, a "Bubbles" prop, and "Original-Mirrored", a mirrored
|
|
||||||
// duplicate of the body that overlaps the real "ClownFish" node. Hide
|
|
||||||
// everything except the fish itself.
|
|
||||||
const HIDDEN_CLOWNFISH_NODES = ["Surface", "TopLight", "Bubbles", "Original-Mirrored"];
|
|
||||||
function fishToSpec(f: FishData): FishSpec {
|
function fishToSpec(f: FishData): FishSpec {
|
||||||
return {
|
return {
|
||||||
url: getSpeciesUrl(f.species),
|
url: getSpeciesUrl(f.species),
|
||||||
@@ -93,7 +83,6 @@ function fishToSpec(f: FishData): FishSpec {
|
|||||||
speed: [0.3 * f.genetics.speedMult, 0.7 * f.genetics.speedMult],
|
speed: [0.3 * f.genetics.speedMult, 0.7 * f.genetics.speedMult],
|
||||||
orient: isQuaternius(f.species) ? { y: Math.PI / 2 } : undefined,
|
orient: isQuaternius(f.species) ? { y: Math.PI / 2 } : undefined,
|
||||||
genetics: f.genetics,
|
genetics: f.genetics,
|
||||||
hideNodes: f.species === "clownfish" ? HIDDEN_CLOWNFISH_NODES : undefined,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user