mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-06-28 05:07:59 +08:00
feat: 缩略图组件
This commit is contained in:
parent
583df29f38
commit
a7cdf2c69b
@ -0,0 +1,55 @@
|
||||
import {
|
||||
ElementLocator,
|
||||
MotaOffscreenCanvas2D,
|
||||
Sprite
|
||||
} from '@motajs/render-core';
|
||||
import { SpriteProps } from '@motajs/render-vue';
|
||||
import { defineComponent, ref, watch } from 'vue';
|
||||
|
||||
export interface ThumbnailProps extends SpriteProps {
|
||||
loc: ElementLocator;
|
||||
padStyle: CanvasStyle;
|
||||
floorId: FloorIds;
|
||||
map?: Block[];
|
||||
hero?: HeroStatus;
|
||||
// configs
|
||||
damage?: boolean;
|
||||
all?: boolean;
|
||||
}
|
||||
|
||||
export const Thumbnail = defineComponent<ThumbnailProps>(props => {
|
||||
const spriteRef = ref<Sprite>();
|
||||
|
||||
const update = () => {
|
||||
spriteRef.value?.update();
|
||||
};
|
||||
|
||||
const drawThumbnail = (canvas: MotaOffscreenCanvas2D) => {
|
||||
const hero = props.hero;
|
||||
const options: Partial<DrawThumbnailConfig> = {
|
||||
damage: props.damage,
|
||||
ctx: canvas.ctx,
|
||||
x: 0,
|
||||
y: 0,
|
||||
size: 1,
|
||||
all: props.all,
|
||||
noHD: false,
|
||||
v2: true,
|
||||
inFlyMap: false
|
||||
};
|
||||
if (hero) {
|
||||
options.heroLoc = hero.loc;
|
||||
options.heroIcon = hero.image;
|
||||
options.flags = hero.flags;
|
||||
options.centerX = hero.loc.x;
|
||||
options.centerY = hero.loc.y;
|
||||
}
|
||||
core.drawThumbnail(props.floorId, props.map, options);
|
||||
};
|
||||
|
||||
watch(props, update);
|
||||
|
||||
return () => (
|
||||
<sprite ref={spriteRef} loc={props.loc} render={drawThumbnail} />
|
||||
);
|
||||
});
|
2
src/types/declaration/map.d.ts
vendored
2
src/types/declaration/map.d.ts
vendored
@ -370,7 +370,7 @@ interface DrawThumbnailConfig {
|
||||
/**
|
||||
* 勇士的位置
|
||||
*/
|
||||
heroLoc: LocArr;
|
||||
heroLoc: Loc;
|
||||
|
||||
/**
|
||||
* 勇士的图标
|
||||
|
Loading…
Reference in New Issue
Block a user