Merge branch 'dev' of github.com:unanmed/HumanBreak into dev

This commit is contained in:
unanmed 2025-09-10 22:23:16 +08:00
commit 24d9c63de3

View File

@ -17,11 +17,22 @@ export interface StatisticsDataOneFloor {
atkValue: number; atkValue: number;
defValue: number; defValue: number;
mdefValue: number; mdefValue: number;
atkGemCount: number;
defGemCount: number;
mdefGemCount: number;
}
export interface StatisticsDataPotionGem {
atkGemCount: number;
defGemCount: number;
mdefGemCount: number;
potionCount: number;
} }
export interface StatisticsData { export interface StatisticsData {
total: StatisticsDataOneFloor; total: StatisticsDataOneFloor;
floors: Map<FloorIds, StatisticsDataOneFloor>; floors: Map<FloorIds, StatisticsDataOneFloor>;
potionGem: StatisticsDataPotionGem;
} }
export interface StatisticsProps extends UIComponentProps, DefaultProps { export interface StatisticsProps extends UIComponentProps, DefaultProps {
@ -48,7 +59,8 @@ export const Statistics = defineComponent<StatisticsProps>(props => {
<ListPage <ListPage
list={list} list={list}
selected="total" selected="total"
loc={[180, 0, 630, 480]} loc={[180, 0, 480, 480]}
height={470}
close close
onClose={close} onClose={close}
lineHeight={24} lineHeight={24}
@ -73,11 +85,23 @@ const statisticsPanelProps = {
} satisfies SetupComponentOptions<StatisticsPanelProps>; } satisfies SetupComponentOptions<StatisticsPanelProps>;
const TotalStatistics = defineComponent<StatisticsPanelProps>(props => { const TotalStatistics = defineComponent<StatisticsPanelProps>(props => {
return () => ( return () => {
<container> const total = props.data.total;
<TextContent text="" width={310}></TextContent>
</container> const text1 = `全塔地图中,共有怪物${total.enemyCount}个。`;
); const text2 = `共有宝石${total.gemCount}个,共加攻击力${total.atkValue}点、防御力${total.defValue}点,魔防${total.mdefValue}点。`;
const text3 = `共有血瓶${total.potionCount}个,共加生命值${total.potionValue}点。`;
return (
<TextContent
text={`${text1}${text2}${text3}`}
width={330}
loc={[0, 5, 330, 470]}
height={470}
lineHeight={9}
></TextContent>
);
};
}, statisticsPanelProps); }, statisticsPanelProps);
const FloorStatistics = defineComponent<StatisticsPanelProps>(props => { const FloorStatistics = defineComponent<StatisticsPanelProps>(props => {
@ -89,7 +113,21 @@ const EnemyStatistics = defineComponent<StatisticsPanelProps>(props => {
}, statisticsPanelProps); }, statisticsPanelProps);
const PotionStatistics = defineComponent<StatisticsPanelProps>(props => { const PotionStatistics = defineComponent<StatisticsPanelProps>(props => {
return () => <container></container>; return () => {
const gemPotion = props.data.potionGem;
const text1 = `全塔地图中,共有红宝石${gemPotion.atkGemCount}个,共有蓝宝石${gemPotion.defGemCount}个,共有缘宝石${gemPotion.mdefGemCount}个。`;
const text2 = `共有血瓶${gemPotion.potionCount}个。`;
return (
<TextContent
text={`${text1}${text2}`}
width={330}
loc={[0, 5, 330, 470]}
height={470}
lineHeight={9}
></TextContent>
);
};
}, statisticsPanelProps); }, statisticsPanelProps);
export function calculateStatisticsOne( export function calculateStatisticsOne(
@ -124,7 +162,10 @@ export function calculateStatisticsOne(
potionValue: 0, potionValue: 0,
atkValue: 0, atkValue: 0,
defValue: 0, defValue: 0,
mdefValue: 0 mdefValue: 0,
atkGemCount: 0,
defGemCount: 0,
mdefGemCount: 0
}; };
if (!diff) return statistics; if (!diff) return statistics;
core.status.maps[floorId].blocks.forEach(v => { core.status.maps[floorId].blocks.forEach(v => {
@ -152,12 +193,15 @@ export function calculateStatisticsOne(
} }
if (atk > 0) { if (atk > 0) {
statistics.atkValue += atk; statistics.atkValue += atk;
statistics.atkGemCount++;
} }
if (def > 0) { if (def > 0) {
statistics.defValue += def; statistics.defValue += def;
statistics.defGemCount++;
} }
if (mdef > 0) { if (mdef > 0) {
statistics.mdefValue += mdef; statistics.mdefValue += mdef;
statistics.mdefGemCount++;
} }
} }
} }
@ -214,9 +258,18 @@ export function calculateStatistics(): StatisticsData {
return prev; return prev;
}); });
const potionGem = floors.values().reduce((prev, curr) => {
prev.atkGemCount += curr.atkGemCount;
prev.defGemCount += curr.defGemCount;
prev.mdefGemCount += curr.mdefGemCount;
prev.potionCount += curr.potionCount;
return prev;
});
return { return {
total, total,
floors floors,
potionGem
}; };
} }