diff --git a/idea.md b/idea.md index 6b0a815..a14a1b8 100644 --- a/idea.md +++ b/idea.md @@ -85,7 +85,7 @@ dam4.png ---- 存档 59 [x] 自定义快捷键 [x] 优化 ui 控制系统 [x] 优化游戏进程与渲染进程间的通讯 -[] 优化资源分离,音乐放到 bgm 目录下 +[x] 优化资源分离,音乐放到 bgm 目录下 [] 一次性道具拾取与清怪 [] 重构数据统计 [] 优化路径显示,瞬移可以闪一下再熄灭 @@ -94,7 +94,7 @@ dam4.png ---- 存档 59 [] 楼层转换加入随机小贴士 [x] ui 中如果元素发生改变,那么做出背景亮一下再熄灭的效果 [] 双击怪物手册拐点可以直接在拖动条上定位 -[] 重构技能树结构 +[x] 重构技能树结构 [] 技能树允许自动升级 [] 重构装备系统 [x] 弹幕系统 @@ -118,3 +118,5 @@ dam4.png ---- 存档 59 [x] 对 vnode 进行简单的包装,提供出显示文字、显示图片等 api 以及修改 css 的 api [] mapDamage 注册 [] Box 组件右下角添加 resize 按钮 +[] 被光环加成的怪显示受到了哪些加成 +[x] 鼠标放到光环怪上时高亮它产生的光环 diff --git a/src/core/render/item.ts b/src/core/render/item.ts index 0e3bce2..7d3e35c 100644 --- a/src/core/render/item.ts +++ b/src/core/render/item.ts @@ -180,7 +180,7 @@ export abstract class RenderItem protected cacheDirty: boolean = true; /** 是否启用缓存机制 */ readonly enableCache: boolean = true; - /** 是否启用transform下穿机制 */ + /** 是否启用transform下穿机制,即画布的变换是否会继续作用到下一层画布 */ readonly transformFallThrough: boolean = false; constructor( diff --git a/src/core/render/preset/animate.ts b/src/core/render/preset/animate.ts index b02fc8b..9f12dff 100644 --- a/src/core/render/preset/animate.ts +++ b/src/core/render/preset/animate.ts @@ -104,6 +104,12 @@ export class Animate extends Sprite { this.setRenderFn((canvas, transform) => { const { ctx } = canvas; + if ( + this.absoluteAnimates.size === 0 && + this.staticAnimates.size === 0 + ) { + return; + } ctx.save(); this.drawAnimates(this.absoluteAnimates, canvas); transformCanvas(canvas, transform); diff --git a/src/core/render/preset/damage.ts b/src/core/render/preset/damage.ts index d73e959..dee02d9 100644 --- a/src/core/render/preset/damage.ts +++ b/src/core/render/preset/damage.ts @@ -340,7 +340,8 @@ export class Damage extends Sprite { }; block.add(dam1).add(dam2); - if (real.special.has(8) && real.togetherNum) { + const hasHorn = real.special.has(33); + if (real.special.has(8) && real.togetherNum && !hasHorn) { const dam3: DamageRenderable = { align: 'right', baseline: 'top', @@ -365,7 +366,7 @@ export class Damage extends Sprite { }; block.add(dam4); } - if (enemy.col && real.special.has(33)) { + if (enemy.col && hasHorn) { const dam5: DamageRenderable = { align: 'right', baseline: 'top', diff --git a/src/game/enemy/damage.ts b/src/game/enemy/damage.ts index 7051161..e8637fa 100644 --- a/src/game/enemy/damage.ts +++ b/src/game/enemy/damage.ts @@ -2,6 +2,7 @@ import { getHeroStatusOf, getHeroStatusOn } from '@/game/state/hero'; import { Range } from '../util/range'; import { ensureArray, has, manhattan } from '@/plugin/game/utils'; import EventEmitter from 'eventemitter3'; +import { hook } from '../game'; // todo: 光环划分优先级,从而可以实现光环的多级运算 @@ -152,6 +153,7 @@ export class EnemyCollection extends EventEmitter { ); }); this.emit('extract'); + hook.emit('enemyExtract', this); } /** diff --git a/src/game/enemy/special.ts b/src/game/enemy/special.ts index d52627c..daec3d0 100644 --- a/src/game/enemy/special.ts +++ b/src/game/enemy/special.ts @@ -70,7 +70,7 @@ export const specials: SpecialDeclaration[] = [ name: '抱团', desc: enemy => `怪物周围5×5范围内每有一个拥有该属性的怪物(不包括自身),则对方攻防就增加${enemy.together}%(线性叠加)` + - `,受加成怪物会在右上角显示当前周围有多少个怪物`, + `,受加成怪物会在右上角以绿色字体显示当前周围有多少个怪物`, color: '#fa4' }, { @@ -240,11 +240,15 @@ export const specials: SpecialDeclaration[] = [ name: '乾坤挪移', desc: enemy => { const [dx, dy] = enemy.translation!; - return `此怪物在场时,所有光环向${ - dx < 0 ? '左' : '右' - }平移${Math.abs(dx)}格,向${dy < 0 ? '上' : '下'}平移${Math.abs( - dy - )}格。不同怪物间为加算叠加`; + let str = `此怪物在场时,所有光环`; + if (dx !== 0) { + str += `向${dx < 0 ? '左' : '右'}平移${Math.abs(dx)}格,`; + } + if (dy !== 0) { + str += `向${dy < 0 ? '上' : '下'}平移${Math.abs(dy)}格,`; + } + str += `不同怪物间为加算叠加`; + return str; }, color: '#FDCD0B' }, @@ -272,7 +276,7 @@ export const specials: SpecialDeclaration[] = [ if (hp) str += `生命值增加${hp}%,`; if (atk) str += `攻击增加${atk}%,`; if (def) str += `防御增加${def}%,`; - str += '线性叠加'; + str += '线性叠加。该怪物会在右上角以黄色字体显示当前地图有多少怪物'; return str; }, color: '#fff866'