Compare commits

..

No commits in common. "cb07cf14a88933e55d8e7ce82bfb3ba5c3535b8e" and "6891062351c4de4e78e982ef03c7f9b57fbc89aa" have entirely different histories.

7 changed files with 78 additions and 11 deletions

View File

@ -76,6 +76,11 @@ gameKey
name: '快捷商店',
defaults: KeyCode.KeyV
})
.register({
id: 'statistics',
name: '数据统计',
defaults: KeyCode.KeyB
})
.register({
id: 'viewMap_1',
name: '浏览地图_1',

View File

@ -3,6 +3,7 @@ import { MAIN_WIDTH, MAIN_HEIGHT, POP_BOX_WIDTH, CENTER_LOC } from './shared';
import {
saveSave,
mainUIController,
openStatistics,
saveLoad,
openSettings,
ReplaySettingsUI,
@ -15,6 +16,9 @@ export function createAction() {
.realize('save', () => {
saveSave(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]);
})
.realize('statistics', () => {
openStatistics(mainUIController);
})
.realize('load', () => {
saveLoad(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]);
})

View File

@ -8,7 +8,9 @@ import {
import { logger } from '@motajs/common';
import EventEmitter from 'eventemitter3';
import { isNil } from 'lodash-es';
import { tagMap } from '@motajs/render';
import { IDamageEnemy, IEnemyCollection, MapDamage } from '@motajs/types';
import { UserEnemyInfo } from '@user/data-state';
import { BlockCacher, ICanvasCacheItem, CanvasCacheItem } from './block';
import {
ILayerGroupRenderExtends,
@ -324,6 +326,7 @@ export class Damage extends RenderItem<EDamageEvent> {
const y = enemy.y!;
const { damage } = enemy.calDamage();
const cri = enemy.calCritical(1)[0]?.atkDelta ?? Infinity;
const real = enemy.getRealInfo() as UserEnemyInfo;
const dam1: DamageRenderable = {
align: 'left',
@ -342,6 +345,45 @@ export class Damage extends RenderItem<EDamageEvent> {
y: y * this.cellSize + this.cellSize - 11
};
block.add(dam1).add(dam2);
const hasHorn = real.special.has(33);
if (real.special.has(8) && real.togetherNum && !hasHorn) {
const dam3: DamageRenderable = {
align: 'right',
baseline: 'top',
text: real.togetherNum.toString(),
color: '#09FF5B',
x: x * this.cellSize + this.cellSize - 1,
y: y * this.cellSize + 2,
strokeWidth: 3
};
block.add(dam3);
}
if (real.special.has(30)) {
const dam4: DamageRenderable = {
align: 'left',
baseline: 'top',
text: '乾',
color: '#FDCD0B',
x: x * this.cellSize + 1,
y: y * this.cellSize + 2,
strokeWidth: 2,
font: '500 10px Verdana'
};
block.add(dam4);
}
if (enemy.col && hasHorn) {
const dam5: DamageRenderable = {
align: 'right',
baseline: 'top',
text: enemy.col.list.size.toString(),
color: '#fff866',
x: x * this.cellSize + this.cellSize - 1,
y: y * this.cellSize + 2,
strokeWidth: 3
};
block.add(dam5);
}
}
/**
@ -385,10 +427,25 @@ export class Damage extends RenderItem<EDamageEvent> {
) {
// todo: 这个应当可以自定义,通过地图伤害注册实现
let text = '';
const color = '#fa3';
const font = '300 9px Verdana';
let color = '#fa3';
let font = '300 9px Verdana';
if (dam.damage > 0) {
text = core.formatBigNumber(dam.damage, true);
} else if (dam.mockery) {
dam.mockery.sort((a, b) =>
a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]
);
const [tx, ty] = dam.mockery[0];
const dir = x > tx ? '←' : x < tx ? '→' : y > ty ? '↑' : '↓';
text = '嘲' + dir;
color = '#fd4';
font = '500 11px Verdana';
} else if (dam.hunt) {
text = '猎';
color = '#fd4';
font = '500 11px Verdana';
} else {
return;
}
const mapDam: DamageRenderable = {
@ -536,4 +593,9 @@ export class Damage extends RenderItem<EDamageEvent> {
}
}
// 注册为内部元素
tagMap.register<EDamageEvent, Damage>('damage', (_0, _1, _props) => {
return new Damage();
});
// const adapter = new RenderAdapter<Damage>('damage');

View File

@ -8,6 +8,7 @@ export * from './controller';
export * from './main';
export * from './save';
export * from './settings';
export * from './statistics';
export * from './statusBar';
export * from './toolbar';
export * from './viewmap';

View File

@ -20,6 +20,7 @@ import { generateKeyboardEvent } from '@motajs/system-action';
import { getVitualKeyOnce } from '@motajs/legacy-ui';
import { getAllSavesData, getSaveData, syncFromServer } from '../utils';
import { getInput } from '../components';
import { openStatistics } from './statistics';
import { saveWithExist } from './save';
import { compressToBase64 } from 'lz-string';
import { ViewMapUI } from './viewmap';
@ -275,12 +276,7 @@ export const GameInfo = defineComponent<MainSettingsProps>(props => {
const choose = async (key: ChoiceKey) => {
switch (key) {
case GameInfoChoice.Statistics: {
getConfirm(
props.controller,
'数据统计尚未完工',
CENTER_LOC,
POP_BOX_WIDTH
);
openStatistics(props.controller);
break;
}
case GameInfoChoice.Project: {

View File

@ -9,8 +9,6 @@ import { waitbox, ListPage, TextContent } from '../components';
import { DefaultProps } from '@motajs/render-vue';
import { ItemState } from '@user/data-state';
// 未完工
export interface StatisticsDataOneFloor {
enemyCount: number;
potionCount: number;

View File

@ -7,7 +7,8 @@ import * as glob from 'glob';
const custom = [
'container', 'image', 'sprite', 'shader', 'text', 'comment', 'custom',
'layer', 'layer-group', 'animate', 'icon', 'winskin', 'container-custom'
'layer', 'layer-group', 'animate', 'damage', 'graphics', 'icon', 'winskin',
'container-custom'
];
const aliases = glob.sync('packages/*/src').map((srcPath) => {