feat: todo94

This commit is contained in:
unanmed 2023-12-01 21:46:18 +08:00
parent 5933a0a146
commit 43937c9a54
4 changed files with 59 additions and 6 deletions

View File

@ -91,7 +91,7 @@ dam4.png ---- 存档 59
[] 勇士身上显示攻防血 [] 勇士身上显示攻防血
[] 优化地图拖动 [] 优化地图拖动
[] 楼层转换加入随机小贴士 [] 楼层转换加入随机小贴士
[] ui 中如果元素发生改变,那么做出背景亮一下再熄灭的效果 [x] ui 中如果元素发生改变,那么做出背景亮一下再熄灭的效果
[] 双击怪物手册拐点可以直接在拖动条上定位 [] 双击怪物手册拐点可以直接在拖动条上定位
[] 重构技能树结构 [] 重构技能树结构
[] 技能树允许自动升级 [] 技能树允许自动升级

View File

@ -45,7 +45,9 @@
isMobile ? '' : '    ' isMobile ? '' : '    '
}}</span }}</span
> >
<span>{{ format(addAtk * ratio) }}</span> <span class="changable" :change="addAtkChangable">{{
format(addAtk * ratio)
}}</span>
</div> </div>
<div> <div>
<span <span
@ -53,7 +55,9 @@
isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;' isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;'
}}</span }}</span
> >
<span>{{ format(addDef * ratio) }}</span> <span class="changable" :change="addDefChangable">{{
format(addDef * ratio)
}}</span>
</div> </div>
<div> <div>
<span <span
@ -61,7 +65,7 @@
isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;' isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;'
}}</span }}</span
> >
<span <span class="changable" :change="nowDamageChangable"
><span style="font-family: 'Fira Code'">{{ ><span style="font-family: 'Fira Code'">{{
(nowDamage[0] as number) < 0 && !has(enemy.damage) (nowDamage[0] as number) < 0 && !has(enemy.damage)
? '=>' ? '=>'
@ -80,7 +84,9 @@
isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;' isMobile ? '' : '&nbsp;&nbsp;&nbsp;&nbsp;'
}}</span }}</span
> >
<span>{{ format(nowDamage[1]) }}</span> <span class="changable" :change="nowDamageChangable">{{
format(nowDamage[1])
}}</span>
</div> </div>
</div> </div>
</div> </div>
@ -93,6 +99,7 @@ import Chart, { ChartConfiguration } from 'chart.js/auto';
import { has, setCanvasSize } from '../plugin/utils'; import { has, setCanvasSize } from '../plugin/utils';
import { debounce } from 'lodash-es'; import { debounce } from 'lodash-es';
import { isMobile } from '../plugin/use'; import { isMobile } from '../plugin/use';
import { createChangable } from '@/plugin/ui/common';
const props = defineProps<{ const props = defineProps<{
fromBook?: boolean; fromBook?: boolean;
@ -123,6 +130,8 @@ const allDef = ref(originDef);
// //
const addAtk = ref(0); const addAtk = ref(0);
const addDef = ref(0); const addDef = ref(0);
const addAtkChangable = createChangable(addAtk).change;
const addDefChangable = createChangable(addDef).change;
const originDamage = enemy.enemy.calDamage(core.status.hero).damage; const originDamage = enemy.enemy.calDamage(core.status.hero).damage;
@ -139,6 +148,7 @@ const nowDamage = computed(() => {
if (!isFinite(originDamage)) return [-dam, dam]; if (!isFinite(originDamage)) return [-dam, dam];
return [originDamage - dam, dam]; return [originDamage - dam, dam];
}); });
const nowDamageChangable = createChangable(nowDamage, 1).change;
function generateChart(ele: HTMLCanvasElement, data: [number, number][]) { function generateChart(ele: HTMLCanvasElement, data: [number, number][]) {
Chart.defaults.color = '#aaa'; Chart.defaults.color = '#aaa';

36
src/plugin/ui/common.ts Normal file
View File

@ -0,0 +1,36 @@
import { Ref, ref, watch } from 'vue';
import { nextFrame } from '../utils';
interface ChangableValue<T> {
change: Ref<boolean>;
value: Ref<T>;
stop: () => void;
}
/**
* Changable的监听器
* @param value
*/
export function createChangable<T>(
value: Ref<T>,
key?: keyof T
): ChangableValue<T> {
const change = ref(false);
const stop = watch(value, (n, o) => {
if (key) {
if (n[key] === o[key]) return;
}
if (change.value) {
change.value = false;
nextFrame(() => (change.value = true));
} else {
change.value = true;
}
});
return {
change,
value,
stop
};
}

View File

@ -66,7 +66,12 @@
@click="changeFloorByDelta(-1)" @click="changeFloorByDelta(-1)"
class="button-text" class="button-text"
/> />
<span id="fly-now">{{ title }}</span> <span
class="changable"
id="fly-now"
:change="titleChange"
>{{ title }}</span
>
<right-outlined <right-outlined
@click="changeFloorByDelta(1)" @click="changeFloorByDelta(1)"
class="button-text" class="button-text"
@ -96,6 +101,7 @@ import { debounce } from 'lodash-es';
import { downloadCanvasImage, tip } from '../plugin/utils'; import { downloadCanvasImage, tip } from '../plugin/utils';
import { GameUi } from '@/core/main/custom/ui'; import { GameUi } from '@/core/main/custom/ui';
import { gameKey } from '@/core/main/init/hotkey'; import { gameKey } from '@/core/main/init/hotkey';
import { createChangable } from '@/plugin/ui/common';
const props = defineProps<{ const props = defineProps<{
num: number; num: number;
@ -158,6 +164,7 @@ function exit() {
const title = computed(() => { const title = computed(() => {
return core.status.maps[nowFloor.value].title; return core.status.maps[nowFloor.value].title;
}); });
const titleChange = createChangable(title).change;
/** /**
* 绘制小地图 * 绘制小地图