171 lines
5.6 KiB
TypeScript
171 lines
5.6 KiB
TypeScript
import { PlaceStyle,EdgeType } from '../../confClass.js'
|
||
// import { EdgeType } from '../../vo/enums/EdgeType.js'
|
||
|
||
/**
|
||
* 排版方式,返回排版后的[下右上左]所对应原始边 rt = [,,,] 下0 右1 上2 左3
|
||
* 比如 rt[0] = 3 表示现在的下边是原始的左边
|
||
* rt[2] = 0 表示现在的上边是原始的下边
|
||
* @param placeStyle 放置方式
|
||
*/
|
||
export function getOriginalSides(placeStyle: PlaceStyle): number[]
|
||
{
|
||
// let orgSides = [0, 1, 2, 3];
|
||
let orgSides = [EdgeType.BOTTOM, EdgeType.RIGHT, EdgeType.TOP, EdgeType.LEFT]
|
||
switch (placeStyle)
|
||
{
|
||
case PlaceStyle.FRONT: // 正面
|
||
break
|
||
case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.TOP
|
||
orgSides[EdgeType.TOP] = EdgeType.LEFT
|
||
orgSides[EdgeType.LEFT] = EdgeType.BOTTOM
|
||
break
|
||
case PlaceStyle.FRONT_TURN_BACK: // 正面后转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.TOP
|
||
orgSides[EdgeType.RIGHT] = EdgeType.LEFT
|
||
orgSides[EdgeType.TOP] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.LEFT] = EdgeType.RIGHT
|
||
break
|
||
case PlaceStyle.FRONT_TURN_LEFT: // 正面左转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.LEFT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.TOP] = EdgeType.RIGHT
|
||
orgSides[EdgeType.LEFT] = EdgeType.TOP
|
||
break
|
||
case PlaceStyle.BACK: // 反面
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.RIGHT] = EdgeType.LEFT
|
||
orgSides[EdgeType.TOP] = EdgeType.TOP
|
||
orgSides[EdgeType.LEFT] = EdgeType.RIGHT
|
||
break
|
||
case PlaceStyle.BACK_TURN_RIGHT: // 反面右转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.LEFT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.TOP
|
||
orgSides[EdgeType.TOP] = EdgeType.RIGHT
|
||
orgSides[EdgeType.LEFT] = EdgeType.BOTTOM
|
||
break
|
||
case PlaceStyle.BACK_TURN_BACK: // 反面后转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.TOP
|
||
orgSides[EdgeType.RIGHT] = EdgeType.RIGHT
|
||
orgSides[EdgeType.TOP] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.LEFT] = EdgeType.LEFT
|
||
break
|
||
case PlaceStyle.BACK_TURN_LEFT: // 反面左转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.TOP] = EdgeType.LEFT
|
||
orgSides[EdgeType.LEFT] = EdgeType.TOP
|
||
break
|
||
default:
|
||
break
|
||
}
|
||
return orgSides
|
||
}
|
||
|
||
/**
|
||
* 返回原始边[下右上左] 放置后位置 rt = [,,,,]
|
||
* 例如 rt[0] = 3 表示原始下边,现在放置后的新位置是左边
|
||
* rt[2] = 0 表示原始上边,现在放置后的新位置是下边
|
||
* @param placeStyle 放置方式
|
||
*/
|
||
export function getPlacedSides(placeStyle: PlaceStyle): number[]
|
||
{
|
||
// let orgSides = [0, 1, 2, 3];
|
||
let orgSides = [EdgeType.BOTTOM, EdgeType.RIGHT, EdgeType.TOP, EdgeType.LEFT]
|
||
switch (placeStyle)
|
||
{
|
||
case PlaceStyle.FRONT: // 正面
|
||
break
|
||
case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.LEFT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.TOP] = EdgeType.RIGHT
|
||
orgSides[EdgeType.LEFT] = EdgeType.TOP
|
||
break
|
||
case PlaceStyle.FRONT_TURN_BACK: // 正面后转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.TOP
|
||
orgSides[EdgeType.RIGHT] = EdgeType.LEFT
|
||
orgSides[EdgeType.TOP] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.LEFT] = EdgeType.RIGHT
|
||
break
|
||
case PlaceStyle.FRONT_TURN_LEFT: // 正面左转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.TOP
|
||
orgSides[EdgeType.TOP] = EdgeType.LEFT
|
||
orgSides[EdgeType.LEFT] = EdgeType.BOTTOM
|
||
break
|
||
case PlaceStyle.BACK: // 反面
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.RIGHT] = EdgeType.LEFT
|
||
orgSides[EdgeType.TOP] = EdgeType.TOP
|
||
orgSides[EdgeType.LEFT] = EdgeType.RIGHT
|
||
break
|
||
case PlaceStyle.BACK_TURN_RIGHT: // 反面右转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.LEFT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.TOP
|
||
orgSides[EdgeType.TOP] = EdgeType.RIGHT
|
||
orgSides[EdgeType.LEFT] = EdgeType.BOTTOM
|
||
break
|
||
case PlaceStyle.BACK_TURN_BACK: // 反面后转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.TOP
|
||
orgSides[EdgeType.RIGHT] = EdgeType.RIGHT
|
||
orgSides[EdgeType.TOP] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.LEFT] = EdgeType.LEFT
|
||
break
|
||
case PlaceStyle.BACK_TURN_LEFT: // 反面左转
|
||
orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT
|
||
orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM
|
||
orgSides[EdgeType.TOP] = EdgeType.LEFT
|
||
orgSides[EdgeType.LEFT] = EdgeType.TOP
|
||
break
|
||
default:
|
||
break
|
||
}
|
||
return orgSides
|
||
}
|
||
|
||
/** 获取排版位置 */
|
||
export function getPlacePosition(x: number, y: number, width: number, length: number, placeStyle: PlaceStyle): any
|
||
{
|
||
let posX = x
|
||
let posY = y
|
||
switch (placeStyle)
|
||
{
|
||
case PlaceStyle.FRONT: // 正面
|
||
break
|
||
case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转
|
||
posX = y
|
||
posY = width - x
|
||
break
|
||
case PlaceStyle.FRONT_TURN_BACK: // 正面后转
|
||
posX = width - x
|
||
posY = length - y
|
||
break
|
||
case PlaceStyle.FRONT_TURN_LEFT: // 正面左转
|
||
posX = length - y
|
||
posY = x
|
||
break
|
||
case PlaceStyle.BACK: // 反面
|
||
posX = width - x
|
||
posY = y
|
||
break
|
||
case PlaceStyle.BACK_TURN_RIGHT: // 反面右转
|
||
posX = y
|
||
posY = x
|
||
break
|
||
case PlaceStyle.BACK_TURN_BACK: // 反面后转
|
||
posX = x
|
||
posY = length - y
|
||
break
|
||
case PlaceStyle.BACK_TURN_LEFT: // 反面左转
|
||
posX = length - y
|
||
posY = width - x
|
||
break
|
||
default:
|
||
break
|
||
}
|
||
|
||
return { x: posX, y: posY }
|
||
}
|