| | |
| | | }; |
| | | } |
| | | |
| | | export const querySprite = (type, no) => { |
| | | if (!mapContainer) { |
| | | return; |
| | | } |
| | | for (const sprite of mapContainer.children) { |
| | | if (sprite.data?.type === type && sprite.data?.no === no) { |
| | | return sprite; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // show sprite feature from sprite click event |
| | | export const viewFeature = (sprite, setCurSPrite) => { |
| | | sprite.off('pointerup'); |
| | |
| | | } |
| | | |
| | | export const copySprite = (sprite) => { |
| | | const copiedSprite = new PIXI.Sprite(sprite.texture); |
| | | // const copiedSprite = new PIXI.Sprite(sprite.texture); |
| | | const copiedSprite = generateSprite(sprite.data.type) |
| | | initSprite(copiedSprite); |
| | | copiedSprite.position.set(sprite.position.x, sprite.position.y); |
| | | copiedSprite.scale.set(sprite.scale.x, sprite.scale.y); |
| | |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | export const parseLocNo = (locNo) => { |
| | | if (!locNo || typeof locNo !== 'string') { |
| | | return null; |
| | | } |
| | | const locParseArr = locNo.split('-'); |
| | | return { |
| | | row: locParseArr?.[0], |
| | | bay: locParseArr?.[1], |
| | | lev: locParseArr?.[2], |
| | | } |
| | | } |
| | | |
| | | export const generateLocNo = (row, bay, lev) => { |
| | | return row + '-' + bay + '-' + lev; |
| | | } |
| | | |
| | | export const updateMapStatusInRealTime = (data) => { |
| | | const mapVo = JSON.parse(data); |
| | | // shuttle |
| | | for (const shuttleVo of mapVo.shuttleVos) { |
| | | const shuttle = querySprite(SENSOR_TYPE.SHUTTLE, shuttleVo.shuttleNo); |
| | | if (!shuttle && !shuttleVo.curLocNo) { continue; } |
| | | const { row, bay, lev } = parseLocNo(shuttleVo.curLocNo); |
| | | const shelf = querySprite(SENSOR_TYPE.SHELF, row + '-' + bay); |
| | | new TWEEDLE.Tween(shuttle.position).easing(TWEEDLE.Easing.Linear.None).to({ |
| | | x: shelf.position.x, |
| | | y: shelf.position.y |
| | | }, 1000).start(); |
| | | } |
| | | } |