Commit 519a274e authored by limingzhe's avatar limingzhe

feat: 添加 spine

parent 2d11e844
File added
import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl } from "../script/util";
import { onHomeworkFinish, RandomInt, playAudioByUrl, loadDragonBones, getSpriteFrimeByUrl, loadSpine } from "../script/util";
import { defaultData } from "../script/defaultData";
import { assign, createMachine, interpret, actions, forwardTo, matchesState } from "../script/xstate";
const { pure , send, raise, sendParent } = actions;
......@@ -457,6 +457,17 @@ cc.Class({
const k = this._hintsNodeList[i].after;
after[k]= {
actions: () => {
if (t.isSpine) {
const skeleton = t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = false;
skeleton.animation = 'enlarge';
// skeleton.animation = skeleton.animationNames[0];
} else {
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('enlarge', 1);
console.log(dragonDisplay._armatureKey, 'enlarge')
......@@ -466,6 +477,8 @@ cc.Class({
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
}, this);
}
// const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
......@@ -488,12 +501,22 @@ cc.Class({
for(let i = 0 ;i < this._allAnimationNodes.length; i++) {
const t = this._allAnimationNodes[i];
if (t.isSpine) {
const skeleton = t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = true;
skeleton.animation = 'normal'
// skeleton.animation = skeleton.animationNames[0];
} else {
const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('normal', 0);
}
}
}
}
}
state.states.begin.after = after;
......@@ -505,7 +528,9 @@ cc.Class({
// console.log(1, state.value, state.context);
});
this.gameMachineService.start();
if (window.gameMachineService) {
window.gameMachineService = gameMachineService;
}
},
......@@ -586,7 +611,8 @@ cc.Class({
},
getDefaultData() {
return defaultData;
return {"begin_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","begin_sep_time":1,"guide_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","playing_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","right_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio1":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","wrong_audio2":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","end_audio":"http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3","bgItem":{"url":"http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png","rect":{"x":549.55,"y":0,"width":449.9,"height":582}},"hotZoneItemArr":[{"id":"1659333645573","index":0,"audio_url":"http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3","itemType":"rect","fontScale":1.21015625,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.21015625,"dragDot":{"x":774.5,"y":289.55016883743366},"gIdx":"1","labelText":"1","posX":887.5,"posY":165.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/d1f859d3fba84bd03565e543c986fb28.json","name":"6_4_ske.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/70f96e1cc7f013e27ed1952c503fb750.json","name":"6_4_tex.json"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/b06f9b90018a6eb0175a01e355b9ced6.png","name":"6_4_tex.png"},"animType":"dragonBone","rect":{"x":36.08,"y":49.19,"width":153.95,"height":150.19}},{"id":"1659334098930","index":1,"audio_url":"http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3","itemType":"rect","fontScale":1.21015625,"imgScale":1,"imgSizeW":0,"imgSizeH":0,"mapScale":1.21015625,"dragDot":{"x":774.5,"y":289.55016883743366},"gIdx":"0","labelText":"1","posX":1212.5,"posY":643.5,"skeJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/bdbadb06e0c1157e727cecd28f28d10e.json","name":"spineboy-pro.json"},"texJsonData":{"url":"http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas","name":"spineboy-pro.atlas"},"texPngData":{"url":"http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png","name":"spineboy-pro.png"},"animType":"spine","rect":{"x":282.03,"y":408.15,"width":150.19,"height":150.19}}]}
// return defaultData;
},
preloadItem() {
......@@ -783,11 +809,48 @@ cc.Class({
}
if (block.gIdx == '0' || block.gIdx == '1') {
const n = new cc.Node();
n.scale = 0.25;
const db = n.addComponent(dragonBones.ArmatureDisplay);
n.parent = ground;
n.active = false;
if (block.animType == 'spine') {
const skeleton = n.addComponent(sp.Skeleton);
n.isSpine = true;
loadSpine(skeleton, block.texPngData.name, {
tex: block.texPngData.url,
atlas: block.texJsonData.url,
ske: block.skeJsonData.url,
}).then(({width, height}) => {
n.width = width;
n.height = height;
n.active = true;
// db.playAnimation('null', 0);
// skeleton.loop = true;
// skeleton.animation = skeleton.animationNames[0]
this._allAnimationNodes.push(n);
finishDbCount++;
console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
}).catch(() => {
finishDbCount++;
console.log(finishDbCount, dbCount)
if (finishDbCount == dbCount) {
this.loadEnd();
}
});
} else {
const db = n.addComponent(dragonBones.ArmatureDisplay);
loadDragonBones(db, {
tex: block.texPngData.url,
atlas: block.texJsonData.url,
......@@ -810,6 +873,10 @@ cc.Class({
this.loadEnd();
}
});
}
if (block.gIdx == '0') {
const rectInfo = {
node: n,
......
......@@ -400,3 +400,78 @@ export function loadDragonBones(dragonDisplay,{tex, atlas, ske}) {
});
}
export function loadSpine(skeleton, picName, {tex, atlas, ske}) {
return new Promise((resolve, reject) => {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, (error, texture) => {
if (error) {
reject();
return;
}
// cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({ url: atlas }, (error, atlasJson) => {
if (error) {
reject();
return;
}
// cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({ url: ske }, (error, dragonBonesJson) => {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify( dragonBonesJson );
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
const jsonObj = dragonBonesJson //JSON.parse( assets[1]);
const animationNameObj = jsonObj.animations;
let animationNames = [];
for (let name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton'])
resolve(jsonObj['skeleton']);
// const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
......@@ -128,5 +128,8 @@
}
}
},
"defaultProject": "ng-template-generator"
"defaultProject": "ng-template-generator",
"cli": {
"analytics": "61925577-1d89-4137-97e7-a79129dc9dd5"
}
}
\ No newline at end of file
......@@ -20,10 +20,10 @@
"@angular/platform-browser": "~9.0.2",
"@angular/platform-browser-dynamic": "~9.0.2",
"@angular/router": "~9.0.2",
"@fortawesome/angular-fontawesome": "^0.6.0",
"@fortawesome/fontawesome-svg-core": "^1.2.27",
"@fortawesome/free-regular-svg-icons": "^5.12.1",
"@fortawesome/free-solid-svg-icons": "^5.12.1",
"@fortawesome/angular-fontawesome": "0.6.0",
"@fortawesome/fontawesome-svg-core": "1.2.27",
"@fortawesome/free-regular-svg-icons": "5.12.1",
"@fortawesome/free-solid-svg-icons": "5.12.1",
"@tweenjs/tween.js": "~18.5.0",
"ali-oss": "^6.5.1",
"compressing": "^1.5.0",
......
......@@ -2,7 +2,7 @@
<h5 style="margin-left: 2.5%;"> preview: </h5>
<div class="preview-box" #wrap>
<div class="preview-box" [style.height]="isRotate ? '95vw' : '35vw'" #wrap>
<canvas id="canvas" #canvas></canvas>
</div>
......@@ -69,17 +69,34 @@
</div>
<div *ngIf="customTypeGroupArr[it.gIdx].anima" align="center" style="margin-top: 5px">
<button nz-button (click)="setAnimaBtnClick(i)" >
<!-- <button nz-button (click)="setAnimaBtnClick(i)" >
<i nz-icon nzType="tool" nzTheme="outline"></i>
配置龙骨动画
</button>
</button> -->
<app-upload-dragon-bone
[skeJsonData]="it.skeJsonData || {}"
[texJsonData]="it.texJsonData || {}"
[texPngData]="it.texPngData || {}"
[animType]="it.animType || 'dragonBone'"
(save)="saveAnim($event, it)">
</app-upload-dragon-bone>
</div>
<div *ngIf="customTypeGroupArr[it.gIdx].animaSmall" align="center" style="margin-top: 5px">
<button nz-button (click)="setAnimaSmallBtnClick(i)" >
<!-- <button nz-button (click)="setAnimaSmallBtnClick(i)" >
<i nz-icon nzType="tool" nzTheme="outline"></i>
配置龙骨动画(小)
</button>
</button> -->
<app-upload-dragon-bone
[skeJsonData]="it.skeJsonData || {}"
[texJsonData]="it.texJsonData || {}"
[texPngData]="it.texPngData || {}"
(save)="saveAnim($event, it)">
</app-upload-dragon-bone>
</div>
......@@ -91,15 +108,15 @@
></app-audio-recorder>
</div>
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.action" style="display: flex;align-items: center; margin-top: 5px">-->
<!-- <app-custom-action-->
<!-- style="margin: auto"-->
<!-- [item]="it ? it['actionData_' + it.gIdx] : {}"-->
<!-- [type]="customTypeGroupArr[it.gIdx].action.type"-->
<!-- [option]="customTypeGroupArr[it.gIdx].action.option"-->
<!-- (save)="onSaveCustomAction($event, it)">-->
<!-- ></app-custom-action>-->
<!-- </div>-->
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.action" style="display: flex;align-items: center; margin-top: 5px">
<app-custom-action
style="margin: auto"
[item]="it ? it['actionData_' + it.gIdx] : {}"
[type]="customTypeGroupArr[it.gIdx].action.type"
[option]="customTypeGroupArr[it.gIdx].action.option"
(save)="onSaveCustomAction($event, it)">
></app-custom-action>
</div> -->
<div *ngIf="customTypeGroupArr[it.gIdx]?.isShowPos" style="display: flex; align-items: center; justify-content: center; margin-top: 5px;">
x: <input type="text" nz-input [(ngModel)]="it.posX" style="width: 50px; margin-right: 15px;" (blur)="saveItemPos(it)">
......@@ -118,11 +135,11 @@
<input type="text" nz-input [(ngModel)]="it.labelText" (blur)="saveText(it)">
</div>
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.mathLabel" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">-->
<!-- <span style="width: 30%;">{{customTypeGroupArr[it.gIdx].mathLabel + ':'}}</span>-->
<!-- <app-formula-input [(ngfModel)]="it.mathLabel" ></app-formula-input>-->
<!-- <div *ngIf="customTypeGroupArr[it.gIdx]?.mathLabel" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">
<span style="width: 30%;">{{customTypeGroupArr[it.gIdx].mathLabel + ':'}}</span>
<app-formula-input [(ngfModel)]="it.mathLabel" ></app-formula-input>
<!-- </div>-->
</div> -->
<div *ngIf="customTypeGroupArr[it.gIdx]?.isCopy" align="center" style="margin-top: 5px; display: flex; align-items: center; justify-content: center;">
......@@ -226,6 +243,7 @@
<!--龙骨面板-->
<!--
<nz-modal [(nzVisible)]="animaPanelVisible" nzTitle="配置资源文件" (nzAfterClose)="closeAfterPanel()" (nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存">
<div class="anima-upload-btn">
......@@ -271,6 +289,6 @@
提示:需包含以下动画: {{customTypeGroupArr[curDragonBoneGIdx].animaNames.toString()}}
</div>
</nz-modal>
</nz-modal> -->
......@@ -53,6 +53,9 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
@Input()
isCopyData = false;
@Input()
isRotate = false;
hotZoneFontObj;
// hotZoneFontObj = {
// size: 50,
......@@ -100,7 +103,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
changeSizeFlag = false;
changeTopSizeFlag = false;
changeRightSizeFlag = false;
animaPanelVisible = false;
// animaPanelVisible = false;
uploadUrl;
uploadData;
......@@ -118,6 +121,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
isAnimaSmall = false;
savePropertyArr = [
'id',
'gIdx',
......@@ -126,6 +130,10 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
'posX',
'posY',
'mathLabel',
'skeJsonData',
'texJsonData',
'texPngData',
'animType',
]
......@@ -152,8 +160,11 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
this.init();
}
onResize(event) {
this.winResizeEventStream.next();
// this.winResizeEventStream.next();
}
......@@ -162,7 +173,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
this.initListener();
// this.init();
this.init();
this.update();
this.refresh();
......@@ -182,7 +193,9 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
onBackgroundUploadSuccess(e) {
console.log('e: ', e);
this.bgItem.url = e.url;
this.refreshBackground();
this.init();
// this.refreshBackground();
}
onItemImgUploadSuccess(e, item) {
......@@ -318,7 +331,6 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
getHotZoneItem(saveData = null) {
const itemW = 200;
const itemH = 200;
const item = new HotZoneItem(this.ctx);
......@@ -349,9 +361,9 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
item.gIdx = saveData.gIdx;
item['id'] = saveData.id;
item['skeJsonData'] = saveData.skeJsonData;
item['texJsonData'] = saveData.texJsonData;
item['texPngData'] = saveData.texPngData;
// item['skeJsonData'] = saveData.skeJsonData;
// item['texJsonData'] = saveData.texJsonData;
// item['texPngData'] = saveData.texPngData;
item['actionData_' + item.gIdx] = saveData['actionData_' + item.gIdx];
......@@ -402,7 +414,7 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
console.log('picUrl: ', picUrl);
if (picUrl) {
this.loadHotZonePic(pic, picUrl, saveData.imgScale);
this.loadHotZonePic(pic, picUrl, saveData);
}
}
......@@ -726,6 +738,11 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
init() {
console.log('init');
// if (this.isInit) {
// return;
// }
// this.isInit = true;
this.initData();
this.initCtx();
this.initItem();
......@@ -820,6 +837,8 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
initData() {
console.log(' in initData')
this.canvasWidth = this.wrap.nativeElement.clientWidth;
this.canvasHeight = this.wrap.nativeElement.clientHeight;
this.mapScale = this.canvasWidth / this.canvasBaseW;
......@@ -1090,11 +1109,11 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
initListener() {
this.winResizeEventStream
.pipe(debounceTime(500))
.subscribe(data => {
this.renderAfterResize();
});
// this.winResizeEventStream
// .pipe(debounceTime(500))
// .subscribe(data => {
// this.renderAfterResize();
// });
if (this.IsPC()) {
......@@ -1239,13 +1258,16 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
imgSizeW: hotZoneArr[i].pic ? hotZoneArr[i].pic.width : 0,
imgSizeH: hotZoneArr[i].pic ? hotZoneArr[i].pic.height : 0,
mapScale: this.mapScale,
skeJsonData: hotZoneArr[i].skeJsonData,
texJsonData: hotZoneArr[i].texJsonData,
texPngData: hotZoneArr[i].texPngData,
// skeJsonData: hotZoneArr[i].skeJsonData,
// texJsonData: hotZoneArr[i].texJsonData,
// texPngData: hotZoneArr[i].texPngData,
dragDot: hotZoneArr[i].drag.getPosition(),
gIdx: hotZoneArr[i].gIdx,
};
console.log("~~hotZoneArr[i]: ", hotZoneArr[i]);
this.savePropertyArr.forEach((key) => {
if (hotZoneArr[i][key]) {
hotZoneItem[key] = hotZoneArr[i][key];
......@@ -1304,14 +1326,14 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
// this.changeCurItem(item);
this.changeCurItem(item);
// this.curItem.x = item.posX || 0;
// this.curItem.y = item.posY || 0;
this.curItem.x = item.posX || 0;
this.curItem.y = item.posY || 0;
// this.mapUp();
this.mapUp();
}
......@@ -1346,52 +1368,52 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
}
setAnimaBtnClick(index) {
// setAnimaBtnClick(index) {
console.log('aaaa')
this.isAnimaSmall = false;
// console.log('aaaa')
// this.isAnimaSmall = false;
this.setCurDragonBone(index);
// this.setCurDragonBone(index);
// this.curDragonBoneIndex = index;
// this.curDragonBoneGIdx = Number(this.hotZoneArr[index].gIdx);
// // this.curDragonBoneIndex = index;
// // this.curDragonBoneGIdx = Number(this.hotZoneArr[index].gIdx);
// const {skeJsonData, texJsonData, texPngData} = this.hotZoneArr[index];
// // const {skeJsonData, texJsonData, texPngData} = this.hotZoneArr[index];
// this.skeJsonData = skeJsonData || {};
// this.texJsonData = texJsonData || {};
// this.texPngData = texPngData || {};
// // this.skeJsonData = skeJsonData || {};
// // this.texJsonData = texJsonData || {};
// // this.texPngData = texPngData || {};
// this.animaPanelVisible = true;
// // this.animaPanelVisible = true;
// this.refresh();
}
// // this.refresh();
// }
setAnimaSmallBtnClick(index) {
// setAnimaSmallBtnClick(index) {
console.log('bbb')
this.isAnimaSmall = true;
// console.log('bbb')
// this.isAnimaSmall = true;
this.setCurDragonBone(index);
// this.setCurDragonBone(index);
}
// }
setCurDragonBone(index) {
this.curDragonBoneIndex = index;
this.curDragonBoneGIdx = Number(this.hotZoneArr[index].gIdx);
// setCurDragonBone(index) {
// this.curDragonBoneIndex = index;
// this.curDragonBoneGIdx = Number(this.hotZoneArr[index].gIdx);
const {skeJsonData, texJsonData, texPngData} = this.hotZoneArr[index];
// const {skeJsonData, texJsonData, texPngData} = this.hotZoneArr[index];
this.skeJsonData = skeJsonData || {};
this.texJsonData = texJsonData || {};
this.texPngData = texPngData || {};
// this.skeJsonData = skeJsonData || {};
// this.texJsonData = texJsonData || {};
// this.texPngData = texPngData || {};
this.animaPanelVisible = true;
// this.animaPanelVisible = true;
this.refresh();
}
// this.refresh();
// }
setItemSizeByAnima(jsonData, item) {
console.log('json: ', jsonData);
......@@ -1417,86 +1439,86 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
}
}
animaPanelCancel() {
this.animaPanelVisible = false;
this.refresh();
}
// animaPanelCancel() {
// this.animaPanelVisible = false;
// this.refresh();
// }
animaPanelOk() {
// animaPanelOk() {
this.setItemDragonBoneData(this.hotZoneArr[this.curDragonBoneIndex]);
console.log('this.hotZoneArr: ', this.hotZoneArr);
this.animaPanelVisible = false;
// this.setItemDragonBoneData(this.hotZoneArr[this.curDragonBoneIndex]);
// console.log('this.hotZoneArr: ', this.hotZoneArr);
// this.animaPanelVisible = false;
if (this.isAnimaSmall) {
this.setItemSizeByAnima(this.skeJsonData, this.hotZoneArr[this.curDragonBoneIndex]);
}
// if (this.isAnimaSmall) {
// this.setItemSizeByAnima(this.skeJsonData, this.hotZoneArr[this.curDragonBoneIndex]);
// }
this.refresh();
}
// this.refresh();
// }
setItemDragonBoneData(item) {
item['skeJsonData'] = this.skeJsonData;
item['texJsonData'] = this.texJsonData;
item['texPngData'] = this.texPngData;
}
// setItemDragonBoneData(item) {
// item['skeJsonData'] = this.skeJsonData;
// item['texJsonData'] = this.texJsonData;
// item['texPngData'] = this.texPngData;
// }
skeJsonHandleChange(e) {
console.log('e: ', e);
switch (e.type) {
case 'start':
this.isSkeJsonLoading = true;
break;
// skeJsonHandleChange(e) {
// console.log('e: ', e);
// switch (e.type) {
// case 'start':
// this.isSkeJsonLoading = true;
// break;
case 'success':
this.skeJsonData['url'] = e.file.response.url;
this.skeJsonData['name'] = e.file.name;
this.nzMessageService.success('上传成功');
this.isSkeJsonLoading = false;
break;
// case 'success':
// this.skeJsonData['url'] = e.file.response.url;
// this.skeJsonData['name'] = e.file.name;
// this.nzMessageService.success('上传成功');
// this.isSkeJsonLoading = false;
// break;
case 'progress':
break;
}
}
// case 'progress':
// break;
// }
// }
texJsonHandleChange(e) {
console.log('e: ', e);
switch (e.type) {
case 'start':
this.isTexJsonLoading = true;
break;
// texJsonHandleChange(e) {
// console.log('e: ', e);
// switch (e.type) {
// case 'start':
// this.isTexJsonLoading = true;
// break;
case 'success':
this.texJsonData['url'] = e.file.response.url;
this.texJsonData['name'] = e.file.name;
this.nzMessageService.success('上传成功');
this.isTexJsonLoading = false;
break;
// case 'success':
// this.texJsonData['url'] = e.file.response.url;
// this.texJsonData['name'] = e.file.name;
// this.nzMessageService.success('上传成功');
// this.isTexJsonLoading = false;
// break;
case 'progress':
break;
}
}
// case 'progress':
// break;
// }
// }
texPngHandleChange(e) {
console.log('e: ', e);
switch (e.type) {
case 'start':
this.isTexPngLoading = true;
break;
// texPngHandleChange(e) {
// console.log('e: ', e);
// switch (e.type) {
// case 'start':
// this.isTexPngLoading = true;
// break;
case 'success':
this.texPngData['url'] = e.file.response.url;
this.texPngData['name'] = e.file.name;
this.nzMessageService.success('上传成功');
this.isTexPngLoading = false;
break;
// case 'success':
// this.texPngData['url'] = e.file.response.url;
// this.texPngData['name'] = e.file.name;
// this.nzMessageService.success('上传成功');
// this.isTexPngLoading = false;
// break;
case 'progress':
break;
}
}
// case 'progress':
// break;
// }
// }
copyItem(it) {
......@@ -1740,20 +1762,24 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
this.curItem = item;
}
private loadHotZonePic(pic: HotZoneImg, url, scale = null) {
private loadHotZonePic(pic: HotZoneImg, url, saveData = null) {
let baseLen;
if (this.hotZoneImgSize) {
baseLen = this.hotZoneImgSize * this.mapScale;
}
let scale;
pic.load(url).then(() => {
if (!scale) {
if (!saveData) {
if (baseLen) {
scale = getMinScale(pic, baseLen);
} else {
scale = this.bg.scaleX;
}
} else {
scale = getMinScale(pic, saveData.rect.width);
}
pic.setScaleXY(scale);
......@@ -1761,9 +1787,21 @@ export class CustomHotZoneComponent implements OnInit, OnDestroy, OnChanges {
}
closeAfterPanel() {
this.refresh();
saveAnim(e, item) {
console.log(" in saveAnim e:", e);
item.skeJsonData = e.skeJsonData;
item.texJsonData = e.texJsonData;
item.texPngData = e.texPngData;
item.animType = e.animType;
}
// closeAfterPanel() {
// this.refresh();
// }
/**
* 刷新 渲染页面
*/
......
......@@ -11,8 +11,17 @@
<nz-modal [(nzVisible)]="animaPanelVisible" (nzAfterClose)="closePanel()" nzTitle="配置资源文件"
(nzOnCancel)="animaPanelCancel()" (nzOnOk)="animaPanelOk()" nzOkText="保存">
<nz-radio-group [ngModel]="animType" (ngModelChange)="animRadioChange($event)" style="display: flex; align-items: center; justify-content: center; flex-wrap: wrap;">
<div style="display: flex; ">
<label nz-radio nzValue="dragonBone">龙骨</label>
<label nz-radio nzValue="spine">spine</label>
</div>
</nz-radio-group>
<div class="anima-upload-btn">
<span style="margin-right: 10px">上传 ske_json 文件: </span>
<span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 ske_json 文件: </span>
<span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 json 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="application/json" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="skeJsonHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
......@@ -22,8 +31,9 @@
</div>
<div class="anima-upload-btn">
<span style="margin-right: 10px">上传 tex_json 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="application/json" [nzAction]="uploadUrl" [nzData]="uploadData"
<span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 tex_json 文件: </span>
<span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 atlas 文件: </span>
<nz-upload [nzShowUploadList]="false" [nzAccept]="animType == 'dragonBone' ? '.json' : '.atlas'" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="texJsonHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
</nz-upload>
......@@ -32,7 +42,8 @@
</div>
<div class="anima-upload-btn">
<span style="margin-right: 10px">上传 tex_png 文件: </span>
<span *ngIf="animType == 'dragonBone'" style="margin-right: 10px">上传 tex_png 文件: </span>
<span *ngIf="animType == 'spine'" style="margin-right: 10px">上传 png 文件: </span>
<nz-upload [nzShowUploadList]="false" nzAccept="image/*" [nzAction]="uploadUrl" [nzData]="uploadData"
(nzChange)="texPngHandleChange($event)">
<button nz-button><i nz-icon nzType="upload"></i><span>Upload</span></button>
......
......@@ -11,7 +11,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
uploading = false;
progress = 0;
@Input()
btnName = '配置龙骨动画';
btnName = '配置骨骼动画';
@Input()
animaNames = [];
......@@ -21,32 +21,16 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
texJsonData = {};
@Input()
texPngData = {};
@Input()
animType;
@Output()
save = new EventEmitter();
@Output()
refreshEmitter = new EventEmitter();
// @Input()
// picUrl;
// @Input()
// canDelete = false;
// @Output()
// imageUploaded = new EventEmitter();
// @Output()
// imageUploadFailure = new EventEmitter();
// @Output()
// delete = new EventEmitter();
// @Input()
// picItem = null;
// @Input()
// iconSize = 2;
// @Input()
// TIP = 'Click here to upload image';
// @Input()
// disableUpload = false;
uploadUrl;
uploadData;
......@@ -93,6 +77,7 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
data['skeJsonData'] = this.skeJsonData;
data['texJsonData'] = this.texJsonData;
data['texPngData'] = this.texPngData;
data['animType'] = this.animType;
this.save.emit(data);
}
......@@ -155,6 +140,11 @@ export class UploadDragonBoneComponent implements OnDestroy, OnChanges {
}
animRadioChange(e) {
console.log(" in animRadioChange: ", e);
this.animType = e;
}
/**
* 刷新 渲染页面
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.onHomeworkFinish = onHomeworkFinish;
exports.loadDragonBones = loadDragonBones;
exports.loadSpine = loadSpine;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
......@@ -354,7 +355,7 @@ function _showFireworks() {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
......@@ -422,7 +423,7 @@ function _showFireworks() {
}));
return function (_x12, _x13) {
return _ref2.apply(this, arguments);
return _ref3.apply(this, arguments);
};
}());
......@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) {
});
}
function loadSpine(skeleton, picName, _ref2) {
var tex = _ref2.tex,
atlas = _ref2.atlas,
ske = _ref2.ske;
return new Promise(function (resolve, reject) {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, function (error, texture) {
if (error) {
reject();
return;
} // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({
url: atlas
}, function (error, atlasJson) {
if (error) {
reject();
return;
} // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({
url: ske
}, function (error, dragonBonesJson) {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify(dragonBonesJson);
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
var animationNameObj = jsonObj.animations;
var animationNames = [];
for (var name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
cc._RF.pop();
\ No newline at end of file
{"version":3,"sources":["assets/OP15/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos","worldPosToLocalPos","getScaleRateBy2Node","maxFlag","worldRect1","getBoundingBoxToWorld","worldRect2","getDistance","start","end","pos","dis","playAudioByUrl","audio_url","cb","AudioClip","constructor","name","audioId","audioEngine","play","setFinishCallback","assetManager","loadRemote","err","audioClip","btnClickAnima","btn","time","rate","tmpScale","on","Node","EventType","TOUCH_START","tween","to","TOUCH_CANCEL","TOUCH_END","getSpriteFrimeByUrl","url","loader","load","img","spriteFrame","SpriteFrame","getSprNode","resName","sf","find","getComponent","Sprite","node","addComponent","getSprNodeByUrl","spr","playAudio","playEffect","asyncDelay","Promise","resolve","reject","setTimeout","e","FireworkSettings","nodeList","side","range","number","scalseRange","copy","firework","showFireworks","fireworkSettings","Array","fill","forEach","_","i","rabbonNode","instantiate","active","asyncTweenBy","easing","by","rabbonFall","union","repeatForever","delay","opacity","call","stopAllActions","offsetX","asyncTweenTo","duration","obj","ease","undefined","showTrebleFirework","rabbonList","middle","left","right","onHomeworkFinish","middleLayer","middleLayerComponent","role","console","log","loadDragonBones","dragonDisplay","tex","atlas","ske","type","error","texture","atlasJson","dragonBonesJson","atlasObj","dragonBones","DragonBonesAtlasAsset","uuid","asset","DragonBonesAsset","armatureName","_dragonBonesJsonData","armature","dragonAtlasAsset","dragonAsset","aabb"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n\tconst worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n\nexport function worldPosToLocalPos(worldPos, baseNode) {\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n\nexport function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {\n\tconst worldRect1 = targetNode.getBoundingBoxToWorld();\n\tconst worldRect2 = baseNode.getBoundingBoxToWorld();\n\n\tconst sx = worldRect1.width / worldRect2.width;\n\tconst sy = worldRect1.height / worldRect2.height;\n\tif (maxFlag) {\n\t\treturn Math.max(sx, sy);\n\t} else {\n\t\treturn Math.min(sx, sy);\n\t}\n}\n\nexport function getDistance (start, end){\n var pos = cc.v2(start.x - end.x, start.y - end.y);\n var dis = Math.sqrt(pos.x*pos.x + pos.y*pos.y);\n return dis;\n}\n\nexport function playAudioByUrl(audio_url, cb=null) {\n\tif (audio_url) {\n if ((audio_url instanceof cc.AudioClip) &&audio_url.constructor.name == 'cc_AudioClip') {\n const audioId = cc.audioEngine.play(audio_url, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n } else {\n cc.assetManager.loadRemote(audio_url, (err, audioClip) => {\n const audioId = cc.audioEngine.play(audioClip, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n }); }\n\t\t\n\t}\n}\n\n\nexport function btnClickAnima(btn, time=0.15, rate=1.05) {\n btn.tmpScale = btn.scale;\n btn.on(cc.Node.EventType.TOUCH_START, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.scale * rate})\n .start()\n })\n btn.on(cc.Node.EventType.TOUCH_CANCEL, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.tmpScale})\n .start()\n })\n btn.on(cc.Node.EventType.TOUCH_END, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.tmpScale})\n .start()\n })\n}\n\n\nexport function getSpriteFrimeByUrl(url, cb) {\n cc.loader.load({ url }, (err, img) => {\n const spriteFrame = new cc.SpriteFrame(img)\n if (cb) {\n cb(spriteFrame);\n }\n })\n}\n\nexport function getSprNode(resName) {\n const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;\n const node = new cc.Node();\n node.addComponent(cc.Sprite).spriteFrame = sf;\n return node;\n}\n\nexport function getSprNodeByUrl(url, cb) {\n const node = new cc.Node();\n const spr = node.addComponent(cc.Sprite);\n getSpriteFrimeByUrl(url, (sf) => {\n spr.spriteFrame = sf;\n if (cb) {\n cb(spr);\n }\n })\n}\n\n\n\nexport function playAudio(audioClip, cb = null) {\n if (audioClip) {\n const audioId = cc.audioEngine.playEffect(audioClip, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n }\n}\n\nexport async function asyncDelay(time) {\n return new Promise((resolve, reject) => {\n try {\n setTimeout(() => {\n resolve();\n }, time * 1000);\n } catch (e) {\n reject(e);\n }\n })\n}\n\nexport class FireworkSettings {\n baseNode; // 父节点\n nodeList; // 火花节点的array\n pos; // 发射点\n side; // 发射方向\n range; // 扩散范围\n number; // 发射数量\n scalseRange; // 缩放范围\n constructor(baseNode, nodeList,\n pos = cc.v2(0, 0),\n side = cc.v2(0, 100),\n range = 50,\n number = 100,\n scalseRange = 0\n ) {\n this.baseNode = baseNode;\n this.nodeList = nodeList;\n this.pos = pos;\n this.side = side;\n this.range = range;\n this.number = number;\n this.scalseRange = scalseRange;\n }\n\n static copy(firework) {\n return new FireworkSettings(\n firework.baseNode,\n firework.nodeList,\n firework.pos,\n firework.side,\n firework.range,\n firework.number,\n );\n }\n}\n\nexport async function showFireworks(fireworkSettings) {\n const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;\n new Array(number).fill(' ').forEach(async (_, i) => {\n\n let rabbonNode = new cc.Node();\n rabbonNode.parent = baseNode;\n rabbonNode.x = pos.x;\n rabbonNode.y = pos.y;\n rabbonNode.angle = 60 * Math.random() - 30;\n\n let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);\n node.parent = rabbonNode;\n node.active = true;\n node.x = 0;\n node.y = 0;\n node.angle = 0;\n node.scale = (Math.random() - 0.5) * scalseRange + 1;\n\n const rate = Math.random();\n const angle = Math.PI * (Math.random() * 2 - 1);\n\n await asyncTweenBy(rabbonNode, 0.3, {\n x: side.x * rate + Math.cos(angle) * range * rate,\n y: side.y * rate + Math.sin(angle) * range * rate\n }, {\n easing: 'quadIn'\n });\n\n cc.tween(rabbonNode)\n .by(8, { y: -2000 })\n .start();\n\n cc.tween(rabbonNode)\n .to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })\n .start();\n\n rabbonFall(rabbonNode);\n\n await asyncDelay(Math.random());\n cc.tween(node)\n .by(0.15, { x: -10, angle: -10 })\n .by(0.3, { x: 20, angle: 20 })\n .by(0.15, { x: -10, angle: -10 })\n .union()\n .repeatForever()\n .start();\n\n cc.tween(rabbonNode)\n .delay(5)\n .to(0.3, { opacity: 0 })\n .call(() => {\n node.stopAllActions();\n node.active = false;\n node.parent = null;\n node = null;\n })\n .start();\n });\n}\n\nasync function rabbonFall(node) {\n const time = 1 + Math.random();\n const offsetX = RandomInt(-200, 200) * time;\n await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });\n rabbonFall(node);\n}\n\n\nexport async function asyncTweenTo(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .to(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport async function asyncTweenBy(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .by(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport function showTrebleFirework(baseNode, rabbonList) {\n const middle = new FireworkSettings(baseNode, rabbonList);\n middle.pos = cc.v2(0, -400);\n middle.side = cc.v2(0, 1000);\n middle.range = 200;\n middle.number = 100;\n middle.scalseRange = 0.4;\n\n const left = FireworkSettings.copy(middle);\n left.pos = cc.v2(-600, -400);\n left.side = cc.v2(200, 1000);\n\n const right = FireworkSettings.copy(middle);\n right.pos = cc.v2(600, -400);\n right.side = cc.v2(-200, 1000);\n\n showFireworks(middle);\n showFireworks(left);\n showFireworks(right);\n}\n\nexport function onHomeworkFinish() {\n const middleLayer = cc.find('middleLayer');\n if (middleLayer) {\n const middleLayerComponent = middleLayer.getComponent('middleLayer');\n if (middleLayerComponent.role == 'student') {\n middleLayerComponent.onHomeworkFinish(() => { });\n }\n } else {\n console.log('onHomeworkFinish');\n }\n}\n\nexport function loadDragonBones(dragonDisplay,{tex, atlas, ske}) {\n return new Promise((resolve, reject) => {\n cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {\n if (error) {\n reject();\n return;\n }\n cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {\n if (error) {\n reject();\n return;\n }\n cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {\n if (error) {\n reject();\n return;\n }\n const atlasObj = new dragonBones.DragonBonesAtlasAsset()\n atlasObj.uuid = atlas\n atlasObj.atlasJson = atlasJson\n atlasObj.texture = texture\n \n const asset = new dragonBones.DragonBonesAsset()\n asset.uuid = ske\n asset.dragonBonesJson = dragonBonesJson;\n\n const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';\n dragonDisplay.armatureName = armatureName;\n \n dragonDisplay.dragonAtlasAsset = atlasObj\n dragonDisplay.dragonAsset = asset;\n resolve(asset._dragonBonesJsonData.armature[0].aabb);\n });\n });\n });\n });\n \n}"]}
\ No newline at end of file
{"version":3,"sources":["assets/OP15/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos","worldPosToLocalPos","getScaleRateBy2Node","maxFlag","worldRect1","getBoundingBoxToWorld","worldRect2","getDistance","start","end","pos","dis","playAudioByUrl","audio_url","cb","AudioClip","constructor","name","audioId","audioEngine","play","setFinishCallback","assetManager","loadRemote","err","audioClip","btnClickAnima","btn","time","rate","tmpScale","on","Node","EventType","TOUCH_START","tween","to","TOUCH_CANCEL","TOUCH_END","getSpriteFrimeByUrl","url","loader","load","img","spriteFrame","SpriteFrame","getSprNode","resName","sf","find","getComponent","Sprite","node","addComponent","getSprNodeByUrl","spr","playAudio","playEffect","asyncDelay","Promise","resolve","reject","setTimeout","e","FireworkSettings","nodeList","side","range","number","scalseRange","copy","firework","showFireworks","fireworkSettings","Array","fill","forEach","_","i","rabbonNode","instantiate","active","asyncTweenBy","easing","by","rabbonFall","union","repeatForever","delay","opacity","call","stopAllActions","offsetX","asyncTweenTo","duration","obj","ease","undefined","showTrebleFirework","rabbonList","middle","left","right","onHomeworkFinish","middleLayer","middleLayerComponent","role","console","log","loadDragonBones","dragonDisplay","tex","atlas","ske","type","error","texture","atlasJson","dragonBonesJson","atlasObj","dragonBones","DragonBonesAtlasAsset","uuid","asset","DragonBonesAsset","armatureName","_dragonBonesJsonData","armature","dragonAtlasAsset","dragonAsset","aabb","loadSpine","skeleton","picName","loadAny","sp","SkeletonData","_uuid","skeletonJson","JSON","stringify","atlasText","textures","textureNames","skeletonData","jsonObj","animationNameObj","animations","animationNames","animation","loop"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n\tconst worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n\nexport function worldPosToLocalPos(worldPos, baseNode) {\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n\nexport function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {\n\tconst worldRect1 = targetNode.getBoundingBoxToWorld();\n\tconst worldRect2 = baseNode.getBoundingBoxToWorld();\n\n\tconst sx = worldRect1.width / worldRect2.width;\n\tconst sy = worldRect1.height / worldRect2.height;\n\tif (maxFlag) {\n\t\treturn Math.max(sx, sy);\n\t} else {\n\t\treturn Math.min(sx, sy);\n\t}\n}\n\nexport function getDistance (start, end){\n var pos = cc.v2(start.x - end.x, start.y - end.y);\n var dis = Math.sqrt(pos.x*pos.x + pos.y*pos.y);\n return dis;\n}\n\nexport function playAudioByUrl(audio_url, cb=null) {\n\tif (audio_url) {\n if ((audio_url instanceof cc.AudioClip) &&audio_url.constructor.name == 'cc_AudioClip') {\n const audioId = cc.audioEngine.play(audio_url, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n } else {\n cc.assetManager.loadRemote(audio_url, (err, audioClip) => {\n const audioId = cc.audioEngine.play(audioClip, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n }); }\n\t\t\n\t}\n}\n\n\nexport function btnClickAnima(btn, time=0.15, rate=1.05) {\n btn.tmpScale = btn.scale;\n btn.on(cc.Node.EventType.TOUCH_START, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.scale * rate})\n .start()\n })\n btn.on(cc.Node.EventType.TOUCH_CANCEL, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.tmpScale})\n .start()\n })\n btn.on(cc.Node.EventType.TOUCH_END, () => {\n cc.tween(btn)\n .to(time / 2, {scale: btn.tmpScale})\n .start()\n })\n}\n\n\nexport function getSpriteFrimeByUrl(url, cb) {\n cc.loader.load({ url }, (err, img) => {\n const spriteFrame = new cc.SpriteFrame(img)\n if (cb) {\n cb(spriteFrame);\n }\n })\n}\n\nexport function getSprNode(resName) {\n const sf = cc.find('Canvas/res/img/' + resName).getComponent(cc.Sprite).spriteFrame;\n const node = new cc.Node();\n node.addComponent(cc.Sprite).spriteFrame = sf;\n return node;\n}\n\nexport function getSprNodeByUrl(url, cb) {\n const node = new cc.Node();\n const spr = node.addComponent(cc.Sprite);\n getSpriteFrimeByUrl(url, (sf) => {\n spr.spriteFrame = sf;\n if (cb) {\n cb(spr);\n }\n })\n}\n\n\n\nexport function playAudio(audioClip, cb = null) {\n if (audioClip) {\n const audioId = cc.audioEngine.playEffect(audioClip, false, 0.8);\n if (cb) {\n cc.audioEngine.setFinishCallback(audioId, () => {\n cb();\n });\n }\n }\n}\n\nexport async function asyncDelay(time) {\n return new Promise((resolve, reject) => {\n try {\n setTimeout(() => {\n resolve();\n }, time * 1000);\n } catch (e) {\n reject(e);\n }\n })\n}\n\nexport class FireworkSettings {\n baseNode; // 父节点\n nodeList; // 火花节点的array\n pos; // 发射点\n side; // 发射方向\n range; // 扩散范围\n number; // 发射数量\n scalseRange; // 缩放范围\n constructor(baseNode, nodeList,\n pos = cc.v2(0, 0),\n side = cc.v2(0, 100),\n range = 50,\n number = 100,\n scalseRange = 0\n ) {\n this.baseNode = baseNode;\n this.nodeList = nodeList;\n this.pos = pos;\n this.side = side;\n this.range = range;\n this.number = number;\n this.scalseRange = scalseRange;\n }\n\n static copy(firework) {\n return new FireworkSettings(\n firework.baseNode,\n firework.nodeList,\n firework.pos,\n firework.side,\n firework.range,\n firework.number,\n );\n }\n}\n\nexport async function showFireworks(fireworkSettings) {\n const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;\n new Array(number).fill(' ').forEach(async (_, i) => {\n\n let rabbonNode = new cc.Node();\n rabbonNode.parent = baseNode;\n rabbonNode.x = pos.x;\n rabbonNode.y = pos.y;\n rabbonNode.angle = 60 * Math.random() - 30;\n\n let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);\n node.parent = rabbonNode;\n node.active = true;\n node.x = 0;\n node.y = 0;\n node.angle = 0;\n node.scale = (Math.random() - 0.5) * scalseRange + 1;\n\n const rate = Math.random();\n const angle = Math.PI * (Math.random() * 2 - 1);\n\n await asyncTweenBy(rabbonNode, 0.3, {\n x: side.x * rate + Math.cos(angle) * range * rate,\n y: side.y * rate + Math.sin(angle) * range * rate\n }, {\n easing: 'quadIn'\n });\n\n cc.tween(rabbonNode)\n .by(8, { y: -2000 })\n .start();\n\n cc.tween(rabbonNode)\n .to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })\n .start();\n\n rabbonFall(rabbonNode);\n\n await asyncDelay(Math.random());\n cc.tween(node)\n .by(0.15, { x: -10, angle: -10 })\n .by(0.3, { x: 20, angle: 20 })\n .by(0.15, { x: -10, angle: -10 })\n .union()\n .repeatForever()\n .start();\n\n cc.tween(rabbonNode)\n .delay(5)\n .to(0.3, { opacity: 0 })\n .call(() => {\n node.stopAllActions();\n node.active = false;\n node.parent = null;\n node = null;\n })\n .start();\n });\n}\n\nasync function rabbonFall(node) {\n const time = 1 + Math.random();\n const offsetX = RandomInt(-200, 200) * time;\n await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });\n rabbonFall(node);\n}\n\n\nexport async function asyncTweenTo(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .to(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport async function asyncTweenBy(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .by(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport function showTrebleFirework(baseNode, rabbonList) {\n const middle = new FireworkSettings(baseNode, rabbonList);\n middle.pos = cc.v2(0, -400);\n middle.side = cc.v2(0, 1000);\n middle.range = 200;\n middle.number = 100;\n middle.scalseRange = 0.4;\n\n const left = FireworkSettings.copy(middle);\n left.pos = cc.v2(-600, -400);\n left.side = cc.v2(200, 1000);\n\n const right = FireworkSettings.copy(middle);\n right.pos = cc.v2(600, -400);\n right.side = cc.v2(-200, 1000);\n\n showFireworks(middle);\n showFireworks(left);\n showFireworks(right);\n}\n\nexport function onHomeworkFinish() {\n const middleLayer = cc.find('middleLayer');\n if (middleLayer) {\n const middleLayerComponent = middleLayer.getComponent('middleLayer');\n if (middleLayerComponent.role == 'student') {\n middleLayerComponent.onHomeworkFinish(() => { });\n }\n } else {\n console.log('onHomeworkFinish');\n }\n}\n\nexport function loadDragonBones(dragonDisplay,{tex, atlas, ske}) {\n return new Promise((resolve, reject) => {\n cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {\n if (error) {\n reject();\n return;\n }\n cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {\n if (error) {\n reject();\n return;\n }\n cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {\n if (error) {\n reject();\n return;\n }\n const atlasObj = new dragonBones.DragonBonesAtlasAsset()\n atlasObj.uuid = atlas\n atlasObj.atlasJson = atlasJson\n atlasObj.texture = texture\n \n const asset = new dragonBones.DragonBonesAsset()\n asset.uuid = ske\n asset.dragonBonesJson = dragonBonesJson;\n\n const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';\n dragonDisplay.armatureName = armatureName;\n \n dragonDisplay.dragonAtlasAsset = atlasObj\n dragonDisplay.dragonAsset = asset;\n resolve(asset._dragonBonesJsonData.armature[0].aabb);\n });\n });\n });\n });\n \n}\n\n\n\n\nexport function loadSpine(skeleton, picName, {tex, atlas, ske}) {\n return new Promise((resolve, reject) => {\n // cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {\n cc.assetManager.loadRemote(tex, (error, texture) => {\n if (error) {\n reject();\n return;\n }\n // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {\n cc.assetManager.loadAny({ url: atlas }, (error, atlasJson) => {\n if (error) {\n reject();\n return;\n }\n // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {\n cc.assetManager.loadAny({ url: ske }, (error, dragonBonesJson) => {\n if (error) {\n reject();\n return;\n }\n\n\n var asset = new sp.SkeletonData();\n asset._uuid = ske;\n asset.skeletonJson = JSON.stringify( dragonBonesJson );\n asset.atlasText = atlasJson;\n asset.textures = [texture];\n asset.textureNames = [picName];\n\n console.log('picName: ', picName);\n\n\t\t\t skeleton.skeletonData = asset;\n\t\n\n const jsonObj = dragonBonesJson //JSON.parse( assets[1]);\n const animationNameObj = jsonObj.animations;\n let animationNames = [];\n for (let name in animationNameObj) {\n console.log('name~~: ', name);\n animationNames.push(name);\n }\n\t\t\t console.log(\"skeleton.animation: \", skeleton.animation);\n skeleton.animationNames = animationNames;\n\t\t\t skeleton.loop = false;\n\n console.log(\"jsonObj['skeleton'] : \", jsonObj['skeleton'])\n\n resolve(jsonObj['skeleton']);\n\n\n // const atlasObj = new dragonBones.DragonBonesAtlasAsset()\n // atlasObj.uuid = atlas\n // atlasObj.atlasJson = atlasJson\n // atlasObj.texture = texture\n \n // const asset = new dragonBones.DragonBonesAsset()\n // asset.uuid = ske\n // asset.dragonBonesJson = dragonBonesJson;\n\n // const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';\n // dragonDisplay.armatureName = armatureName;\n \n // dragonDisplay.dragonAtlasAsset = atlasObj\n // dragonDisplay.dragonAsset = asset;\n // resolve(asset._dragonBonesJsonData.armature[0].aabb);\n });\n });\n });\n });\n \n}\n"]}
\ No newline at end of file
......@@ -450,6 +450,7 @@ cc.Class({
(0, _util.playAudioByUrl)(_this.data.end_audio, function () {
console.log('game finish');
(0, _util.onHomeworkFinish)();
}); // return new Promise((resolve,reject) => {
// setTimeout(() => {
// console.log('hint finish');
......@@ -467,6 +468,12 @@ cc.Class({
var k = _this._hintsNodeList[i].after;
after[k] = {
actions: function actions() {
if (t.isSpine) {
var skeleton = t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = false;
skeleton.animation = 'enlarge'; // skeleton.animation = skeleton.animationNames[0];
} else {
var dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('enlarge', 1);
console.log(dragonDisplay._armatureKey, 'enlarge');
......@@ -474,7 +481,8 @@ cc.Class({
// event.name为事件名称
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
}, _this); // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
}, _this);
} // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
// dragonDisplay.playAnimation('enlarge', 1);
// console.log(dragonDisplay._armatureKey, 'enlarge')
// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
......@@ -483,6 +491,7 @@ cc.Class({
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
// }, this);
}
};
};
......@@ -500,11 +509,19 @@ cc.Class({
for (var _i = 0; _i < _this._allAnimationNodes.length; _i++) {
var _t = _this._allAnimationNodes[_i];
if (_t.isSpine) {
var skeleton = _t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = true;
skeleton.animation = 'normal'; // skeleton.animation = skeleton.animationNames[0];
} else {
var dragonDisplay = _t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('normal', 0);
}
}
}
};
}
......@@ -514,7 +531,10 @@ cc.Class({
this.gameMachineService = (0, _xstate.interpret)(gameMachine).onTransition(function (state) {// console.log(1, state.value, state.context);
});
this.gameMachineService.start();
if (window.gameMachineService) {
window.gameMachineService = gameMachineService;
}
},
// 生命周期 start
start: function start() {
......@@ -605,7 +625,101 @@ cc.Class({
func(this.getDefaultData());
},
getDefaultData: function getDefaultData() {
return _defaultData.defaultData;
return {
"begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"begin_sep_time": 1,
"guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"bgItem": {
"url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
"rect": {
"x": 549.55,
"y": 0,
"width": 449.9,
"height": 582
}
},
"hotZoneItemArr": [{
"id": "1659333645573",
"index": 0,
"audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
"itemType": "rect",
"fontScale": 1.21015625,
"imgScale": 1,
"imgSizeW": 0,
"imgSizeH": 0,
"mapScale": 1.21015625,
"dragDot": {
"x": 774.5,
"y": 289.55016883743366
},
"gIdx": "1",
"labelText": "1",
"posX": 887.5,
"posY": 165.5,
"skeJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/d1f859d3fba84bd03565e543c986fb28.json",
"name": "6_4_ske.json"
},
"texJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/70f96e1cc7f013e27ed1952c503fb750.json",
"name": "6_4_tex.json"
},
"texPngData": {
"url": "http://staging-teach.cdn.ireadabc.com/b06f9b90018a6eb0175a01e355b9ced6.png",
"name": "6_4_tex.png"
},
"animType": "dragonBone",
"rect": {
"x": 36.08,
"y": 49.19,
"width": 153.95,
"height": 150.19
}
}, {
"id": "1659334098930",
"index": 1,
"audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
"itemType": "rect",
"fontScale": 1.21015625,
"imgScale": 1,
"imgSizeW": 0,
"imgSizeH": 0,
"mapScale": 1.21015625,
"dragDot": {
"x": 774.5,
"y": 289.55016883743366
},
"gIdx": "0",
"labelText": "1",
"posX": 1212.5,
"posY": 643.5,
"skeJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/bdbadb06e0c1157e727cecd28f28d10e.json",
"name": "spineboy-pro.json"
},
"texJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
"name": "spineboy-pro.atlas"
},
"texPngData": {
"url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
"name": "spineboy-pro.png"
},
"animType": "spine",
"rect": {
"x": 282.03,
"y": 408.15,
"width": 150.19,
"height": 150.19
}
}]
}; // return defaultData;
},
preloadItem: function preloadItem() {
this.addPreloadImage();
......@@ -855,10 +969,13 @@ cc.Class({
(function () {
var n = new cc.Node();
n.scale = 0.25;
var db = n.addComponent(dragonBones.ArmatureDisplay);
n.parent = ground;
n.active = false;
(0, _util.loadDragonBones)(db, {
if (_block.animType == 'spine') {
var skeleton = n.addComponent(sp.Skeleton);
n.isSpine = true;
(0, _util.loadSpine)(skeleton, _block.texPngData.name, {
tex: _block.texPngData.url,
atlas: _block.texJsonData.url,
ske: _block.skeJsonData.url
......@@ -867,6 +984,37 @@ cc.Class({
height = _ref.height;
n.width = width;
n.height = height;
n.active = true; // db.playAnimation('null', 0);
// skeleton.loop = true;
// skeleton.animation = skeleton.animationNames[0]
_this4._allAnimationNodes.push(n);
finishDbCount++;
console.log(finishDbCount, dbCount);
if (finishDbCount == dbCount) {
_this4.loadEnd();
}
})["catch"](function () {
finishDbCount++;
console.log(finishDbCount, dbCount);
if (finishDbCount == dbCount) {
_this4.loadEnd();
}
});
} else {
var db = n.addComponent(dragonBones.ArmatureDisplay);
(0, _util.loadDragonBones)(db, {
tex: _block.texPngData.url,
atlas: _block.texJsonData.url,
ske: _block.skeJsonData.url
}).then(function (_ref2) {
var width = _ref2.width,
height = _ref2.height;
n.width = width;
n.height = height;
n.active = true;
db.playAnimation('null', 0);
......@@ -886,6 +1034,7 @@ cc.Class({
_this4.loadEnd();
}
});
}
if (_block.gIdx == '0') {
var rectInfo = {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"9836134e-b892-4283-b6b2-78b5acf3ed45": {
"asset": 1617772640000,
"meta": 1641779775558,
"meta": 1659335438331,
"relativePath": "effects"
},
"430eccbf-bf2c-4e6e-8c0c-884bbb487f32": {
"asset": 1617772640000,
"meta": 1641779775591,
"meta": 1659335438359,
"relativePath": "effects/__builtin-editor-gizmo-line.effect"
},
"6c5cf6e1-b044-4eac-9431-835644d57381": {
"asset": 1617772640000,
"meta": 1641779775605,
"meta": 1659335438369,
"relativePath": "effects/__builtin-editor-gizmo-unlit.effect"
},
"115286d1-2e10-49ee-aab4-341583f607e8": {
"asset": 1617772640000,
"meta": 1641779775643,
"meta": 1659335438405,
"relativePath": "effects/__builtin-editor-gizmo.effect"
},
"abc2cb62-7852-4525-a90d-d474487b88f2": {
"asset": 1617772640000,
"meta": 1641779775761,
"meta": 1659335438508,
"relativePath": "effects/builtin-phong.effect"
},
"e2f00085-c597-422d-9759-52c360279106": {
"asset": 1617772640000,
"meta": 1641779775820,
"meta": 1659335438562,
"relativePath": "effects/builtin-toon.effect"
},
"f8e6b000-5643-4b86-9080-aa680ce1f599": {
"asset": 1617772640000,
"meta": 1641779775822,
"meta": 1659335438563,
"relativePath": "image"
},
"71561142-4c83-4933-afca-cb7a17f67053": {
"asset": 1617772640000,
"meta": 1641779775833,
"meta": 1659335438577,
"relativePath": "image/default_btn_disabled.png"
},
"e851e89b-faa2-4484-bea6-5c01dd9f06e2": {
"asset": 1617772640000,
"meta": 1641779775834,
"meta": 1659335438579,
"relativePath": "image/default_btn_normal.png"
},
"b43ff3c2-02bb-4874-81f7-f2dea6970f18": {
"asset": 1617772640000,
"meta": 1641779775842,
"meta": 1659335438587,
"relativePath": "image/default_btn_pressed.png"
},
"edd215b9-2796-4a05-aaf5-81f96c9281ce": {
"asset": 1617772640000,
"meta": 1641779775843,
"meta": 1659335438589,
"relativePath": "image/default_editbox_bg.png"
},
"d81ec8ad-247c-4e62-aa3c-d35c4193c7af": {
"asset": 1617772640000,
"meta": 1641779775851,
"meta": 1659335438598,
"relativePath": "image/default_panel.png"
},
"99170b0b-d210-46f1-b213-7d9e3f23098a": {
"asset": 1617772640000,
"meta": 1641779775852,
"meta": 1659335438599,
"relativePath": "image/default_progressbar_bg.png"
},
"cfef78f1-c8df-49b7-8ed0-4c953ace2621": {
"asset": 1617772640000,
"meta": 1641779775859,
"meta": 1659335438607,
"relativePath": "image/default_progressbar.png"
},
"567dcd80-8bf4-4535-8a5a-313f1caf078a": {
"asset": 1617772640000,
"meta": 1641779775860,
"meta": 1659335438608,
"relativePath": "image/default_radio_button_off.png"
},
"4bab67cb-18e6-4099-b840-355f0473f890": {
"asset": 1617772640000,
"meta": 1641779775868,
"meta": 1659335438617,
"relativePath": "image/default_scrollbar_bg.png"
},
"9d60001f-b5f4-4726-a629-2659e3ded0b8": {
"asset": 1617772640000,
"meta": 1641779775869,
"meta": 1659335438618,
"relativePath": "image/default_radio_button_on.png"
},
"617323dd-11f4-4dd3-8eec-0caf6b3b45b9": {
"asset": 1617772640000,
"meta": 1641779775877,
"meta": 1659335438626,
"relativePath": "image/default_scrollbar_vertical_bg.png"
},
"d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": {
"asset": 1617772640000,
"meta": 1641779775878,
"meta": 1659335438628,
"relativePath": "image/default_scrollbar_vertical.png"
},
"0275e94c-56a7-410f-bd1a-fc7483f7d14a": {
"asset": 1617772640000,
"meta": 1641779775884,
"meta": 1659335438636,
"relativePath": "image/default_sprite_splash.png"
},
"0291c134-b3da-4098-b7b5-e397edbe947f": {
"asset": 1617772640000,
"meta": 1641779775885,
"meta": 1659335438637,
"relativePath": "image/default_scrollbar.png"
},
"6e056173-d285-473c-b206-40a7fff5386e": {
"asset": 1617772640000,
"meta": 1641779775892,
"meta": 1659335438651,
"relativePath": "image/default_sprite.png"
},
"73a0903d-d80e-4e3c-aa67-f999543c08f5": {
"asset": 1617772640000,
"meta": 1641779775895,
"meta": 1659335438652,
"relativePath": "image/default_toggle_checkmark.png"
},
"d29077ba-1627-4a72-9579-7b56a235340c": {
"asset": 1617772640000,
"meta": 1641779775902,
"meta": 1659335438662,
"relativePath": "image/default_toggle_normal.png"
},
"c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": {
"asset": 1617772640000,
"meta": 1641779775903,
"meta": 1659335438663,
"relativePath": "image/default_toggle_disabled.png"
},
"b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": {
"asset": 1617772640000,
"meta": 1641779775911,
"meta": 1659335438672,
"relativePath": "image/default_toggle_pressed.png"
},
"5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": {
"asset": 1617772640000,
"meta": 1641779775912,
"meta": 1659335438672,
"relativePath": "materials"
},
"c4480a0a-6ac5-443f-8b40-361a14257fc8": {
"asset": 1617772640000,
"meta": 1641779776311,
"meta": 1659335439128,
"relativePath": "materials/builtin-phong.mtl"
},
"fc09f9bd-2cce-4605-b630-8145ef809ed6": {
"asset": 1617772640000,
"meta": 1641779775916,
"meta": 1659335438677,
"relativePath": "misc"
},
"2be36297-9abb-4fee-8049-9ed5e271da8a": {
"asset": 1617772640000,
"meta": 1641779775921,
"meta": 1659335438686,
"relativePath": "misc/default_video.mp4"
},
"db019bf7-f71c-4111-98cf-918ea180cb48": {
"asset": 1617772640000,
"meta": 1641779775921,
"meta": 1659335438687,
"relativePath": "model"
},
"e39e96e6-6f6e-413f-bcf1-ac7679bb648a": {
"asset": 1617772640000,
"meta": 1641779775922,
"meta": 1659335438688,
"relativePath": "model/prefab"
},
"600301aa-3357-4a10-b086-84f011fa32ba": {
"asset": 1617772640000,
"meta": 1641779775924,
"meta": 1659335438689,
"relativePath": "image/default-particle.png"
},
"a87cc147-01b2-43f8-8e42-a7ca90b0c757": {
"asset": 1617772640000,
"meta": 1641779775926,
"meta": 1659335438698,
"relativePath": "model/prefab/box.prefab"
},
"b5fc2cf2-7942-483d-be1f-bbeadc4714ad": {
"asset": 1617772640000,
"meta": 1641779775928,
"meta": 1659335438704,
"relativePath": "model/prefab/cone.prefab"
},
"fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": {
"asset": 1617772640000,
"meta": 1641779775929,
"meta": 1659335438695,
"relativePath": "model/prefab/capsule.prefab"
},
"1c5e4038-953a-44c2-b620-0bbfc6170477": {
"asset": 1617772640000,
"meta": 1641779775931,
"meta": 1659335438707,
"relativePath": "model/prefab/cylinder.prefab"
},
"3f376125-a699-40ca-ad05-04d662eaa1f2": {
"asset": 1617772640000,
"meta": 1641779775932,
"meta": 1659335438722,
"relativePath": "model/prefab/plane.prefab"
},
"6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": {
"asset": 1617772640000,
"meta": 1641779775934,
"meta": 1659335438724,
"relativePath": "model/prefab/quad.prefab"
},
"2d9a4b85-b0ab-4c46-84c5-18f393ab2058": {
"asset": 1617772640000,
"meta": 1641779775936,
"meta": 1659335438790,
"relativePath": "model/prefab/sphere.prefab"
},
"de510076-056b-484f-b94c-83bef217d0e1": {
"asset": 1617772640000,
"meta": 1641779775975,
"meta": 1659335438742,
"relativePath": "model/prefab/torus.prefab"
},
"f6e6dd15-71d1-4ffe-ace7-24fd39942c05": {
"asset": 1617772640000,
"meta": 1641779775976,
"meta": 1659335438791,
"relativePath": "obsolete"
},
"8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": {
"asset": 1617772640000,
"meta": 1641779775989,
"meta": 1659335438807,
"relativePath": "obsolete/atom.png"
},
"f743d2b6-b7ea-4c14-a55b-547ed4d0a045": {
"asset": 1617772640000,
"meta": 1641779775990,
"meta": 1659335438808,
"relativePath": "particle"
},
"b8223619-7e38-47c4-841f-9160c232495a": {
"asset": 1617772640000,
"meta": 1641779776327,
"meta": 1659335439145,
"relativePath": "obsolete/atom.plist"
},
"d0a82d39-bede-46c4-b698-c81ff0dedfff": {
"asset": 1617772640000,
"meta": 1641779775998,
"meta": 1659335438819,
"relativePath": "particle/atom.png"
},
"ae6c6c98-11e4-452f-8758-75f5c6a56e83": {
"asset": 1617772640000,
"meta": 1641779775999,
"meta": 1659335438820,
"relativePath": "prefab"
},
"897ef7a1-4860-4f64-968d-f5924b18668a": {
"asset": 1617772640000,
"meta": 1641779776001,
"meta": 1659335438822,
"relativePath": "prefab/2d-camera.prefab"
},
"b2687ac4-099e-403c-a192-ff477686f4f5": {
"asset": 1617772640000,
"meta": 1641779776328,
"meta": 1659335439147,
"relativePath": "particle/atom.plist"
},
"70d7cdb0-04cd-41bb-9480-c06a4785f386": {
"asset": 1617772640000,
"meta": 1641779776003,
"meta": 1659335438824,
"relativePath": "prefab/3d-camera.prefab"
},
"70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": {
"asset": 1617772640000,
"meta": 1641779776006,
"meta": 1659335438827,
"relativePath": "prefab/3d-particle.prefab"
},
"ed88f13d-fcad-4848-aa35-65a2cb973584": {
"asset": 1617772640000,
"meta": 1641779776008,
"meta": 1659335438830,
"relativePath": "prefab/3d-stage.prefab"
},
"972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": {
"asset": 1617772640000,
"meta": 1641779776011,
"meta": 1659335438833,
"relativePath": "prefab/button.prefab"
},
"2c937608-2562-40ea-b264-7395df6f0cea": {
"asset": 1617772640000,
"meta": 1641779776012,
"meta": 1659335438835,
"relativePath": "prefab/canvas.prefab"
},
"61aeb05b-3b32-452b-8eed-2b76deeed554": {
"asset": 1617772640000,
"meta": 1641779776014,
"meta": 1659335438837,
"relativePath": "prefab/editbox.prefab"
},
"27756ebb-3d33-44b0-9b96-e858fadd4dd4": {
"asset": 1617772640000,
"meta": 1641779776016,
"meta": 1659335438839,
"relativePath": "prefab/label.prefab"
},
"785a442c-3ceb-45be-a46e-7317f625f3b9": {
"asset": 1617772640000,
"meta": 1641779776019,
"meta": 1659335438841,
"relativePath": "prefab/layout.prefab"
},
"a3ee0214-b432-4865-9666-4a3211814282": {
"asset": 1617772640000,
"meta": 1641779776019,
"meta": 1659335438841,
"relativePath": "prefab/light"
},
"61906da3-7003-4bda-9abc-5769c76faee4": {
"asset": 1617772640000,
"meta": 1641779776021,
"meta": 1659335438843,
"relativePath": "prefab/light/ambient.prefab"
},
"ddb99b39-7004-47cd-9705-751905c43c46": {
"asset": 1617772640000,
"meta": 1641779776023,
"meta": 1659335438846,
"relativePath": "prefab/light/directional.prefab"
},
"0cf30284-9073-46bc-9eba-e62b69dbbff3": {
"asset": 1617772640000,
"meta": 1641779776024,
"meta": 1659335438848,
"relativePath": "prefab/light/point.prefab"
},
"f5331fd2-bf42-4ee3-a3fd-3e1657600eff": {
"asset": 1617772640000,
"meta": 1641779776026,
"meta": 1659335438850,
"relativePath": "prefab/light/spot.prefab"
},
"ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": {
"asset": 1617772640000,
"meta": 1641779776028,
"meta": 1659335438852,
"relativePath": "prefab/pageview.prefab"
},
"cd33edea-55f5-46c2-958d-357a01384a36": {
"asset": 1617772640000,
"meta": 1641779776030,
"meta": 1659335438854,
"relativePath": "prefab/particlesystem.prefab"
},
"5965ffac-69da-4b55-bcde-9225d0613c28": {
"asset": 1617772640000,
"meta": 1641779776032,
"meta": 1659335438856,
"relativePath": "prefab/progressBar.prefab"
},
"4a37dd57-78cd-4cec-aad4-f11a73d12b63": {
"asset": 1617772640000,
"meta": 1641779776033,
"meta": 1659335438858,
"relativePath": "prefab/richtext.prefab"
},
"32044bd2-481f-4cf1-a656-e2b2fb1594eb": {
"asset": 1617772640000,
"meta": 1641779776036,
"meta": 1659335438860,
"relativePath": "prefab/scrollview.prefab"
},
"0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": {
"asset": 1617772640000,
"meta": 1641779776037,
"meta": 1659335438862,
"relativePath": "prefab/slider.prefab"
},
"1f55e3be-b89b-4b79-88de-47fd31018044": {
"asset": 1617772640000,
"meta": 1641779776039,
"meta": 1659335438864,
"relativePath": "prefab/sprite_splash.prefab"
},
"96083d03-c332-4a3f-9386-d03e2d19e8ee": {
"asset": 1617772640000,
"meta": 1641779776041,
"meta": 1659335438866,
"relativePath": "prefab/sprite.prefab"
},
"7de03a80-4457-438d-95a7-3e7cdffd6086": {
"asset": 1617772640000,
"meta": 1641779776042,
"meta": 1659335438868,
"relativePath": "prefab/tiledmap.prefab"
},
"0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": {
"asset": 1617772640000,
"meta": 1641779776044,
"meta": 1659335438869,
"relativePath": "prefab/tiledtile.prefab"
},
"0d784963-d024-4ea6-a7db-03be0ad63010": {
"asset": 1617772640000,
"meta": 1641779776046,
"meta": 1659335438871,
"relativePath": "prefab/toggle.prefab"
},
"bf0a434c-84dd-4a8e-a08a-7a36f180cc75": {
"asset": 1617772640000,
"meta": 1641779776049,
"meta": 1659335438874,
"relativePath": "prefab/toggleContainer.prefab"
},
"d1b8be49-b0a0-435c-83b7-552bed4bbe35": {
"asset": 1617772640000,
"meta": 1641779776051,
"meta": 1659335438876,
"relativePath": "prefab/toggleGroup.prefab"
},
"232d2782-c4bd-4bb4-9e01-909f03d6d3b9": {
"asset": 1617772640000,
"meta": 1641779776053,
"meta": 1659335438879,
"relativePath": "prefab/videoplayer.prefab"
},
"8c5001fd-07ee-4a4b-a8a0-63e15195e94d": {
"asset": 1617772640000,
"meta": 1641779776054,
"meta": 1659335438881,
"relativePath": "prefab/webview.prefab"
},
"d8afc78c-4eac-4a9f-83dd-67bc70344d33": {
"asset": 1617772640000,
"meta": 1641779776055,
"meta": 1659335438882,
"relativePath": "resources"
},
"294c1663-4adf-4a1e-a795-53808011a38a": {
"asset": 1617772640000,
"meta": 1641779776056,
"meta": 1659335438883,
"relativePath": "resources/effects"
},
"30682f87-9f0d-4f17-8a44-72863791461b": {
"asset": 1617772640000,
"meta": 1641779776064,
"meta": 1659335438894,
"relativePath": "resources/effects/builtin-2d-graphics.effect"
},
"144c3297-af63-49e8-b8ef-1cfa29b3be28": {
"asset": 1617772640000,
"meta": 1641779776072,
"meta": 1659335438906,
"relativePath": "resources/effects/builtin-2d-gray-sprite.effect"
},
"f18742d7-56d2-4eb5-ae49-2d9d710b37c8": {
"asset": 1617772640000,
"meta": 1641779776087,
"meta": 1659335438922,
"relativePath": "resources/effects/builtin-2d-label.effect"
},
"0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": {
"asset": 1617772640000,
"meta": 1641779776101,
"meta": 1659335438932,
"relativePath": "resources/effects/builtin-2d-spine.effect"
},
"2874f8dd-416c-4440-81b7-555975426e93": {
"asset": 1617772640000,
"meta": 1641779776110,
"meta": 1659335438949,
"relativePath": "resources/effects/builtin-2d-sprite.effect"
},
"829a282c-b049-4019-bd38-5ace8d8a6417": {
"asset": 1617772640000,
"meta": 1641779776199,
"meta": 1659335439033,
"relativePath": "resources/effects/builtin-3d-particle.effect"
},
"2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": {
"asset": 1617772640000,
"meta": 1641779776231,
"meta": 1659335439052,
"relativePath": "resources/effects/builtin-3d-trail.effect"
},
"c0040c95-c57f-49cd-9cbc-12316b73d0d4": {
"asset": 1617772640000,
"meta": 1641779776238,
"meta": 1659335439061,
"relativePath": "resources/effects/builtin-clear-stencil.effect"
},
"6d91e591-4ce0-465c-809f-610ec95019c6": {
"asset": 1617772640000,
"meta": 1641779776253,
"meta": 1659335439075,
"relativePath": "resources/effects/builtin-unlit.effect"
},
"bbee2217-c261-49bd-a8ce-708d6bcc3500": {
"asset": 1617772640000,
"meta": 1641779776256,
"meta": 1659335439076,
"relativePath": "resources/materials"
},
"6f801092-0c37-4f30-89ef-c8d960825b36": {
"asset": 1617772640000,
"meta": 1641779776341,
"meta": 1659335439160,
"relativePath": "resources/materials/builtin-2d-base.mtl"
},
"a153945d-2511-4c14-be7b-05d242f47d57": {
"asset": 1617772640000,
"meta": 1641779776341,
"meta": 1659335439161,
"relativePath": "resources/materials/builtin-2d-graphics.mtl"
},
"3a7bb79f-32fd-422e-ada2-96f518fed422": {
"asset": 1617772640000,
"meta": 1641779776342,
"meta": 1659335439161,
"relativePath": "resources/materials/builtin-2d-gray-sprite.mtl"
},
"e02d87d4-e599-4d16-8001-e14891ac6506": {
"asset": 1617772640000,
"meta": 1641779776343,
"meta": 1659335439162,
"relativePath": "resources/materials/builtin-2d-label.mtl"
},
"7afd064b-113f-480e-b793-8817d19f63c3": {
"asset": 1617772640000,
"meta": 1641779776343,
"meta": 1659335439163,
"relativePath": "resources/materials/builtin-2d-spine.mtl"
},
"eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": {
"asset": 1617772640000,
"meta": 1641779776344,
"meta": 1659335439188,
"relativePath": "resources/materials/builtin-2d-sprite.mtl"
},
"432fa09c-cf03-4cff-a186-982604408a07": {
"asset": 1617772640000,
"meta": 1641779776362,
"meta": 1659335439189,
"relativePath": "resources/materials/builtin-3d-particle.mtl"
},
"466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": {
"asset": 1617772640000,
"meta": 1641779776364,
"meta": 1659335439202,
"relativePath": "resources/materials/builtin-3d-trail.mtl"
},
"cf7e0bb8-a81c-44a9-ad79-d28d43991032": {
"asset": 1617772640000,
"meta": 1641779776367,
"meta": 1659335439229,
"relativePath": "resources/materials/builtin-clear-stencil.mtl"
},
"2a296057-247c-4a1c-bbeb-0548b6c98650": {
"asset": 1617772640000,
"meta": 1641779776369,
"meta": 1659335439230,
"relativePath": "resources/materials/builtin-unlit.mtl"
},
"954fec8b-cd16-4bb9-a3b7-7719660e7558": {
"asset": 1617772640000,
"meta": 1641779778923,
"meta": 1659335442031,
"relativePath": "model/primitives.fbx"
},
"c35bb2f6-f24a-4850-ae44-643f2fdc7541": {
"asset": 1641780293469,
"meta": 1641805004759,
"asset": 1659073096358,
"meta": 1659335442095,
"relativePath": "OP15"
},
"cb9fa4ea-66ca-45af-ad31-e445c7b0ef32": {
"asset": 1641779387126,
"meta": 1641805004759,
"asset": 1659073096343,
"meta": 1659335442096,
"relativePath": "OP15/audios"
},
"f0680ae0-c079-45ef-abd7-9e63d90b982b": {
"asset": 1641779387125,
"meta": 1641805005319,
"asset": 1659073096343,
"meta": 1659335442752,
"relativePath": "OP15/audios/btn.mp3"
},
"17e37c00-52ee-45df-9795-d534124a9d06": {
"asset": 1641779387125,
"meta": 1641805005331,
"asset": 1659073096343,
"meta": 1659335442750,
"relativePath": "OP15/audios/right.mp3"
},
"0853721c-3f55-4eb2-873d-e3081cfadd4b": {
"asset": 1641779387142,
"meta": 1641805005331,
"asset": 1659073096351,
"meta": 1659335442753,
"relativePath": "OP15/dragonBones"
},
"7b142208-7ebf-4c01-894f-e214d8bc95c8": {
"asset": 1641779387134,
"meta": 1641805005332,
"asset": 1659073096347,
"meta": 1659335442754,
"relativePath": "OP15/dragonBones/cat"
},
"ff020f6d-a4b6-4baf-bcad-94ae605c2977": {
"asset": 1641779387126,
"meta": 1641805005337,
"asset": 1659073096344,
"meta": 1659335442757,
"relativePath": "OP15/dragonBones/cat/苹果_ske.json"
},
"73a669bb-5d2b-4085-a40c-3a5d4564e32c": {
"asset": 1641779387126,
"meta": 1641805005346,
"asset": 1659073096343,
"meta": 1659335442761,
"relativePath": "OP15/audios/wrong.mp3"
},
"1d1b55f6-522b-4095-bc6c-fdeeefe815e1": {
"asset": 1641779387140,
"meta": 1641805005349,
"asset": 1659073096349,
"meta": 1659335442762,
"relativePath": "OP15/dragonBones/logo_cat"
},
"8914b311-4cc5-4084-9634-12bcc9d52343": {
"asset": 1641779387137,
"meta": 1641805005359,
"asset": 1659073096348,
"meta": 1659335442768,
"relativePath": "OP15/dragonBones/logo_cat/mao_ske.json"
},
"ac49bcc0-d84e-4dd4-a8e3-7d81d1885337": {
"asset": 1641779387127,
"meta": 1641805006947,
"asset": 1659073096344,
"meta": 1659335444495,
"relativePath": "OP15/dragonBones/cat/苹果_tex.json"
},
"ef411b2a-700d-4eed-b153-e9978d134dc2": {
"asset": 1641779387139,
"meta": 1641805005392,
"asset": 1659073096349,
"meta": 1659335442807,
"relativePath": "OP15/dragonBones/logo_cat/mao_tex.png"
},
"8c3aee89-a22a-471a-a577-b91dc52744f3": {
"asset": 1641779387142,
"meta": 1641805005393,
"asset": 1659073096351,
"meta": 1659335442807,
"relativePath": "OP15/dragonBones/m1"
},
"85c02d20-775c-468c-9d40-5990616da740": {
"asset": 1641779387140,
"meta": 1641805005394,
"asset": 1659073096350,
"meta": 1659335442809,
"relativePath": "OP15/dragonBones/m1/music3_ske.json"
},
"d502f83c-26e4-4742-9c98-f2ec226a3926": {
"asset": 1641779387137,
"meta": 1641805006949,
"asset": 1659073096348,
"meta": 1659335444498,
"relativePath": "OP15/dragonBones/logo_cat/mao_tex.json"
},
"be757ae8-da77-4a47-82c1-cbd9d66dce16": {
"asset": 1641779387133,
"meta": 1641805005413,
"asset": 1659073096347,
"meta": 1659335442830,
"relativePath": "OP15/dragonBones/cat/苹果_tex.png"
},
"1680dfa5-9a70-48b5-95a5-c841a1c29ba4": {
"asset": 1641779387144,
"meta": 1641805005414,
"asset": 1659073096352,
"meta": 1659335442830,
"relativePath": "OP15/dragonBones/m2"
},
"b7443e20-55ac-44e7-bc32-39e072145612": {
"asset": 1641779387142,
"meta": 1641805005416,
"asset": 1659073096351,
"meta": 1659335442832,
"relativePath": "OP15/dragonBones/m2/music3_ske.json"
},
"a7622ed2-b5ea-4c87-9356-169409b7e2d3": {
"asset": 1641779387140,
"meta": 1641805006951,
"asset": 1659073096350,
"meta": 1659335444500,
"relativePath": "OP15/dragonBones/m1/music3_tex.json"
},
"251b536e-8758-4912-8d33-a0c422ec2c2f": {
"asset": 1641779387142,
"meta": 1641805005425,
"asset": 1659073096351,
"meta": 1659335442861,
"relativePath": "OP15/dragonBones/m1/music3_tex.png"
},
"20185448-a1ca-4de2-8b37-7bf6cdfccbae": {
"asset": 1641779387146,
"meta": 1641805005426,
"asset": 1659073096354,
"meta": 1659335442862,
"relativePath": "OP15/fonts"
},
"c551970e-b095-45f3-9f1d-25cde8b8deb1": {
"asset": 1641779387146,
"meta": 1641805005428,
"asset": 1659073096353,
"meta": 1659335442865,
"relativePath": "OP15/fonts/BRLNSDB.TTF"
},
"10940d4e-e58d-4f96-b96a-1daf938acb78": {
"asset": 1641779387143,
"meta": 1641805006952,
"asset": 1659073096352,
"meta": 1659335444502,
"relativePath": "OP15/dragonBones/m2/music3_tex.json"
},
"e8bd16b0-3804-45a9-a8ca-f52c02224f55": {
"asset": 1641779387148,
"meta": 1641805005429,
"asset": 1659073096355,
"meta": 1659335442868,
"relativePath": "OP15/scene"
},
"316d56e4-880f-4338-9e6b-7db9e72ad09b": {
"asset": 1641798383900,
"meta": 1641805005431,
"relativePath": "OP15/scene/OP15.fire"
},
"ddbf4888-2678-4720-899f-a7e48a445d42": {
"asset": 1641802566956,
"meta": 1641805005999,
"relativePath": "OP15/scene/OP15.js"
},
"b0c008bc-cf92-463b-8360-0984e13c2e4d": {
"asset": 1641779387151,
"meta": 1641805006001,
"asset": 1659073096358,
"meta": 1659335443476,
"relativePath": "OP15/script"
},
"4940dbda-eb0d-476c-8f6e-99b6106fc556": {
"asset": 1641779387144,
"meta": 1641805006004,
"asset": 1659073096352,
"meta": 1659335442866,
"relativePath": "OP15/dragonBones/m2/music3_tex.png"
},
"c41b0e51-55d7-443c-af3a-b22c3dd9b9e5": {
"asset": 1641784705428,
"meta": 1641805006065,
"asset": 1659073096355,
"meta": 1659335443571,
"relativePath": "OP15/script/defaultData.js"
},
"b54300af-b8e5-4b4e-aa2f-9ac1cef7b598": {
"asset": 1641779387149,
"meta": 1641805006066,
"asset": 1659073096356,
"meta": 1659335443573,
"relativePath": "OP15/script/runtime.js"
},
"6acefbc5-00ef-4eee-abea-1059f3e4f263": {
"asset": 1641779387150,
"meta": 1641805006135,
"asset": 1659073096356,
"meta": 1659335443660,
"relativePath": "OP15/script/state.js"
},
"ade7af40-d56d-4087-bbc6-2888fef55353": {
"asset": 1641779387150,
"meta": 1641805006326,
"relativePath": "OP15/script/util.js"
},
"ccc6e6f1-2591-48db-818d-618feeb72e55": {
"asset": 1641779387151,
"meta": 1641805006851,
"asset": 1659073096357,
"meta": 1659335444387,
"relativePath": "OP15/script/xstate.js"
},
"8ba21262-178f-4fa5-afc9-2c1dd50ba3ab": {
"asset": 1641779387169,
"meta": 1641805006857,
"asset": 1659073096367,
"meta": 1659335444389,
"relativePath": "OP15/textures"
},
"efa5fa09-a4dd-4bfc-ab7e-17c19f85408f": {
"asset": 1641779387152,
"meta": 1641805006872,
"asset": 1659073096359,
"meta": 1659335444404,
"relativePath": "OP15/textures/1orange.png"
},
"e1b4d971-9876-4832-803a-5a321964a78b": {
"asset": 1641779387153,
"meta": 1641805006877,
"asset": 1659073096359,
"meta": 1659335444410,
"relativePath": "OP15/textures/bg.jpg"
},
"9a79969a-0506-48d4-bc98-3c05d109b027": {
"asset": 1641779387156,
"meta": 1641805006883,
"asset": 1659073096361,
"meta": 1659335444417,
"relativePath": "OP15/textures/btn_left.png"
},
"d582359e-924e-4ee9-9964-1fc4bb417e71": {
"asset": 1641779387156,
"meta": 1641805006889,
"asset": 1659073096361,
"meta": 1659335444425,
"relativePath": "OP15/textures/btn_right.png"
},
"10974f6e-0816-4460-b0f0-1714a0f4646e": {
"asset": 1641779387155,
"meta": 1641805006902,
"asset": 1659073096361,
"meta": 1659335444442,
"relativePath": "OP15/textures/bg.png"
},
"7ea7f9ac-1027-4f05-a423-3d0822e6c6cf": {
"asset": 1641779387160,
"meta": 1641805006924,
"asset": 1659073096363,
"meta": 1659335444467,
"relativePath": "OP15/textures/frame.png"
},
"19b44615-cd52-49d8-8cce-5dfa01208881": {
"asset": 1641779387167,
"meta": 1641805006928,
"asset": 1659073096365,
"meta": 1659335444473,
"relativePath": "OP15/textures/ground.png"
},
"18d07592-51a9-421e-8972-0f67b68d29e1": {
"asset": 1641779387168,
"meta": 1641805006933,
"asset": 1659073096366,
"meta": 1659335444478,
"relativePath": "OP15/textures/icon.png"
},
"ed404fc3-8c4d-4df7-ac92-62f4e2274711": {
"asset": 1641779387168,
"meta": 1641805006939,
"asset": 1659073096366,
"meta": 1659335444486,
"relativePath": "OP15/textures/m1.png"
},
"de3ca226-34cc-4ebf-984b-4dc0ddc22e95": {
"asset": 1641779387168,
"meta": 1641805006943,
"asset": 1659073096367,
"meta": 1659335444491,
"relativePath": "OP15/textures/m2.png"
},
"ade7af40-d56d-4087-bbc6-2888fef55353": {
"asset": 1659340046702,
"meta": 1659340048819,
"relativePath": "OP15/script/util.js"
},
"316d56e4-880f-4338-9e6b-7db9e72ad09b": {
"asset": 1659342383855,
"meta": 1659342383867,
"relativePath": "OP15/scene/OP15.fire"
},
"ddbf4888-2678-4720-899f-a7e48a445d42": {
"asset": 1659343616707,
"meta": 1659343948374,
"relativePath": "OP15/scene/OP15.js"
}
}
\ No newline at end of file
{"version":"1.0.8","stats":{"/Users/admin/workspace/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-01-10T08:17:43.297Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-01-10T08:17:43.274Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-01-10T08:17:43.271Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-01-10T08:17:43.270Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-01-10T08:17:43.269Z","/Users/admin/workspace/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-01-10T08:17:43.272Z"}}
{"version":"1.0.8","stats":{"/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/__qc_index__.js":"2022-08-01T06:30:44.713Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/defaultData.js":"2022-08-01T06:30:44.689Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/scene/OP15.js":"2022-08-01T06:30:44.691Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/state.js":"2022-08-01T06:30:44.688Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/util.js":"2022-08-01T06:30:44.689Z","/Users/lmz/Documents/workspace/pro_hw/OP15/temp/quick-scripts/src/assets/OP15/script/xstate.js":"2022-08-01T06:30:44.690Z"}}
This source diff could not be displayed because it is too large. You can view the blob instead.
(function () {
var scripts = [{"deps":{"./assets/OP15/script/xstate":3,"./assets/OP15/script/state":1,"./assets/OP15/script/defaultData":4,"./assets/OP15/scene/OP15":2,"./assets/OP15/script/util":5},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{"../script/defaultData":4,"../script/xstate":3,"../script/util":5},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"}];
var scripts = [{"deps":{"./assets/OP15/script/state":3,"./assets/OP15/script/xstate":5,"./assets/OP15/script/defaultData":1,"./assets/OP15/scene/OP15":2,"./assets/OP15/script/util":4},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/defaultData.js"},{"deps":{"../script/defaultData":1,"../script/xstate":5,"../script/util":4},"path":"preview-scripts/assets/OP15/scene/OP15.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/state.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/util.js"},{"deps":{},"path":"preview-scripts/assets/OP15/script/xstate.js"}];
var entries = ["preview-scripts/__qc_index__.js"];
var bundleScript = 'preview-scripts/__qc_bundle__.js';
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -39,6 +39,7 @@ exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.onHomeworkFinish = onHomeworkFinish;
exports.loadDragonBones = loadDragonBones;
exports.loadSpine = loadSpine;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
......@@ -365,7 +366,7 @@ function _showFireworks() {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
......@@ -433,7 +434,7 @@ function _showFireworks() {
}));
return function (_x12, _x13) {
return _ref2.apply(this, arguments);
return _ref3.apply(this, arguments);
};
}());
......@@ -629,6 +630,76 @@ function loadDragonBones(dragonDisplay, _ref) {
});
}
function loadSpine(skeleton, picName, _ref2) {
var tex = _ref2.tex,
atlas = _ref2.atlas,
ske = _ref2.ske;
return new Promise(function (resolve, reject) {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, function (error, texture) {
if (error) {
reject();
return;
} // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({
url: atlas
}, function (error, atlasJson) {
if (error) {
reject();
return;
} // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({
url: ske
}, function (error, dragonBonesJson) {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify(dragonBonesJson);
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
var animationNameObj = jsonObj.animations;
var animationNames = [];
for (var name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
cc._RF.pop();
}
if (nodeEnv) {
......@@ -640,4 +711,4 @@ cc._RF.pop();
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC91dGlsLmpzIl0sIm5hbWVzIjpbImdldFBvc0J5QW5nbGUiLCJhbmdsZSIsImxlbiIsInJhZGlhbiIsIk1hdGgiLCJQSSIsIngiLCJzaW4iLCJ5IiwiY29zIiwiZ2V0QW5nbGVCeVBvcyIsInB4IiwicHkiLCJteCIsIm15IiwiYWJzIiwieiIsInNxcnQiLCJwb3ciLCJyYWRpbmEiLCJhY29zIiwiZmxvb3IiLCJleGNoYW5nZU5vZGVQb3MiLCJiYXNlTm9kZSIsInRhcmdldE5vZGUiLCJjb252ZXJ0VG9Ob2RlU3BhY2VBUiIsIl9wYXJlbnQiLCJjb252ZXJ0VG9Xb3JsZFNwYWNlQVIiLCJjYyIsInYyIiwiUmFuZG9tSW50IiwiYSIsImIiLCJtYXgiLCJtaW4iLCJyYW5kb20iLCJyYW5kb21Tb3J0QnlBcnIiLCJhcnIiLCJuZXdBcnIiLCJ0bXBBcnIiLCJjb25jYXQiLCJsZW5ndGgiLCJyYW5kb21JbmRleCIsInB1c2giLCJzcGxpY2UiLCJzZXRTcHJOb2RlTWF4TGVuIiwic3ByTm9kZSIsIm1heFciLCJtYXhIIiwic3giLCJ3aWR0aCIsInN5IiwiaGVpZ2h0IiwicyIsInNjYWxlIiwicm91bmQiLCJsb2NhbFBvc1RvbG9jYWxQb3MiLCJ3b3JsZFBvcyIsInBhcmVudCIsImxvY2FsUG9zIiwid29ybGRQb3NUb0xvY2FsUG9zIiwiZ2V0U2NhbGVSYXRlQnkyTm9kZSIsIm1heEZsYWciLCJ3b3JsZFJlY3QxIiwiZ2V0Qm91bmRpbmdCb3hUb1dvcmxkIiwid29ybGRSZWN0MiIsImdldERpc3RhbmNlIiwic3RhcnQiLCJlbmQiLCJwb3MiLCJkaXMiLCJwbGF5QXVkaW9CeVVybCIsImF1ZGlvX3VybCIsImNiIiwiQXVkaW9DbGlwIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiYXVkaW9JZCIsImF1ZGlvRW5naW5lIiwicGxheSIsInNldEZpbmlzaENhbGxiYWNrIiwiYXNzZXRNYW5hZ2VyIiwibG9hZFJlbW90ZSIsImVyciIsImF1ZGlvQ2xpcCIsImJ0bkNsaWNrQW5pbWEiLCJidG4iLCJ0aW1lIiwicmF0ZSIsInRtcFNjYWxlIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfU1RBUlQiLCJ0d2VlbiIsInRvIiwiVE9VQ0hfQ0FOQ0VMIiwiVE9VQ0hfRU5EIiwiZ2V0U3ByaXRlRnJpbWVCeVVybCIsInVybCIsImxvYWRlciIsImxvYWQiLCJpbWciLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwiZ2V0U3ByTm9kZSIsInJlc05hbWUiLCJzZiIsImZpbmQiLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJub2RlIiwiYWRkQ29tcG9uZW50IiwiZ2V0U3ByTm9kZUJ5VXJsIiwic3ByIiwicGxheUF1ZGlvIiwicGxheUVmZmVjdCIsImFzeW5jRGVsYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJlIiwiRmlyZXdvcmtTZXR0aW5ncyIsIm5vZGVMaXN0Iiwic2lkZSIsInJhbmdlIiwibnVtYmVyIiwic2NhbHNlUmFuZ2UiLCJjb3B5IiwiZmlyZXdvcmsiLCJzaG93RmlyZXdvcmtzIiwiZmlyZXdvcmtTZXR0aW5ncyIsIkFycmF5IiwiZmlsbCIsImZvckVhY2giLCJfIiwiaSIsInJhYmJvbk5vZGUiLCJpbnN0YW50aWF0ZSIsImFjdGl2ZSIsImFzeW5jVHdlZW5CeSIsImVhc2luZyIsImJ5IiwicmFiYm9uRmFsbCIsInVuaW9uIiwicmVwZWF0Rm9yZXZlciIsImRlbGF5Iiwib3BhY2l0eSIsImNhbGwiLCJzdG9wQWxsQWN0aW9ucyIsIm9mZnNldFgiLCJhc3luY1R3ZWVuVG8iLCJkdXJhdGlvbiIsIm9iaiIsImVhc2UiLCJ1bmRlZmluZWQiLCJzaG93VHJlYmxlRmlyZXdvcmsiLCJyYWJib25MaXN0IiwibWlkZGxlIiwibGVmdCIsInJpZ2h0Iiwib25Ib21ld29ya0ZpbmlzaCIsIm1pZGRsZUxheWVyIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJyb2xlIiwiY29uc29sZSIsImxvZyIsImxvYWREcmFnb25Cb25lcyIsImRyYWdvbkRpc3BsYXkiLCJ0ZXgiLCJhdGxhcyIsInNrZSIsInR5cGUiLCJlcnJvciIsInRleHR1cmUiLCJhdGxhc0pzb24iLCJkcmFnb25Cb25lc0pzb24iLCJhdGxhc09iaiIsImRyYWdvbkJvbmVzIiwiRHJhZ29uQm9uZXNBdGxhc0Fzc2V0IiwidXVpZCIsImFzc2V0IiwiRHJhZ29uQm9uZXNBc3NldCIsImFybWF0dXJlTmFtZSIsIl9kcmFnb25Cb25lc0pzb25EYXRhIiwiYXJtYXR1cmUiLCJkcmFnb25BdGxhc0Fzc2V0IiwiZHJhZ29uQXNzZXQiLCJhYWJiIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCQyxHQUE5QixFQUFtQztBQUV4QyxNQUFNQyxNQUFNLEdBQUdGLEtBQUssR0FBR0csSUFBSSxDQUFDQyxFQUFiLEdBQWtCLEdBQWpDO0FBQ0EsTUFBTUMsQ0FBQyxHQUFHRixJQUFJLENBQUNHLEdBQUwsQ0FBU0osTUFBVCxJQUFtQkQsR0FBN0I7QUFDQSxNQUFNTSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssR0FBTCxDQUFTTixNQUFULElBQW1CRCxHQUE3QjtBQUVBLFNBQU87QUFBRUksSUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtFLElBQUFBLENBQUMsRUFBREE7QUFBTCxHQUFQO0FBRUQ7O0FBRU0sU0FBU0UsYUFBVCxDQUF1QkMsRUFBdkIsRUFBMkJDLEVBQTNCLEVBQStCQyxFQUEvQixFQUFtQ0MsRUFBbkMsRUFBdUM7QUFFNUMsTUFBTVIsQ0FBQyxHQUFHRixJQUFJLENBQUNXLEdBQUwsQ0FBU0osRUFBRSxHQUFHRSxFQUFkLENBQVY7QUFDQSxNQUFNTCxDQUFDLEdBQUdKLElBQUksQ0FBQ1csR0FBTCxDQUFTSCxFQUFFLEdBQUdFLEVBQWQsQ0FBVjtBQUVBLE1BQU1FLENBQUMsR0FBR1osSUFBSSxDQUFDYSxJQUFMLENBQVViLElBQUks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LFFBQVEsQ0FBQ0YsU0FBVCxHQUFxQkEsU0FBckI7QUFDQUUsVUFBQUEsUUFBUSxDQUFDSCxPQUFULEdBQW1CQSxPQUFuQjtBQUVBLGNBQU1PLEtBQUssR0FBRyxJQUFJSCxXQUFXLENBQUNJLGdCQUFoQixFQUFkO0FBQ0FELFVBQUFBLEtBQUssQ0FBQ0QsSUFBTixHQUFhVCxHQUFiO0FBQ0FVLFVBQUFBLEtBQUssQ0FBQ0wsZUFBTixHQUF3QkEsZUFBeEI7QUFFQSxjQUFNTyxZQUFZLEdBQUdGLEtBQUssQ0FBQ0csb0JBQU4sQ0FBMkJDLFFBQTNCLENBQW9DLENBQXBDLEVBQXVDOUcsSUFBdkMsSUFBK0MsU0FBcEU7QUFDQTZGLFVBQUFBLGFBQWEsQ0FBQ2UsWUFBZCxHQUE2QkEsWUFBN0I7QUFFQWYsVUFBQUEsYUFBYSxDQUFDa0IsZ0JBQWQsR0FBaUNULFFBQWpDO0FBQ0FULFVBQUFBLGFBQWEsQ0FBQ21CLFdBQWQsR0FBNEJOLEtBQTVCO0FBQ0EvRCxVQUFBQSxPQUFPLENBQUMrRCxLQUFLLENBQUNHLG9CQUFOLENBQTJCQyxRQUEzQixDQUFvQyxDQUFwQyxFQUF1Q0csSUFBeEMsQ0FBUDtBQUNELFNBcEJEO0FBcUJILE9BMUJEO0FBMkJELEtBaENEO0FBaUNELEdBbENNLENBQVA7QUFvQ0QiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFBvc1RvbG9jYWxQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcblx0Y29uc3Qgd29ybGRQb3MgPSB0YXJnZXROb2RlLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKTtcblx0Y29uc3QgbG9jYWxQb3MgPSBiYXNlTm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIod29ybGRQb3MueCwgd29ybGRQb3MueSkpO1xuXHRyZXR1cm4gbG9jYWxQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3b3JsZFBvc1RvTG9jYWxQb3Mod29ybGRQb3MsIGJhc2VOb2RlKSB7XG5cdGNvbnN0IGxvY2FsUG9zID0gYmFzZU5vZGUucGFyZW50LmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHdvcmxkUG9zLngsIHdvcmxkUG9zLnkpKTtcblx0cmV0dXJuIGxvY2FsUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVSYXRlQnkyTm9kZShiYXNlTm9kZSwgdGFyZ2V0Tm9kZSwgbWF4RmxhZyA9IHRydWUpIHtcblx0Y29uc3Qgd29ybGRSZWN0MSA9IHRhcmdldE5vZGUuZ2V0Qm91bmRpbmdCb3hUb1dvcmxkKCk7XG5cdGNvbnN0IHdvcmxkUmVjdDIgPSBiYXNlTm9kZS5nZXRCb3VuZGluZ0JveFRvV29ybGQoKTtcblxuXHRjb25zdCBzeCA9IHdvcmxkUmVjdDEud2lkdGggLyB3b3JsZFJlY3QyLndpZHRoO1xuXHRjb25zdCBzeSA9IHdvcmxkUmVjdDEuaGVpZ2h0IC8gd29ybGRSZWN0Mi5oZWlnaHQ7XG5cdGlmIChtYXhGbGFnKSB7XG5cdFx0cmV0dXJuIE1hdGgubWF4KHN4LCBzeSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIE1hdGgubWluKHN4LCBzeSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlIChzdGFydCwgZW5kKXtcbiAgICB2YXIgcG9zID0gY2MudjIoc3RhcnQueCAtIGVuZC54LCBzdGFydC55IC0gZW5kLnkpO1xuICAgIHZhciBkaXMgPSBNYXRoLnNxcnQocG9zLngqcG9zLnggKyBwb3MueSpwb3MueSk7XG4gICAgcmV0dXJuIGRpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBdWRpb0J5VXJsKGF1ZGlvX3VybCwgY2I9bnVsbCkge1xuXHRpZiAoYXVkaW9fdXJsKSB7XG4gICAgaWYgKChhdWRpb191cmwgaW5zdGFuY2VvZiBjYy5BdWRpb0NsaXApICYmYXVkaW9fdXJsLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ2NjX0F1ZGlvQ2xpcCcpIHtcbiAgICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvX3VybCwgZmFsc2UsIDAuOCk7XG4gICAgICBpZiAoY2IpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soYXVkaW9JZCwgKCkgPT4ge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShhdWRpb191cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0lkID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb0NsaXAsIGZhbHNlLCAwLjgpO1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTsgICAgfVxuXHRcdFxuXHR9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ0bkNsaWNrQW5pbWEoYnRuLCB0aW1lPTAuMTUsIHJhdGU9MS4wNSkge1xuICBidG4udG1wU2NhbGUgPSBidG4uc2NhbGU7XG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgKCkgPT4ge1xuICAgIGNjLnR3ZWVuKGJ0bilcbiAgICAgIC50byh0aW1lIC8gMiwge3NjYWxlOiBidG4uc2NhbGUgKiByYXRlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwcml0ZUZyaW1lQnlVcmwodXJsLCBjYikge1xuICBjYy5sb2FkZXIubG9hZCh7IHVybCB9LCAoZXJyLCBpbWcpID0+IHtcbiAgICBjb25zdCBzcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZShpbWcpXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHJpdGVGcmFtZSk7XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ByTm9kZShyZXNOYW1lKSB7XG4gIGNvbnN0IHNmID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9pbWcvJyArIHJlc05hbWUpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lO1xuICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNmO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwck5vZGVCeVVybCh1cmwsIGNiKSB7XG4gIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuICBjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuICBnZXRTcHJpdGVGcmltZUJ5VXJsKHVybCwgKHNmKSA9PiB7XG4gICAgc3ByLnNwcml0ZUZyYW1lID0gc2Y7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHIpO1xuICAgIH1cbiAgfSlcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QXVkaW8oYXVkaW9DbGlwLCBjYiA9IG51bGwpIHtcbiAgaWYgKGF1ZGlvQ2xpcCkge1xuICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5RWZmZWN0KGF1ZGlvQ2xpcCwgZmFsc2UsIDAuOCk7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRGVsYXkodGltZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgdGltZSAqIDEwMDApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaXJld29ya1NldHRpbmdzIHtcbiAgYmFzZU5vZGU7IC8vIOeItuiKgueCuVxuICBub2RlTGlzdDsgLy8g54Gr6Iqx6IqC54K555qEYXJyYXlcbiAgcG9zOyAvLyDlj5HlsITngrlcbiAgc2lkZTsgLy8g5Y+R5bCE5pa55ZCRXG4gIHJhbmdlOyAvLyDmianmlaPojIPlm7RcbiAgbnVtYmVyOyAvLyDlj5HlsITmlbDph49cbiAgc2NhbHNlUmFuZ2U7IC8vIOe8qeaUvuiMg+WbtFxuICBjb25zdHJ1Y3RvcihiYXNlTm9kZSwgbm9kZUxpc3QsXG4gICAgcG9zID0gY2MudjIoMCwgMCksXG4gICAgc2lkZSA9IGNjLnYyKDAsIDEwMCksXG4gICAgcmFuZ2UgPSA1MCxcbiAgICBudW1iZXIgPSAxMDAsXG4gICAgc2NhbHNlUmFuZ2UgPSAwXG4gICkge1xuICAgIHRoaXMuYmFzZU5vZGUgPSBiYXNlTm9kZTtcbiAgICB0aGlzLm5vZGVMaXN0ID0gbm9kZUxpc3Q7XG4gICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgdGhpcy5zaWRlID0gc2lkZTtcbiAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zY2Fsc2VSYW5nZSA9IHNjYWxzZVJhbmdlO1xuICB9XG5cbiAgc3RhdGljIGNvcHkoZmlyZXdvcmspIHtcbiAgICByZXR1cm4gbmV3IEZpcmV3b3JrU2V0dGluZ3MoXG4gICAgICBmaXJld29yay5iYXNlTm9kZSxcbiAgICAgIGZpcmV3b3JrLm5vZGVMaXN0LFxuICAgICAgZmlyZXdvcmsucG9zLFxuICAgICAgZmlyZXdvcmsuc2lkZSxcbiAgICAgIGZpcmV3b3JrLnJhbmdlLFxuICAgICAgZmlyZXdvcmsubnVtYmVyLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dGaXJld29ya3MoZmlyZXdvcmtTZXR0aW5ncykge1xuICBjb25zdCB7IGJhc2VOb2RlLCBub2RlTGlzdCwgcG9zLCBzaWRlLCByYW5nZSwgbnVtYmVyLCBzY2Fsc2VSYW5nZSB9ID0gZmlyZXdvcmtTZXR0aW5ncztcbiAgbmV3IEFycmF5KG51bWJlcikuZmlsbCgnICcpLmZvckVhY2goYXN5bmMgKF8sIGkpID0+IHtcblxuICAgIGxldCByYWJib25Ob2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgICByYWJib25Ob2RlLnBhcmVudCA9IGJhc2VOb2RlO1xuICAgIHJhYmJvbk5vZGUueCA9IHBvcy54O1xuICAgIHJhYmJvbk5vZGUueSA9IHBvcy55O1xuICAgIHJhYmJvbk5vZGUuYW5nbGUgPSA2MCAqIE1hdGgucmFuZG9tKCkgLSAzMDtcblxuICAgIGxldCBub2RlID0gY2MuaW5zdGFudGlhdGUobm9kZUxpc3RbUmFuZG9tSW50KG5vZGVMaXN0Lmxlbmd0aCldKTtcbiAgICBub2RlLnBhcmVudCA9IHJhYmJvbk5vZGU7XG4gICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgIG5vZGUueCA9IDA7XG4gICAgbm9kZS55ID0gMDtcbiAgICBub2RlLmFuZ2xlID0gMDtcbiAgICBub2RlLnNjYWxlID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc2NhbHNlUmFuZ2UgKyAxO1xuXG4gICAgY29uc3QgcmF0ZSA9IE1hdGgucmFuZG9tKCk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLlBJICogKE1hdGgucmFuZG9tKCkgKiAyIC0gMSk7XG5cbiAgICBhd2FpdCBhc3luY1R3ZWVuQnkocmFiYm9uTm9kZSwgMC4zLCB7XG4gICAgICB4OiBzaWRlLnggKiByYXRlICsgTWF0aC5jb3MoYW5nbGUpICogcmFuZ2UgKiByYXRlLFxuICAgICAgeTogc2lkZS55ICogcmF0ZSArIE1hdGguc2luKGFuZ2xlKSAqIHJhbmdlICogcmF0ZVxuICAgIH0sIHtcbiAgICAgIGVhc2luZzogJ3F1YWRJbidcbiAgICB9KTtcblxuICAgIGNjLnR3ZWVuKHJhYmJvbk5vZGUpXG4gICAgICAuYnkoOCwgeyB5OiAtMjAwMCB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICBjYy50d2VlbihyYWJib25Ob2RlKVxuICAgICAgLnRvKDUsIHsgc2NhbGU6IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHNjYWxzZVJhbmdlICsgMSB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICByYWJib25GYWxsKHJhYmJvbk5vZGUpO1xuXG4gICAgYXdhaXQgYXN5bmNEZWxheShNYXRoLnJhbmRvbSgpKTtcbiAgICBjYy50d2Vlbihub2RlKVxuICAgICAgLmJ5KDAuMTUsIHsgeDogLTEwLCBhbmdsZTogLTEwIH0pXG4gICAgICAuYnkoMC4zLCB7IHg6IDIwLCBhbmdsZTogMjAgfSlcbiAgICAgIC5ieSgwLjE1LCB7IHg6IC0xMCwgYW5nbGU6IC0xMCB9KVxuICAgICAgLnVuaW9uKClcbiAgICAgIC5yZXBlYXRGb3JldmVyKClcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgY2MudHdlZW4ocmFiYm9uTm9kZSlcbiAgICAgIC5kZWxheSg1KVxuICAgICAgLnRvKDAuMywgeyBvcGFjaXR5OiAwIH0pXG4gICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgIG5vZGUuc3RvcEFsbEFjdGlvbnMoKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuc3RhcnQoKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJhYmJvbkZhbGwobm9kZSkge1xuICBjb25zdCB0aW1lID0gMSArIE1hdGgucmFuZG9tKCk7XG4gIGNvbnN0IG9mZnNldFggPSBSYW5kb21JbnQoLTIwMCwgMjAwKSAqIHRpbWU7XG4gIGF3YWl0IGFzeW5jVHdlZW5CeShub2RlLCB0aW1lLCB7IHg6IG9mZnNldFgsIGFuZ2xlOiBvZmZzZXRYICogNjAgLyAyMDAgfSk7XG4gIHJhYmJvbkZhbGwobm9kZSk7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5Ubyhub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC50byhkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5CeShub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC5ieShkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dUcmVibGVGaXJld29yayhiYXNlTm9kZSwgcmFiYm9uTGlzdCkge1xuICBjb25zdCBtaWRkbGUgPSBuZXcgRmlyZXdvcmtTZXR0aW5ncyhiYXNlTm9kZSwgcmFiYm9uTGlzdCk7XG4gIG1pZGRsZS5wb3MgPSBjYy52MigwLCAtNDAwKTtcbiAgbWlkZGxlLnNpZGUgPSBjYy52MigwLCAxMDAwKTtcbiAgbWlkZGxlLnJhbmdlID0gMjAwO1xuICBtaWRkbGUubnVtYmVyID0gMTAwO1xuICBtaWRkbGUuc2NhbHNlUmFuZ2UgPSAwLjQ7XG5cbiAgY29uc3QgbGVmdCA9IEZpcmV3b3JrU2V0dGluZ3MuY29weShtaWRkbGUpO1xuICBsZWZ0LnBvcyA9IGNjLnYyKC02MDAsIC00MDApO1xuICBsZWZ0LnNpZGUgPSBjYy52MigyMDAsIDEwMDApO1xuXG4gIGNvbnN0IHJpZ2h0ID0gRmlyZXdvcmtTZXR0aW5ncy5jb3B5KG1pZGRsZSk7XG4gIHJpZ2h0LnBvcyA9IGNjLnYyKDYwMCwgLTQwMCk7XG4gIHJpZ2h0LnNpZGUgPSBjYy52MigtMjAwLCAxMDAwKTtcblxuICBzaG93RmlyZXdvcmtzKG1pZGRsZSk7XG4gIHNob3dGaXJld29ya3MobGVmdCk7XG4gIHNob3dGaXJld29ya3MocmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25Ib21ld29ya0ZpbmlzaCgpIHtcbiAgY29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuICBpZiAobWlkZGxlTGF5ZXIpIHtcbiAgICBjb25zdCBtaWRkbGVMYXllckNvbXBvbmVudCA9IG1pZGRsZUxheWVyLmdldENvbXBvbmVudCgnbWlkZGxlTGF5ZXInKTtcbiAgICBpZiAobWlkZGxlTGF5ZXJDb21wb25lbnQucm9sZSA9PSAnc3R1ZGVudCcpIHtcbiAgICAgIG1pZGRsZUxheWVyQ29tcG9uZW50Lm9uSG9tZXdvcmtGaW5pc2goKCkgPT4geyB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ29uSG9tZXdvcmtGaW5pc2gnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERyYWdvbkJvbmVzKGRyYWdvbkRpc3BsYXkse3RleCwgYXRsYXMsIHNrZX0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogdGV4LCB0eXBlOiAncG5nJyB9LCAoZXJyb3IsIHRleHR1cmUpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2MubG9hZGVyLmxvYWQoeyB1cmw6IGF0bGFzLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufSJdfQ==
\ No newline at end of file
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9PUDE1L3NjcmlwdC91dGlsLmpzIl0sIm5hbWVzIjpbImdldFBvc0J5QW5nbGUiLCJhbmdsZSIsImxlbiIsInJhZGlhbiIsIk1hdGgiLCJQSSIsIngiLCJzaW4iLCJ5IiwiY29zIiwiZ2V0QW5nbGVCeVBvcyIsInB4IiwicHkiLCJteCIsIm15IiwiYWJzIiwieiIsInNxcnQiLCJwb3ciLCJyYWRpbmEiLCJhY29zIiwiZmxvb3IiLCJleGNoYW5nZU5vZGVQb3MiLCJiYXNlTm9kZSIsInRhcmdldE5vZGUiLCJjb252ZXJ0VG9Ob2RlU3BhY2VBUiIsIl9wYXJlbnQiLCJjb252ZXJ0VG9Xb3JsZFNwYWNlQVIiLCJjYyIsInYyIiwiUmFuZG9tSW50IiwiYSIsImIiLCJtYXgiLCJtaW4iLCJyYW5kb20iLCJyYW5kb21Tb3J0QnlBcnIiLCJhcnIiLCJuZXdBcnIiLCJ0bXBBcnIiLCJjb25jYXQiLCJsZW5ndGgiLCJyYW5kb21JbmRleCIsInB1c2giLCJzcGxpY2UiLCJzZXRTcHJOb2RlTWF4TGVuIiwic3ByTm9kZSIsIm1heFciLCJtYXhIIiwic3giLCJ3aWR0aCIsInN5IiwiaGVpZ2h0IiwicyIsInNjYWxlIiwicm91bmQiLCJsb2NhbFBvc1RvbG9jYWxQb3MiLCJ3b3JsZFBvcyIsInBhcmVudCIsImxvY2FsUG9zIiwid29ybGRQb3NUb0xvY2FsUG9zIiwiZ2V0U2NhbGVSYXRlQnkyTm9kZSIsIm1heEZsYWciLCJ3b3JsZFJlY3QxIiwiZ2V0Qm91bmRpbmdCb3hUb1dvcmxkIiwid29ybGRSZWN0MiIsImdldERpc3RhbmNlIiwic3RhcnQiLCJlbmQiLCJwb3MiLCJkaXMiLCJwbGF5QXVkaW9CeVVybCIsImF1ZGlvX3VybCIsImNiIiwiQXVkaW9DbGlwIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiYXVkaW9JZCIsImF1ZGlvRW5naW5lIiwicGxheSIsInNldEZpbmlzaENhbGxiYWNrIiwiYXNzZXRNYW5hZ2VyIiwibG9hZFJlbW90ZSIsImVyciIsImF1ZGlvQ2xpcCIsImJ0bkNsaWNrQW5pbWEiLCJidG4iLCJ0aW1lIiwicmF0ZSIsInRtcFNjYWxlIiwib24iLCJOb2RlIiwiRXZlbnRUeXBlIiwiVE9VQ0hfU1RBUlQiLCJ0d2VlbiIsInRvIiwiVE9VQ0hfQ0FOQ0VMIiwiVE9VQ0hfRU5EIiwiZ2V0U3ByaXRlRnJpbWVCeVVybCIsInVybCIsImxvYWRlciIsImxvYWQiLCJpbWciLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwiZ2V0U3ByTm9kZSIsInJlc05hbWUiLCJzZiIsImZpbmQiLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJub2RlIiwiYWRkQ29tcG9uZW50IiwiZ2V0U3ByTm9kZUJ5VXJsIiwic3ByIiwicGxheUF1ZGlvIiwicGxheUVmZmVjdCIsImFzeW5jRGVsYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJlIiwiRmlyZXdvcmtTZXR0aW5ncyIsIm5vZGVMaXN0Iiwic2lkZSIsInJhbmdlIiwibnVtYmVyIiwic2NhbHNlUmFuZ2UiLCJjb3B5IiwiZmlyZXdvcmsiLCJzaG93RmlyZXdvcmtzIiwiZmlyZXdvcmtTZXR0aW5ncyIsIkFycmF5IiwiZmlsbCIsImZvckVhY2giLCJfIiwiaSIsInJhYmJvbk5vZGUiLCJpbnN0YW50aWF0ZSIsImFjdGl2ZSIsImFzeW5jVHdlZW5CeSIsImVhc2luZyIsImJ5IiwicmFiYm9uRmFsbCIsInVuaW9uIiwicmVwZWF0Rm9yZXZlciIsImRlbGF5Iiwib3BhY2l0eSIsImNhbGwiLCJzdG9wQWxsQWN0aW9ucyIsIm9mZnNldFgiLCJhc3luY1R3ZWVuVG8iLCJkdXJhdGlvbiIsIm9iaiIsImVhc2UiLCJ1bmRlZmluZWQiLCJzaG93VHJlYmxlRmlyZXdvcmsiLCJyYWJib25MaXN0IiwibWlkZGxlIiwibGVmdCIsInJpZ2h0Iiwib25Ib21ld29ya0ZpbmlzaCIsIm1pZGRsZUxheWVyIiwibWlkZGxlTGF5ZXJDb21wb25lbnQiLCJyb2xlIiwiY29uc29sZSIsImxvZyIsImxvYWREcmFnb25Cb25lcyIsImRyYWdvbkRpc3BsYXkiLCJ0ZXgiLCJhdGxhcyIsInNrZSIsInR5cGUiLCJlcnJvciIsInRleHR1cmUiLCJhdGxhc0pzb24iLCJkcmFnb25Cb25lc0pzb24iLCJhdGxhc09iaiIsImRyYWdvbkJvbmVzIiwiRHJhZ29uQm9uZXNBdGxhc0Fzc2V0IiwidXVpZCIsImFzc2V0IiwiRHJhZ29uQm9uZXNBc3NldCIsImFybWF0dXJlTmFtZSIsIl9kcmFnb25Cb25lc0pzb25EYXRhIiwiYXJtYXR1cmUiLCJkcmFnb25BdGxhc0Fzc2V0IiwiZHJhZ29uQXNzZXQiLCJhYWJiIiwibG9hZFNwaW5lIiwic2tlbGV0b24iLCJwaWNOYW1lIiwibG9hZEFueSIsInNwIiwiU2tlbGV0b25EYXRhIiwiX3V1aWQiLCJza2VsZXRvbkpzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiYXRsYXNUZXh0IiwidGV4dHVyZXMiLCJ0ZXh0dXJlTmFtZXMiLCJza2VsZXRvbkRhdGEiLCJqc29uT2JqIiwiYW5pbWF0aW9uTmFtZU9iaiIsImFuaW1hdGlvbnMiLCJhbmltYXRpb25OYW1lcyIsImFuaW1hdGlvbiIsImxvb3AiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVNBLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCQyxHQUE5QixFQUFtQztBQUV4QyxNQUFNQyxNQUFNLEdBQUdGLEtBQUssR0FBR0csSUFBSSxDQUFDQyxFQUFiLEdBQWtCLEdBQWpDO0FBQ0EsTUFBTUMsQ0FBQyxHQUFHRixJQUFJLENBQUNHLEdBQUwsQ0FBU0osTUFBVCxJQUFtQkQsR0FBN0I7QUFDQSxNQUFNTSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssR0FBTCxDQUFTTixNQUFULElBQW1CRCxHQUE3QjtBQUVBLFNBQU87QUFBRUksSUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtFLElBQUFBLENBQUMsRUFBREE7QUFBTCxHQUFQO0FBRUQ7O0FBRU0sU0FBU0UsYUFBVCxD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VixPQUFELENBQXJCO0FBRUExQixVQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCeUIsT0FBekI7QUFFSEQsVUFBQUEsUUFBUSxDQUFDWSxZQUFULEdBQXdCckIsS0FBeEI7QUFHRyxjQUFNc0IsT0FBTyxHQUFHM0IsZUFBaEIsQ0FuQmdFLENBbUJoQzs7QUFDaEMsY0FBTTRCLGdCQUFnQixHQUFHRCxPQUFPLENBQUNFLFVBQWpDO0FBQ0EsY0FBSUMsY0FBYyxHQUFHLEVBQXJCOztBQUNBLGVBQUssSUFBSW5JLElBQVQsSUFBaUJpSSxnQkFBakIsRUFBbUM7QUFDakN2QyxZQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxXQUFaLEVBQXlCM0YsSUFBekI7QUFDQW1JLFlBQUFBLGNBQWMsQ0FBQ3BLLElBQWYsQ0FBb0JpQyxJQUFwQjtBQUNEOztBQUNKMEYsVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksc0JBQVosRUFBb0N3QixRQUFRLENBQUNpQixTQUE3QztBQUNHakIsVUFBQUEsUUFBUSxDQUFDZ0IsY0FBVCxHQUEwQkEsY0FBMUI7QUFDSGhCLFVBQUFBLFFBQVEsQ0FBQ2tCLElBQVQsR0FBZ0IsS0FBaEI7QUFFRzNDLFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLHdCQUFaLEVBQXNDcUMsT0FBTyxDQUFDLFVBQUQsQ0FBN0M7QUFFQXJGLFVBQUFBLE9BQU8sQ0FBQ3FGLE9BQU8sQ0FBQyxVQUFELENBQVIsQ0FBUCxDQWhDZ0UsQ0FtQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNELFNBbEREO0FBbURILE9BekREO0FBMERELEtBaEVEO0FBaUVELEdBbkVNLENBQVA7QUFxRUQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFBvc1RvbG9jYWxQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcblx0Y29uc3Qgd29ybGRQb3MgPSB0YXJnZXROb2RlLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKTtcblx0Y29uc3QgbG9jYWxQb3MgPSBiYXNlTm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIod29ybGRQb3MueCwgd29ybGRQb3MueSkpO1xuXHRyZXR1cm4gbG9jYWxQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3b3JsZFBvc1RvTG9jYWxQb3Mod29ybGRQb3MsIGJhc2VOb2RlKSB7XG5cdGNvbnN0IGxvY2FsUG9zID0gYmFzZU5vZGUucGFyZW50LmNvbnZlcnRUb05vZGVTcGFjZUFSKGNjLnYyKHdvcmxkUG9zLngsIHdvcmxkUG9zLnkpKTtcblx0cmV0dXJuIGxvY2FsUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVSYXRlQnkyTm9kZShiYXNlTm9kZSwgdGFyZ2V0Tm9kZSwgbWF4RmxhZyA9IHRydWUpIHtcblx0Y29uc3Qgd29ybGRSZWN0MSA9IHRhcmdldE5vZGUuZ2V0Qm91bmRpbmdCb3hUb1dvcmxkKCk7XG5cdGNvbnN0IHdvcmxkUmVjdDIgPSBiYXNlTm9kZS5nZXRCb3VuZGluZ0JveFRvV29ybGQoKTtcblxuXHRjb25zdCBzeCA9IHdvcmxkUmVjdDEud2lkdGggLyB3b3JsZFJlY3QyLndpZHRoO1xuXHRjb25zdCBzeSA9IHdvcmxkUmVjdDEuaGVpZ2h0IC8gd29ybGRSZWN0Mi5oZWlnaHQ7XG5cdGlmIChtYXhGbGFnKSB7XG5cdFx0cmV0dXJuIE1hdGgubWF4KHN4LCBzeSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIE1hdGgubWluKHN4LCBzeSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlIChzdGFydCwgZW5kKXtcbiAgICB2YXIgcG9zID0gY2MudjIoc3RhcnQueCAtIGVuZC54LCBzdGFydC55IC0gZW5kLnkpO1xuICAgIHZhciBkaXMgPSBNYXRoLnNxcnQocG9zLngqcG9zLnggKyBwb3MueSpwb3MueSk7XG4gICAgcmV0dXJuIGRpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYXlBdWRpb0J5VXJsKGF1ZGlvX3VybCwgY2I9bnVsbCkge1xuXHRpZiAoYXVkaW9fdXJsKSB7XG4gICAgaWYgKChhdWRpb191cmwgaW5zdGFuY2VvZiBjYy5BdWRpb0NsaXApICYmYXVkaW9fdXJsLmNvbnN0cnVjdG9yLm5hbWUgPT0gJ2NjX0F1ZGlvQ2xpcCcpIHtcbiAgICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGF1ZGlvX3VybCwgZmFsc2UsIDAuOCk7XG4gICAgICBpZiAoY2IpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soYXVkaW9JZCwgKCkgPT4ge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZShhdWRpb191cmwsIChlcnIsIGF1ZGlvQ2xpcCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0lkID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb0NsaXAsIGZhbHNlLCAwLjgpO1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTsgICAgfVxuXHRcdFxuXHR9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ0bkNsaWNrQW5pbWEoYnRuLCB0aW1lPTAuMTUsIHJhdGU9MS4wNSkge1xuICBidG4udG1wU2NhbGUgPSBidG4uc2NhbGU7XG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgKCkgPT4ge1xuICAgIGNjLnR3ZWVuKGJ0bilcbiAgICAgIC50byh0aW1lIC8gMiwge3NjYWxlOiBidG4uc2NhbGUgKiByYXRlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG4gIGJ0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsICgpID0+IHtcbiAgICBjYy50d2VlbihidG4pXG4gICAgICAudG8odGltZSAvIDIsIHtzY2FsZTogYnRuLnRtcFNjYWxlfSlcbiAgICAgIC5zdGFydCgpXG4gIH0pXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwcml0ZUZyaW1lQnlVcmwodXJsLCBjYikge1xuICBjYy5sb2FkZXIubG9hZCh7IHVybCB9LCAoZXJyLCBpbWcpID0+IHtcbiAgICBjb25zdCBzcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZShpbWcpXG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHJpdGVGcmFtZSk7XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ByTm9kZShyZXNOYW1lKSB7XG4gIGNvbnN0IHNmID0gY2MuZmluZCgnQ2FudmFzL3Jlcy9pbWcvJyArIHJlc05hbWUpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lO1xuICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNmO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwck5vZGVCeVVybCh1cmwsIGNiKSB7XG4gIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xuICBjb25zdCBzcHIgPSBub2RlLmFkZENvbXBvbmVudChjYy5TcHJpdGUpO1xuICBnZXRTcHJpdGVGcmltZUJ5VXJsKHVybCwgKHNmKSA9PiB7XG4gICAgc3ByLnNwcml0ZUZyYW1lID0gc2Y7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihzcHIpO1xuICAgIH1cbiAgfSlcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QXVkaW8oYXVkaW9DbGlwLCBjYiA9IG51bGwpIHtcbiAgaWYgKGF1ZGlvQ2xpcCkge1xuICAgIGNvbnN0IGF1ZGlvSWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5RWZmZWN0KGF1ZGlvQ2xpcCwgZmFsc2UsIDAuOCk7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhhdWRpb0lkLCAoKSA9PiB7XG4gICAgICAgIGNiKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jRGVsYXkodGltZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSwgdGltZSAqIDEwMDApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaXJld29ya1NldHRpbmdzIHtcbiAgYmFzZU5vZGU7IC8vIOeItuiKgueCuVxuICBub2RlTGlzdDsgLy8g54Gr6Iqx6IqC54K555qEYXJyYXlcbiAgcG9zOyAvLyDlj5HlsITngrlcbiAgc2lkZTsgLy8g5Y+R5bCE5pa55ZCRXG4gIHJhbmdlOyAvLyDmianmlaPojIPlm7RcbiAgbnVtYmVyOyAvLyDlj5HlsITmlbDph49cbiAgc2NhbHNlUmFuZ2U7IC8vIOe8qeaUvuiMg+WbtFxuICBjb25zdHJ1Y3RvcihiYXNlTm9kZSwgbm9kZUxpc3QsXG4gICAgcG9zID0gY2MudjIoMCwgMCksXG4gICAgc2lkZSA9IGNjLnYyKDAsIDEwMCksXG4gICAgcmFuZ2UgPSA1MCxcbiAgICBudW1iZXIgPSAxMDAsXG4gICAgc2NhbHNlUmFuZ2UgPSAwXG4gICkge1xuICAgIHRoaXMuYmFzZU5vZGUgPSBiYXNlTm9kZTtcbiAgICB0aGlzLm5vZGVMaXN0ID0gbm9kZUxpc3Q7XG4gICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgdGhpcy5zaWRlID0gc2lkZTtcbiAgICB0aGlzLnJhbmdlID0gcmFuZ2U7XG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zY2Fsc2VSYW5nZSA9IHNjYWxzZVJhbmdlO1xuICB9XG5cbiAgc3RhdGljIGNvcHkoZmlyZXdvcmspIHtcbiAgICByZXR1cm4gbmV3IEZpcmV3b3JrU2V0dGluZ3MoXG4gICAgICBmaXJld29yay5iYXNlTm9kZSxcbiAgICAgIGZpcmV3b3JrLm5vZGVMaXN0LFxuICAgICAgZmlyZXdvcmsucG9zLFxuICAgICAgZmlyZXdvcmsuc2lkZSxcbiAgICAgIGZpcmV3b3JrLnJhbmdlLFxuICAgICAgZmlyZXdvcmsubnVtYmVyLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3dGaXJld29ya3MoZmlyZXdvcmtTZXR0aW5ncykge1xuICBjb25zdCB7IGJhc2VOb2RlLCBub2RlTGlzdCwgcG9zLCBzaWRlLCByYW5nZSwgbnVtYmVyLCBzY2Fsc2VSYW5nZSB9ID0gZmlyZXdvcmtTZXR0aW5ncztcbiAgbmV3IEFycmF5KG51bWJlcikuZmlsbCgnICcpLmZvckVhY2goYXN5bmMgKF8sIGkpID0+IHtcblxuICAgIGxldCByYWJib25Ob2RlID0gbmV3IGNjLk5vZGUoKTtcbiAgICByYWJib25Ob2RlLnBhcmVudCA9IGJhc2VOb2RlO1xuICAgIHJhYmJvbk5vZGUueCA9IHBvcy54O1xuICAgIHJhYmJvbk5vZGUueSA9IHBvcy55O1xuICAgIHJhYmJvbk5vZGUuYW5nbGUgPSA2MCAqIE1hdGgucmFuZG9tKCkgLSAzMDtcblxuICAgIGxldCBub2RlID0gY2MuaW5zdGFudGlhdGUobm9kZUxpc3RbUmFuZG9tSW50KG5vZGVMaXN0Lmxlbmd0aCldKTtcbiAgICBub2RlLnBhcmVudCA9IHJhYmJvbk5vZGU7XG4gICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgIG5vZGUueCA9IDA7XG4gICAgbm9kZS55ID0gMDtcbiAgICBub2RlLmFuZ2xlID0gMDtcbiAgICBub2RlLnNjYWxlID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc2NhbHNlUmFuZ2UgKyAxO1xuXG4gICAgY29uc3QgcmF0ZSA9IE1hdGgucmFuZG9tKCk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLlBJICogKE1hdGgucmFuZG9tKCkgKiAyIC0gMSk7XG5cbiAgICBhd2FpdCBhc3luY1R3ZWVuQnkocmFiYm9uTm9kZSwgMC4zLCB7XG4gICAgICB4OiBzaWRlLnggKiByYXRlICsgTWF0aC5jb3MoYW5nbGUpICogcmFuZ2UgKiByYXRlLFxuICAgICAgeTogc2lkZS55ICogcmF0ZSArIE1hdGguc2luKGFuZ2xlKSAqIHJhbmdlICogcmF0ZVxuICAgIH0sIHtcbiAgICAgIGVhc2luZzogJ3F1YWRJbidcbiAgICB9KTtcblxuICAgIGNjLnR3ZWVuKHJhYmJvbk5vZGUpXG4gICAgICAuYnkoOCwgeyB5OiAtMjAwMCB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICBjYy50d2VlbihyYWJib25Ob2RlKVxuICAgICAgLnRvKDUsIHsgc2NhbGU6IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHNjYWxzZVJhbmdlICsgMSB9KVxuICAgICAgLnN0YXJ0KCk7XG5cbiAgICByYWJib25GYWxsKHJhYmJvbk5vZGUpO1xuXG4gICAgYXdhaXQgYXN5bmNEZWxheShNYXRoLnJhbmRvbSgpKTtcbiAgICBjYy50d2Vlbihub2RlKVxuICAgICAgLmJ5KDAuMTUsIHsgeDogLTEwLCBhbmdsZTogLTEwIH0pXG4gICAgICAuYnkoMC4zLCB7IHg6IDIwLCBhbmdsZTogMjAgfSlcbiAgICAgIC5ieSgwLjE1LCB7IHg6IC0xMCwgYW5nbGU6IC0xMCB9KVxuICAgICAgLnVuaW9uKClcbiAgICAgIC5yZXBlYXRGb3JldmVyKClcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgY2MudHdlZW4ocmFiYm9uTm9kZSlcbiAgICAgIC5kZWxheSg1KVxuICAgICAgLnRvKDAuMywgeyBvcGFjaXR5OiAwIH0pXG4gICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgIG5vZGUuc3RvcEFsbEFjdGlvbnMoKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuc3RhcnQoKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJhYmJvbkZhbGwobm9kZSkge1xuICBjb25zdCB0aW1lID0gMSArIE1hdGgucmFuZG9tKCk7XG4gIGNvbnN0IG9mZnNldFggPSBSYW5kb21JbnQoLTIwMCwgMjAwKSAqIHRpbWU7XG4gIGF3YWl0IGFzeW5jVHdlZW5CeShub2RlLCB0aW1lLCB7IHg6IG9mZnNldFgsIGFuZ2xlOiBvZmZzZXRYICogNjAgLyAyMDAgfSk7XG4gIHJhYmJvbkZhbGwobm9kZSk7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5Ubyhub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC50byhkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jVHdlZW5CeShub2RlLCBkdXJhdGlvbiwgb2JqLCBlYXNlID0gdW5kZWZpbmVkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLnR3ZWVuKG5vZGUpXG4gICAgICAgIC5ieShkdXJhdGlvbiwgb2JqLCBlYXNlKVxuICAgICAgICAuY2FsbCgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuc3RhcnQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dUcmVibGVGaXJld29yayhiYXNlTm9kZSwgcmFiYm9uTGlzdCkge1xuICBjb25zdCBtaWRkbGUgPSBuZXcgRmlyZXdvcmtTZXR0aW5ncyhiYXNlTm9kZSwgcmFiYm9uTGlzdCk7XG4gIG1pZGRsZS5wb3MgPSBjYy52MigwLCAtNDAwKTtcbiAgbWlkZGxlLnNpZGUgPSBjYy52MigwLCAxMDAwKTtcbiAgbWlkZGxlLnJhbmdlID0gMjAwO1xuICBtaWRkbGUubnVtYmVyID0gMTAwO1xuICBtaWRkbGUuc2NhbHNlUmFuZ2UgPSAwLjQ7XG5cbiAgY29uc3QgbGVmdCA9IEZpcmV3b3JrU2V0dGluZ3MuY29weShtaWRkbGUpO1xuICBsZWZ0LnBvcyA9IGNjLnYyKC02MDAsIC00MDApO1xuICBsZWZ0LnNpZGUgPSBjYy52MigyMDAsIDEwMDApO1xuXG4gIGNvbnN0IHJpZ2h0ID0gRmlyZXdvcmtTZXR0aW5ncy5jb3B5KG1pZGRsZSk7XG4gIHJpZ2h0LnBvcyA9IGNjLnYyKDYwMCwgLTQwMCk7XG4gIHJpZ2h0LnNpZGUgPSBjYy52MigtMjAwLCAxMDAwKTtcblxuICBzaG93RmlyZXdvcmtzKG1pZGRsZSk7XG4gIHNob3dGaXJld29ya3MobGVmdCk7XG4gIHNob3dGaXJld29ya3MocmlnaHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25Ib21ld29ya0ZpbmlzaCgpIHtcbiAgY29uc3QgbWlkZGxlTGF5ZXIgPSBjYy5maW5kKCdtaWRkbGVMYXllcicpO1xuICBpZiAobWlkZGxlTGF5ZXIpIHtcbiAgICBjb25zdCBtaWRkbGVMYXllckNvbXBvbmVudCA9IG1pZGRsZUxheWVyLmdldENvbXBvbmVudCgnbWlkZGxlTGF5ZXInKTtcbiAgICBpZiAobWlkZGxlTGF5ZXJDb21wb25lbnQucm9sZSA9PSAnc3R1ZGVudCcpIHtcbiAgICAgIG1pZGRsZUxheWVyQ29tcG9uZW50Lm9uSG9tZXdvcmtGaW5pc2goKCkgPT4geyB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ29uSG9tZXdvcmtGaW5pc2gnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZERyYWdvbkJvbmVzKGRyYWdvbkRpc3BsYXkse3RleCwgYXRsYXMsIHNrZX0pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogdGV4LCB0eXBlOiAncG5nJyB9LCAoZXJyb3IsIHRleHR1cmUpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2MubG9hZGVyLmxvYWQoeyB1cmw6IGF0bGFzLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNwaW5lKHNrZWxldG9uLCBwaWNOYW1lLCB7dGV4LCBhdGxhcywgc2tlfSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiB0ZXgsIHR5cGU6ICdwbmcnIH0sIChlcnJvciwgdGV4dHVyZSkgPT4ge1xuICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHRleCwgKGVycm9yLCB0ZXh0dXJlKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNjLmxvYWRlci5sb2FkKHsgdXJsOiBhdGxhcywgdHlwZTogJ3R4dCcgfSwgKGVycm9yLCBhdGxhc0pzb24pID0+IHtcbiAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBhdGxhcyB9LCAoZXJyb3IsIGF0bGFzSnNvbikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgICAvLyBjYy5sb2FkZXIubG9hZCh7IHVybDogc2tlLCB0eXBlOiAndHh0JyB9LCAoZXJyb3IsIGRyYWdvbkJvbmVzSnNvbikgPT4ge1xuICAgICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHsgdXJsOiBza2UgfSwgKGVycm9yLCBkcmFnb25Cb25lc0pzb24pID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIHZhciBhc3NldCA9IG5ldyBzcC5Ta2VsZXRvbkRhdGEoKTtcbiAgICAgICAgICAgIGFzc2V0Ll91dWlkID0gc2tlO1xuICAgICAgICAgICAgYXNzZXQuc2tlbGV0b25Kc29uID0gSlNPTi5zdHJpbmdpZnkoIGRyYWdvbkJvbmVzSnNvbiApO1xuICAgICAgICAgICAgYXNzZXQuYXRsYXNUZXh0ID0gYXRsYXNKc29uO1xuICAgICAgICAgICAgYXNzZXQudGV4dHVyZXMgPSBbdGV4dHVyZV07XG4gICAgICAgICAgICBhc3NldC50ZXh0dXJlTmFtZXMgPSBbcGljTmFtZV07XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwaWNOYW1lOiAnLCBwaWNOYW1lKTtcblxuXHRcdFx0ICAgICAgc2tlbGV0b24uc2tlbGV0b25EYXRhID0gYXNzZXQ7XG5cdFxuXG4gICAgICAgICAgICBjb25zdCBqc29uT2JqID0gZHJhZ29uQm9uZXNKc29uIC8vSlNPTi5wYXJzZSggYXNzZXRzWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbk5hbWVPYmogPSBqc29uT2JqLmFuaW1hdGlvbnM7XG4gICAgICAgICAgICBsZXQgYW5pbWF0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4gYW5pbWF0aW9uTmFtZU9iaikge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbmFtZX5+OiAgJywgbmFtZSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICB9XG5cdFx0XHQgICAgICBjb25zb2xlLmxvZyhcInNrZWxldG9uLmFuaW1hdGlvbjogXCIsIHNrZWxldG9uLmFuaW1hdGlvbik7XG4gICAgICAgICAgICBza2VsZXRvbi5hbmltYXRpb25OYW1lcyA9IGFuaW1hdGlvbk5hbWVzO1xuXHRcdFx0ICAgICAgc2tlbGV0b24ubG9vcCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImpzb25PYmpbJ3NrZWxldG9uJ10gOiBcIiwganNvbk9ialsnc2tlbGV0b24nXSlcblxuICAgICAgICAgICAgcmVzb2x2ZShqc29uT2JqWydza2VsZXRvbiddKTtcblxuXG4gICAgICAgICAgICAvLyBjb25zdCBhdGxhc09iaiA9IG5ldyBkcmFnb25Cb25lcy5EcmFnb25Cb25lc0F0bGFzQXNzZXQoKVxuICAgICAgICAgICAgLy8gYXRsYXNPYmoudXVpZCA9IGF0bGFzXG4gICAgICAgICAgICAvLyBhdGxhc09iai5hdGxhc0pzb24gPSBhdGxhc0pzb25cbiAgICAgICAgICAgIC8vIGF0bGFzT2JqLnRleHR1cmUgPSB0ZXh0dXJlXG4gIFxuICAgICAgICAgICAgLy8gY29uc3QgYXNzZXQgPSBuZXcgZHJhZ29uQm9uZXMuRHJhZ29uQm9uZXNBc3NldCgpXG4gICAgICAgICAgICAvLyBhc3NldC51dWlkID0gc2tlXG4gICAgICAgICAgICAvLyBhc3NldC5kcmFnb25Cb25lc0pzb24gPSBkcmFnb25Cb25lc0pzb247XG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFybWF0dXJlTmFtZSA9IGFzc2V0Ll9kcmFnb25Cb25lc0pzb25EYXRhLmFybWF0dXJlWzBdLm5hbWUgfHwgJ2RlZmF1bHQnO1xuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5hcm1hdHVyZU5hbWUgPSBhcm1hdHVyZU5hbWU7XG4gIFxuICAgICAgICAgICAgLy8gZHJhZ29uRGlzcGxheS5kcmFnb25BdGxhc0Fzc2V0ID0gYXRsYXNPYmpcbiAgICAgICAgICAgIC8vIGRyYWdvbkRpc3BsYXkuZHJhZ29uQXNzZXQgPSBhc3NldDtcbiAgICAgICAgICAgIC8vIHJlc29sdmUoYXNzZXQuX2RyYWdvbkJvbmVzSnNvbkRhdGEuYXJtYXR1cmVbMF0uYWFiYik7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIFxufVxuIl19
\ No newline at end of file
......@@ -450,6 +450,7 @@ cc.Class({
(0, _util.playAudioByUrl)(_this.data.end_audio, function () {
console.log('game finish');
(0, _util.onHomeworkFinish)();
}); // return new Promise((resolve,reject) => {
// setTimeout(() => {
// console.log('hint finish');
......@@ -467,6 +468,12 @@ cc.Class({
var k = _this._hintsNodeList[i].after;
after[k] = {
actions: function actions() {
if (t.isSpine) {
var skeleton = t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = false;
skeleton.animation = 'enlarge'; // skeleton.animation = skeleton.animationNames[0];
} else {
var dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('enlarge', 1);
console.log(dragonDisplay._armatureKey, 'enlarge');
......@@ -474,7 +481,8 @@ cc.Class({
// event.name为事件名称
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
}, _this); // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
}, _this);
} // const dragonDisplay = t.getComponent(dragonBones.ArmatureDisplay);
// dragonDisplay.playAnimation('enlarge', 1);
// console.log(dragonDisplay._armatureKey, 'enlarge')
// dragonDisplay.addEventListener(dragonBones.EventObject.COMPLETE, (event) => {
......@@ -483,6 +491,7 @@ cc.Class({
// event.armature.animation.play('normal', 0);
// console.log(event.animationState.name, dragonDisplay._armatureKey, 'end')
// }, this);
}
};
};
......@@ -500,11 +509,19 @@ cc.Class({
for (var _i = 0; _i < _this._allAnimationNodes.length; _i++) {
var _t = _this._allAnimationNodes[_i];
if (_t.isSpine) {
var skeleton = _t.getComponent(sp.Skeleton);
skeleton.pause();
skeleton.loop = true;
skeleton.animation = 'normal'; // skeleton.animation = skeleton.animationNames[0];
} else {
var dragonDisplay = _t.getComponent(dragonBones.ArmatureDisplay);
dragonDisplay.playAnimation('normal', 0);
}
}
}
};
}
......@@ -514,7 +531,10 @@ cc.Class({
this.gameMachineService = (0, _xstate.interpret)(gameMachine).onTransition(function (state) {// console.log(1, state.value, state.context);
});
this.gameMachineService.start();
if (window.gameMachineService) {
window.gameMachineService = gameMachineService;
}
},
// 生命周期 start
start: function start() {
......@@ -605,7 +625,101 @@ cc.Class({
func(this.getDefaultData());
},
getDefaultData: function getDefaultData() {
return _defaultData.defaultData;
return {
"begin_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"begin_sep_time": 1,
"guide_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"playing_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"right_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio1": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"wrong_audio2": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"end_audio": "http://staging-teach.cdn.ireadabc.com/3d307a02663e1cd667b7c951340ec98b.mp3",
"bgItem": {
"url": "http://staging-teach.cdn.ireadabc.com/84ec6edc20bceaaa9dbe824092b6860d.png",
"rect": {
"x": 549.55,
"y": 0,
"width": 449.9,
"height": 582
}
},
"hotZoneItemArr": [{
"id": "1659333645573",
"index": 0,
"audio_url": "http://staging-teach.cdn.ireadabc.com/5a1a2670845bfe76662e86d9a3a69f81.mp3",
"itemType": "rect",
"fontScale": 1.21015625,
"imgScale": 1,
"imgSizeW": 0,
"imgSizeH": 0,
"mapScale": 1.21015625,
"dragDot": {
"x": 774.5,
"y": 289.55016883743366
},
"gIdx": "1",
"labelText": "1",
"posX": 887.5,
"posY": 165.5,
"skeJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/d1f859d3fba84bd03565e543c986fb28.json",
"name": "6_4_ske.json"
},
"texJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/70f96e1cc7f013e27ed1952c503fb750.json",
"name": "6_4_tex.json"
},
"texPngData": {
"url": "http://staging-teach.cdn.ireadabc.com/b06f9b90018a6eb0175a01e355b9ced6.png",
"name": "6_4_tex.png"
},
"animType": "dragonBone",
"rect": {
"x": 36.08,
"y": 49.19,
"width": 153.95,
"height": 150.19
}
}, {
"id": "1659334098930",
"index": 1,
"audio_url": "http://staging-teach.cdn.ireadabc.com/16eb06a6beb9e4fa77c9b5d2d643ab29.mp3",
"itemType": "rect",
"fontScale": 1.21015625,
"imgScale": 1,
"imgSizeW": 0,
"imgSizeH": 0,
"mapScale": 1.21015625,
"dragDot": {
"x": 774.5,
"y": 289.55016883743366
},
"gIdx": "0",
"labelText": "1",
"posX": 1212.5,
"posY": 643.5,
"skeJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/bdbadb06e0c1157e727cecd28f28d10e.json",
"name": "spineboy-pro.json"
},
"texJsonData": {
"url": "http://staging-teach.cdn.ireadabc.com/e0945b8265ea3b8053afb814c6b849d3.atlas",
"name": "spineboy-pro.atlas"
},
"texPngData": {
"url": "http://staging-teach.cdn.ireadabc.com/517553f50224915148f9efc5b7556798.png",
"name": "spineboy-pro.png"
},
"animType": "spine",
"rect": {
"x": 282.03,
"y": 408.15,
"width": 150.19,
"height": 150.19
}
}]
}; // return defaultData;
},
preloadItem: function preloadItem() {
this.addPreloadImage();
......@@ -855,10 +969,13 @@ cc.Class({
(function () {
var n = new cc.Node();
n.scale = 0.25;
var db = n.addComponent(dragonBones.ArmatureDisplay);
n.parent = ground;
n.active = false;
(0, _util.loadDragonBones)(db, {
if (_block.animType == 'spine') {
var skeleton = n.addComponent(sp.Skeleton);
n.isSpine = true;
(0, _util.loadSpine)(skeleton, _block.texPngData.name, {
tex: _block.texPngData.url,
atlas: _block.texJsonData.url,
ske: _block.skeJsonData.url
......@@ -867,6 +984,37 @@ cc.Class({
height = _ref.height;
n.width = width;
n.height = height;
n.active = true; // db.playAnimation('null', 0);
// skeleton.loop = true;
// skeleton.animation = skeleton.animationNames[0]
_this4._allAnimationNodes.push(n);
finishDbCount++;
console.log(finishDbCount, dbCount);
if (finishDbCount == dbCount) {
_this4.loadEnd();
}
})["catch"](function () {
finishDbCount++;
console.log(finishDbCount, dbCount);
if (finishDbCount == dbCount) {
_this4.loadEnd();
}
});
} else {
var db = n.addComponent(dragonBones.ArmatureDisplay);
(0, _util.loadDragonBones)(db, {
tex: _block.texPngData.url,
atlas: _block.texJsonData.url,
ske: _block.skeJsonData.url
}).then(function (_ref2) {
var width = _ref2.width,
height = _ref2.height;
n.width = width;
n.height = height;
n.active = true;
db.playAnimation('null', 0);
......@@ -886,6 +1034,7 @@ cc.Class({
_this4.loadEnd();
}
});
}
if (_block.gIdx == '0') {
var rectInfo = {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -28,6 +28,7 @@ exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.onHomeworkFinish = onHomeworkFinish;
exports.loadDragonBones = loadDragonBones;
exports.loadSpine = loadSpine;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
......@@ -354,7 +355,7 @@ function _showFireworks() {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
......@@ -422,7 +423,7 @@ function _showFireworks() {
}));
return function (_x12, _x13) {
return _ref2.apply(this, arguments);
return _ref3.apply(this, arguments);
};
}());
......@@ -618,4 +619,74 @@ function loadDragonBones(dragonDisplay, _ref) {
});
}
function loadSpine(skeleton, picName, _ref2) {
var tex = _ref2.tex,
atlas = _ref2.atlas,
ske = _ref2.ske;
return new Promise(function (resolve, reject) {
// cc.loader.load({ url: tex, type: 'png' }, (error, texture) => {
cc.assetManager.loadRemote(tex, function (error, texture) {
if (error) {
reject();
return;
} // cc.loader.load({ url: atlas, type: 'txt' }, (error, atlasJson) => {
cc.assetManager.loadAny({
url: atlas
}, function (error, atlasJson) {
if (error) {
reject();
return;
} // cc.loader.load({ url: ske, type: 'txt' }, (error, dragonBonesJson) => {
cc.assetManager.loadAny({
url: ske
}, function (error, dragonBonesJson) {
if (error) {
reject();
return;
}
var asset = new sp.SkeletonData();
asset._uuid = ske;
asset.skeletonJson = JSON.stringify(dragonBonesJson);
asset.atlasText = atlasJson;
asset.textures = [texture];
asset.textureNames = [picName];
console.log('picName: ', picName);
skeleton.skeletonData = asset;
var jsonObj = dragonBonesJson; //JSON.parse( assets[1]);
var animationNameObj = jsonObj.animations;
var animationNames = [];
for (var name in animationNameObj) {
console.log('name~~: ', name);
animationNames.push(name);
}
console.log("skeleton.animation: ", skeleton.animation);
skeleton.animationNames = animationNames;
skeleton.loop = false;
console.log("jsonObj['skeleton'] : ", jsonObj['skeleton']);
resolve(jsonObj['skeleton']); // const atlasObj = new dragonBones.DragonBonesAtlasAsset()
// atlasObj.uuid = atlas
// atlasObj.atlasJson = atlasJson
// atlasObj.texture = texture
// const asset = new dragonBones.DragonBonesAsset()
// asset.uuid = ske
// asset.dragonBonesJson = dragonBonesJson;
// const armatureName = asset._dragonBonesJsonData.armature[0].name || 'default';
// dragonDisplay.armatureName = armatureName;
// dragonDisplay.dragonAtlasAsset = atlasObj
// dragonDisplay.dragonAsset = asset;
// resolve(asset._dragonBonesJsonData.armature[0].aabb);
});
});
});
});
}
cc._RF.pop();
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment