mirror of
				https://github.com/unanmed/HumanBreak.git
				synced 2025-10-31 04:02: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