mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
feat: rename a bit
This commit is contained in:
1 parent
66eaaef6de
commit
6ce1135835
8 files changed
+104
-59
No files matched your search
@@ -8,7 +8,7 @@ import AstroPWA from "@vite-pwa/astro";
|
||||
import favicons from "astro-favicons";
|
||||
import { defineConfig } from "astro/config";
|
||||
import packageJSON from "../../package.json";
|
||||
import { tools } from "./src/constants/tools";
|
||||
import { tools } from "./src/core/tools/tools";
|
||||
|
||||
const POSSIBLE_TARGETS = ["app", "web"];
|
||||
|
||||
|
||||
+1
-1
@@ -183,7 +183,7 @@ function patch(stage0: StageParameters, stage1: StageParameters) {
|
||||
}
|
||||
}
|
||||
|
||||
export function aggregateStages(
|
||||
export function aggregateStageParameters(
|
||||
base: StageParameters,
|
||||
stages: StageParameters[],
|
||||
stage: number
|
||||
+8
-37
@@ -3,31 +3,21 @@ import {
|
||||
TankAttributeChange_AttributeName,
|
||||
} from "@protos/blitz_static_tank_upgrade_single_stage";
|
||||
|
||||
export enum CharacteristicsGroup {
|
||||
Firepower = "firepower",
|
||||
Maneuverability = "maneuverability",
|
||||
Survivability = "survivability",
|
||||
Miscellaneous = "miscellaneous",
|
||||
}
|
||||
export type CharacteristicOutput = number | string | null;
|
||||
|
||||
interface Characteristic {
|
||||
render: (helpers: {
|
||||
characteristic: (name: CharacteristicName) => number;
|
||||
value: (helpers: {
|
||||
characteristic: (name: CharacteristicName) => CharacteristicOutput;
|
||||
attribute: (name: TankAttributeChange_AttributeName) => number;
|
||||
shell: (name: ShellUpgrageSingleChange_AttributeName) => number;
|
||||
}) => number | string | null;
|
||||
}) => CharacteristicOutput;
|
||||
}
|
||||
|
||||
type CharacteristicName = keyof typeof characteristics;
|
||||
|
||||
type CharacteristicsOrder = {
|
||||
group: CharacteristicsGroup;
|
||||
characteristics: CharacteristicName[];
|
||||
}[];
|
||||
export type CharacteristicName = keyof typeof characteristics;
|
||||
|
||||
export const characteristics = {
|
||||
gun_type: {
|
||||
render({ attribute }) {
|
||||
value({ attribute }) {
|
||||
const isPump = attribute(
|
||||
TankAttributeChange_AttributeName.ATTRIBUTE_NAME_IS_PUMP
|
||||
);
|
||||
@@ -45,7 +35,7 @@ export const characteristics = {
|
||||
},
|
||||
|
||||
damage: {
|
||||
render({ shell }) {
|
||||
value({ shell }) {
|
||||
return shell(
|
||||
ShellUpgrageSingleChange_AttributeName.ATTRIBUTE_NAME_ARMOR_DAMAGE
|
||||
);
|
||||
@@ -53,29 +43,10 @@ export const characteristics = {
|
||||
},
|
||||
|
||||
dpm: {
|
||||
render({ characteristic }) {
|
||||
value({ characteristic }) {
|
||||
const damage = characteristic("damage");
|
||||
|
||||
return 1;
|
||||
},
|
||||
},
|
||||
} satisfies Record<string, Characteristic>;
|
||||
|
||||
export const characteristicsOrder: CharacteristicsOrder = [
|
||||
{
|
||||
group: CharacteristicsGroup.Firepower,
|
||||
characteristics: ["gun_type", "dpm"],
|
||||
},
|
||||
{
|
||||
group: CharacteristicsGroup.Maneuverability,
|
||||
characteristics: [],
|
||||
},
|
||||
{
|
||||
group: CharacteristicsGroup.Survivability,
|
||||
characteristics: [],
|
||||
},
|
||||
{
|
||||
group: CharacteristicsGroup.Miscellaneous,
|
||||
characteristics: [],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,25 @@
|
||||
import type { CharacteristicName } from "./characteristics";
|
||||
|
||||
type CharacteristicsOrder = {
|
||||
group: string;
|
||||
order: CharacteristicName[];
|
||||
}[];
|
||||
|
||||
export const characteristicsGroups = [
|
||||
{
|
||||
group: "firepower",
|
||||
order: ["gun_type", "dpm"],
|
||||
},
|
||||
{
|
||||
group: "maneuverability",
|
||||
order: [],
|
||||
},
|
||||
{
|
||||
group: "survivability",
|
||||
order: [],
|
||||
},
|
||||
{
|
||||
group: "miscellaneous",
|
||||
order: [],
|
||||
},
|
||||
] satisfies CharacteristicsOrder;
|
||||
@@ -0,0 +1,56 @@
|
||||
import type {
|
||||
ShellUpgrageSingleChange_AttributeName,
|
||||
StageParameters,
|
||||
TankAttributeChange_AttributeName,
|
||||
} from "@protos/blitz_static_tank_upgrade_single_stage";
|
||||
import {
|
||||
characteristics,
|
||||
type CharacteristicName,
|
||||
type CharacteristicOutput,
|
||||
} from "./characteristics";
|
||||
|
||||
export function renderCharacteristics(
|
||||
parameters: StageParameters,
|
||||
shellId: number
|
||||
) {
|
||||
const computed: Partial<Record<CharacteristicName, CharacteristicOutput>> =
|
||||
{};
|
||||
|
||||
function characteristic(name: CharacteristicName) {
|
||||
if (name in computed) return computed[name] as CharacteristicOutput;
|
||||
throw new Error(`${name} not computed yet`);
|
||||
}
|
||||
|
||||
function attribute(name: TankAttributeChange_AttributeName) {
|
||||
const attribute = parameters.attributes.find(
|
||||
(attribute) => attribute.attribute_name === name
|
||||
);
|
||||
|
||||
if (!attribute) throw new Error(`Attribute ${name} not found`);
|
||||
("");
|
||||
|
||||
return attribute.value;
|
||||
}
|
||||
|
||||
function shell(name: ShellUpgrageSingleChange_AttributeName) {
|
||||
const shell = parameters.shells_upgrades.find(
|
||||
(shell) => shell.shell_id === name
|
||||
);
|
||||
|
||||
if (!shell) throw new Error(`Shell ${name} not found`);
|
||||
|
||||
const attribute = shell.changes.find(
|
||||
(change) => change.attribute_name === name
|
||||
);
|
||||
|
||||
if (!attribute) throw new Error(`Shell attribute ${name} not found`);
|
||||
|
||||
return attribute.value;
|
||||
}
|
||||
|
||||
for (const _name in characteristics) {
|
||||
const name = _name as CharacteristicName;
|
||||
const _characteristic = characteristics[name];
|
||||
const value = _characteristic.value({ characteristic, attribute, shell });
|
||||
}
|
||||
}
|
||||
File renamed without changes.
@@ -1,4 +1,4 @@
|
||||
import { _characteristicsOrder } from "../../../../constants/characteristics";
|
||||
import { _characteristicsOrder } from "../../../../core/tankopedia/characteristics";
|
||||
|
||||
export function GET() {
|
||||
return Response.json(_characteristicsOrder);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { times } from "lodash-es";
|
||||
import { Suspense, useMemo } from "react";
|
||||
import { api } from "../../../core/api/dynamic";
|
||||
import { aggregateStages } from "../../../core/blitz/aggregateStages";
|
||||
import { aggregateStageParameters } from "../../../core/tankopedia/aggregateStageParameters";
|
||||
import { characteristics } from "../../../core/tankopedia/characteristics";
|
||||
import { useAwait } from "../../../hooks/useAwait";
|
||||
import { Tankopedia } from "../../../stores/tankopedia";
|
||||
|
||||
@@ -18,7 +19,8 @@ function Content({ id }: { id: string }) {
|
||||
|
||||
const stage = Tankopedia.use((state) => state.stage);
|
||||
const parameters = useMemo(
|
||||
() => aggregateStages(tank.base_stats!, tank.upgrade_stages, stage),
|
||||
() =>
|
||||
aggregateStageParameters(tank.base_stats!, tank.upgrade_stages, stage),
|
||||
[stage]
|
||||
);
|
||||
|
||||
@@ -39,26 +41,17 @@ function Content({ id }: { id: string }) {
|
||||
))}
|
||||
</div>
|
||||
|
||||
<pre children={JSON.stringify(parameters, null, 2)} />
|
||||
<h1>{tank.name?.value}</h1>
|
||||
|
||||
<h2>Characteristics</h2>
|
||||
|
||||
{/* {_characteristicsOrder.map((group) => (
|
||||
{characteristicsOrder.map(({ group, order }) => (
|
||||
<>
|
||||
<h2>{CharacteristicsGroup[group.group]}</h2>
|
||||
<h2>{group}</h2>
|
||||
|
||||
{group.attributes.map(
|
||||
(attribute) =>
|
||||
attribute.name in attributes && (
|
||||
<p>
|
||||
{TankAttributeChange_AttributeName[attribute.name]}:{" "}
|
||||
{attributes[attribute.name]}
|
||||
</p>
|
||||
)
|
||||
)}
|
||||
{order.map((name) => {
|
||||
const characteristic = characteristics[name];
|
||||
|
||||
return <span>{}</span>;
|
||||
})}
|
||||
</>
|
||||
))} */}
|
||||
))}
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user