HumanBreak/src/core/render/renderer/props.ts
2025-02-18 21:49:52 +08:00

189 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { RenderFunction, RenderItem, RenderItemPosition } from '../item';
import { Transform } from '../transform';
import {
FloorLayer,
ILayerGroupRenderExtends,
ILayerRenderExtends
} from '../preset/layer';
import type { EnemyCollection } from '@/game/enemy/damage';
import { ILineProperty } from '../preset/graphics';
export interface CustomProps {
_item: (props: BaseProps) => RenderItem;
}
export interface BaseProps {
x?: number;
y?: number;
anchorX?: number;
anchorY?: number;
zIndex?: number;
width?: number;
height?: number;
filter?: string;
hd?: boolean;
antiAliasing?: boolean;
hidden?: boolean;
transform?: Transform;
type?: RenderItemPosition;
cache?: boolean;
fall?: boolean;
id?: string;
alpha?: number;
composite?: GlobalCompositeOperation;
cursor?: string;
}
export interface SpriteProps extends BaseProps {
render?: RenderFunction;
}
export interface ContainerProps extends BaseProps {}
export interface GL2Props extends BaseProps {}
export interface ShaderProps extends BaseProps {}
export interface TextProps extends BaseProps {
text?: string;
fillStyle?: CanvasStyle;
strokeStyle?: CanvasStyle;
font?: string;
strokeWidth?: number;
}
export interface ImageProps extends BaseProps {
image: CanvasImageSource;
}
export interface CommentProps extends BaseProps {
text?: string;
}
export interface LayerGroupProps extends BaseProps {
cellSize?: number;
blockSize?: number;
floorId?: FloorIds;
bindThisFloor?: boolean;
camera?: Transform;
ex?: readonly ILayerGroupRenderExtends[];
layers?: readonly FloorLayer[];
}
export interface LayerProps extends BaseProps {
layer?: FloorLayer;
mapWidth?: number;
mapHeight?: number;
cellSize?: number;
background?: AllNumbers;
floorImage?: FloorAnimate[];
ex?: readonly ILayerRenderExtends[];
}
export interface AnimateProps extends BaseProps {}
export interface DamageProps extends BaseProps {
mapWidth?: number;
mapHeight?: number;
cellSize?: number;
enemy?: EnemyCollection;
font?: string;
strokeStyle?: CanvasStyle;
strokeWidth?: number;
}
export interface GraphicPropsBase extends BaseProps, Partial<ILineProperty> {
/** 是否填充,若填写 {@link stroke},那么表现为先填充后描边 */
fill?: boolean;
/** 是否描边,若填写 {@link fill},那么表现为先填充后描边 */
stroke?: boolean;
/** 是否先描边后填充,优先级最高,若设置,则 {@link fill} 与 {@link stroke} 无效。 */
strokeAndFill?: boolean;
/** 填充原则,比如 `nonzero` 表示非零环绕原则,默认为奇偶环绕原则 `evenodd` */
fillRule?: CanvasFillRule;
/** 填充样式 */
fillStyle?: CanvasStyle;
/** 描边样式 */
strokeStyle?: CanvasStyle;
}
export interface RectProps extends GraphicPropsBase {}
export interface CirclesProps extends GraphicPropsBase {
radius?: number;
start?: number;
end?: number;
}
export interface EllipseProps extends GraphicPropsBase {
radiusX?: number;
radiusY?: number;
start?: number;
end?: number;
}
export interface LineProps extends GraphicPropsBase {
x1?: number;
y1?: number;
x2?: number;
y2?: number;
}
export interface BezierProps extends GraphicPropsBase {
sx?: number;
sy?: number;
cp1x?: number;
cp1y?: number;
cp2x?: number;
cp2y?: number;
ex?: number;
ey?: number;
}
export interface QuadraticProps extends GraphicPropsBase {
sx?: number;
sy?: number;
cpx?: number;
cpy?: number;
ex?: number;
ey?: number;
}
export interface PathProps extends GraphicPropsBase {
path?: Path2D;
}
export interface RectRProps extends GraphicPropsBase {
/** 圆角半径此参数传入时radiusX 和 radiusY 应保持一致 */
radius: number;
/** 圆角横向半径 */
radiusX?: number;
/** 圆角纵向半径 */
radiusY?: number;
/** 圆角为线模式 */
line?: boolean;
/** 圆角为椭圆模式,默认值 */
ellipse?: boolean;
/** 圆角为二次贝塞尔曲线模式 */
quad?: boolean;
/** 圆角为三次贝塞尔曲线模式 */
cubic?: boolean;
/** 控制点此参数传入时cpx 和 cpy 应保持一致 */
cp?: number;
/** 横向控制点 */
cpx?: number;
/** 纵向控制点 */
cpy?: number;
}
export interface IconProps extends BaseProps {
icon: AllNumbers;
frame?: number;
animate?: boolean;
}
export interface WinskinProps extends BaseProps {
image: ImageIds;
borderSize?: number;
}