mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-04-20 11:43:07 +08:00
135 lines
4.2 KiB
JavaScript
135 lines
4.2 KiB
JavaScript
export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
|
|
constructor() {
|
|
super();
|
|
let pos1 = [0, 0];
|
|
this.panelTrajectory.on(Laya.Event.MOUSE_DOWN, this, e => pos1 = [e.stageX, e.stageY]);
|
|
this.panelTrajectory.on(Laya.Event.MOUSE_UP, this, e => {
|
|
const distanceX = e.stageX - pos1[0];
|
|
const distanceY = e.stageY - pos1[1];
|
|
if(Math.sqrt(Math.abs(distanceX) + Math.abs(distanceY)) > 10) {
|
|
return;
|
|
}
|
|
this.onNext();
|
|
});
|
|
this.btnSummary.on(Laya.Event.CLICK, this, this.onSummary);
|
|
|
|
this.panelTrajectory.vScrollBar.elasticDistance = 150;
|
|
this.scbSpeed.on(Laya.Event.CHANGE, this, () => this.speed = this.scbSpeed.value);
|
|
this.scbSpeed.on(Laya.Event.MOUSE_UP, this, () => this.onNext());
|
|
}
|
|
|
|
#speed;
|
|
#auto;
|
|
|
|
static load() {
|
|
return [
|
|
"images/atlas/images/progress.atlas",
|
|
'images/atlas/images/slider.atlas',
|
|
];
|
|
}
|
|
|
|
static #createComponent = Laya.plugin.extractComponents(Trajectory.uiView, ['boxTrajectoryItem']);
|
|
#createTrajectoryItem() {
|
|
const item = Trajectory.#createComponent('boxTrajectoryItem');
|
|
item.labContent = item.getChildByName('labContent');
|
|
item.labAge = item.getChildByName('hboxAge').getChildByName('labAge');
|
|
const config = $ui.common.trajectoryItem;
|
|
$_.deepMapSet(item, config.box);
|
|
item.getChildByName('hboxAge')._childs.forEach(child => child.color = config.ageColor);
|
|
item.labContent.color = config.contentColor;
|
|
return item;
|
|
}
|
|
#isEnd;
|
|
#trajectoryItems;
|
|
#talents;
|
|
|
|
init({propertyAllocate, talents}) {
|
|
this.boxSpeed.visible = true;
|
|
this.btnSummary.visible = false;
|
|
this.#trajectoryItems = [];
|
|
this.#isEnd = false;
|
|
this.#talents = talents;
|
|
core.restart(propertyAllocate);
|
|
this.updateProperty();
|
|
this.onNext();
|
|
}
|
|
|
|
close() {
|
|
this.scbSpeed.value = 0;
|
|
this.speed = 0;
|
|
this.#trajectoryItems.forEach(item => {
|
|
item.removeSelf();
|
|
item.destroy();
|
|
});
|
|
this.#trajectoryItems = null;
|
|
}
|
|
|
|
updateProperty() {
|
|
const types = core.PropertyTypes;
|
|
const propertys = core.propertys;
|
|
|
|
this.labCharm.text = propertys[types.CHR];
|
|
this.labIntelligence.text = propertys[types.INT];
|
|
this.labStrength.text = propertys[types.STR];
|
|
this.labMoney.text = propertys[types.MNY];
|
|
this.labSpirit.text = propertys[types.SPR];
|
|
}
|
|
|
|
onNext() {
|
|
if(this.#isEnd) return;
|
|
|
|
const { age, content, isEnd } = core.next();
|
|
this.#isEnd = isEnd;
|
|
|
|
if(isEnd) {
|
|
this.boxSpeed.visible = false;
|
|
this.btnSummary.visible = true;
|
|
}
|
|
|
|
this.renderTrajectory(age, content);
|
|
|
|
Laya.timer.frameOnce(1, this, () => {
|
|
this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight);
|
|
});
|
|
this.updateProperty();
|
|
}
|
|
|
|
renderTrajectory(age, content) {
|
|
const item = this.#createTrajectoryItem();
|
|
item.labAge.text = ''+age;
|
|
item.labContent.text = content.map(
|
|
({type, description, grade, name, postEvent}) => {
|
|
switch(type) {
|
|
case 'TLT':
|
|
return `天赋【${name}】发动:${description}`;
|
|
case 'EVT':
|
|
return description + (postEvent?`\n${postEvent}`:'');
|
|
}
|
|
}
|
|
).join('\n');
|
|
this.vboxTrajectory.addChild(item);
|
|
this.#trajectoryItems.push(item);
|
|
this.#trajectoryItems.forEach((item, index) => item.y = index);
|
|
}
|
|
|
|
onSummary() {
|
|
const talents = this.#talents;
|
|
$ui.switchView(UI.pages.SUMMARY, {talents});
|
|
}
|
|
|
|
get speed() {
|
|
return this.#speed;
|
|
}
|
|
|
|
set speed(speed) {
|
|
this.#speed = speed;
|
|
this.prgSpeed.value = speed / this.scbSpeed.max;
|
|
clearInterval(this.#auto);
|
|
this.#auto = null;
|
|
if(!speed) return;
|
|
this.#auto = setInterval(
|
|
() => this.onNext(),
|
|
3000 * (1 - this.prgSpeed.value) + 300
|
|
);
|
|
}
|
|
} |