daily update

This commit is contained in:
Vick Scarlet
2021-11-27 21:48:47 +08:00
parent 52d6a0ca8f
commit 1d07bdfc46
26 changed files with 1449 additions and 4068 deletions

View File

@@ -69,7 +69,9 @@ class App{
this.#language = App.languages['zh-cn'];
break;
}
Laya.Text.langPacks = (await import(`./i18n/${this.#language}.js`)).default;
globalThis.$lang =
Laya.Text.langPacks =
(await import(`./i18n/${this.#language}.js`)).default;
}
resigterEvent() {
@@ -79,7 +81,8 @@ class App{
}
async start({
language = App.languages['zh-cn']
language = App.languages['zh-cn'],
theme = 'default',
}) {
this.resigterEvent();
this.#initLaya();

View File

@@ -67,4 +67,36 @@ function mapSet(target, source) {
target[key] = source[key];
}
export { clone, max, min, sum, average, weightRandom, listRandom, getListValuesMap, mapConvert, getConvertedMap, mapSet };
function deepMapSet(target, source) {
for(const key in source) {
if(typeof source[key] === 'object')
deepMapSet(target[key], source[key]);
else
target[key] = source[key];
}
return target;
}
function format(str, ...args) {
const replace = set => (match, key) => {
const value = set[key];
switch(typeof value) {
case 'object': return JSON.stringify(value);
case 'boolean':
case 'number':
case 'string': return value;
default: return value?.toString?.() || match;
}
};
switch(args.length) {
case 0: return str;
case 1:
if (typeof(args[0]) != "object") break;
return str.replace(/{(.+?)}/g, replace(args[0]));
}
return str.replace(/{(\d+)}/g, replace(args));
}
export { clone, max, min, sum, average, weightRandom, listRandom, getListValuesMap, mapConvert, getConvertedMap, mapSet, deepMapSet, format };

View File

@@ -46,9 +46,11 @@ export default ({
UI_Manual: 'Manual',
UI_Auto: 'Auto',
UI_Goto_Summary: 'Goto Summary',
UI_Title_Summary: 'Life Summary',
UI_Talent_Extend: 'Talent, You can choose one to extend',
UI_Remake_Again: 'Remake Again',
UI_Rank: 'Rank',
UI_Final_Age: 'Age',
UI_Total_Judge: 'Judge',
@@ -58,35 +60,37 @@ export default ({
UI_Event_Collection_Rate: 'Event Collection',
UI_Talent_Collection_Rate: 'Talent Collection',
UI_Judge_Level_0: '地狱',
UI_Judge_Level_1: '折磨',
UI_Judge_Level_2: '不佳',
UI_Judge_Level_3: '普通',
UI_Judge_Level_4: '优秀',
UI_Judge_Level_5: '罕见',
UI_Judge_Level_6: '逆天',
UI_Judge_Level_7: '传说',
UI_Achievement_Achieve: 'Achievement',
UI_Spirit_Judge_Level_0: '地狱',
UI_Spirit_Judge_Level_1: '折磨',
UI_Spirit_Judge_Level_2: '不幸',
UI_Spirit_Judge_Level_3: '普通',
UI_Spirit_Judge_Level_4: '幸福',
UI_Spirit_Judge_Level_5: '极乐',
UI_Spirit_Judge_Level_6: '天命',
UI_Judge_Level_0: 'Hell', // 地狱
UI_Judge_Level_1: 'Worse', // 折磨
UI_Judge_Level_2: 'Bad', // 不佳
UI_Judge_Level_3: 'Normal', // 普通
UI_Judge_Level_4: 'Good', // 优秀
UI_Judge_Level_5: 'Great', // 罕见
UI_Judge_Level_6: 'Excellent', // 逆天
UI_Judge_Level_7: 'Perfect', // 传说
UI_AGE_Judge_Level_0: '胎死腹中',
UI_AGE_Judge_Level_1: '早夭',
UI_AGE_Judge_Level_2: '少年',
UI_AGE_Judge_Level_3: '盛年',
UI_AGE_Judge_Level_4: '中年',
UI_AGE_Judge_Level_5: '花甲',
UI_AGE_Judge_Level_6: '古稀',
UI_AGE_Judge_Level_7: '杖朝',
UI_AGE_Judge_Level_8: '南山',
UI_AGE_Judge_Level_9: '不老',
UI_AGE_Judge_Level_10: '修仙',
UI_AGE_Judge_Level_11: '仙寿',
UI_Spirit_Judge_Level_0: 'Hell', // 地狱
UI_Spirit_Judge_Level_1: 'Tortured', // 折磨
UI_Spirit_Judge_Level_2: 'Unlucky', // 不幸
UI_Spirit_Judge_Level_3: 'Normal', // 普通
UI_Spirit_Judge_Level_4: 'Happy', // 幸福
UI_Spirit_Judge_Level_5: 'Blissful ', // 极乐
UI_Spirit_Judge_Level_6: 'Paradise', // 天命
UI_AGE_Judge_Level_0: 'Stillborn', // 胎死腹中
UI_AGE_Judge_Level_1: 'Early', // 早夭
UI_AGE_Judge_Level_2: 'Young', // 少年
UI_AGE_Judge_Level_3: 'Heyday', // 盛年
UI_AGE_Judge_Level_4: 'Middle', // 中年
UI_AGE_Judge_Level_5: 'Sexagenarian', // 花甲
UI_AGE_Judge_Level_6: 'Septuagenarian', // 古稀
UI_AGE_Judge_Level_7: 'Octogenarian', // 杖朝
UI_AGE_Judge_Level_8: 'Nonagenarian', // 南山
UI_AGE_Judge_Level_9: '不老', // 不老
UI_AGE_Judge_Level_10: '修仙', // 修仙
UI_AGE_Judge_Level_11: '仙寿', // 仙寿
UI_Intelligence_Judge_Level_7: '识海',
UI_Intelligence_Judge_Level_8: '元神',
@@ -97,4 +101,8 @@ export default ({
UI_Strength_Judge_Level_9: '金丹',
UI_Strength_Judge_Level_10: '元婴',
UI_Strength_Judge_Level_11: '仙体',
F_RemakeTimes: 'Remake {0} Times',
F_AchievementCount: 'Achievement {0}',
F_TalentSelection: '{name} ({description})',
});

View File

@@ -45,6 +45,7 @@ export default ({
UI_Manual: '手动',
UI_Auto: '自动',
UI_Goto_Summary: '人生总结',
UI_Title_Summary: '人生总结',
UI_Talent_Extend: '天赋:你可以选择一个,下辈子还能抽到',
UI_Remake_Again: '再次重开',
@@ -57,6 +58,9 @@ export default ({
UI_Event_Collection_Rate: '事件收集率',
UI_Talent_Collection_Rate: '天赋收集率',
UI_Statistics: '统计',
UI_Rank: '排行榜',
UI_Achievement_Achieve: '获得成就',
UI_Judge_Level_0: '地狱',
UI_Judge_Level_1: '折磨',
@@ -111,4 +115,8 @@ export default ({
UI_Achievement_Count_Judge_Level_3: '抽到橙色概率四倍',
UI_Achievement_Count_Judge_Level_4: '抽到橙色概率五倍',
UI_Achievement_Count_Judge_Level_5: '抽到橙色概率六倍',
F_RemakeTimes: '已重开{0}次',
F_AchievementCount: '成就达成{0}个',
F_TalentSelection: '{name}{description}',
});

File diff suppressed because one or more lines are too long

View File

@@ -465,4 +465,62 @@ class ColorfulBox extends Laya.Box {
label.text = value;
}
}
class BlankBox extends Laya.Box {
constructor() {
super();
this.mask = new Laya.Sprite();
this.#blank = new Laya.Sprite();
this.addChild(this.#blank);
}
#blank;
#timeLine;
#pause = true;
#draw() {
this.mask.graphics.clear();
this.#blank.graphics.clear();
this.mask.graphics.drawRect(0, 0, this.width, this.height, '#000000');
this.#blank.graphics.drawRect(0, 0, this.width, this.height, '#000000');
if(this.#timeLine) this.#timeLine.destroy();
this.#timeLine = new Laya.TimeLine()
.to(this.#blank, { x: this.width }, 2000)
.to(this.#blank, { x: -this.width }, 0);
this.#timeLine.play(0, true);
if(this.#pause) this.#timeLine.pause();
}
get pause() {
return this.#pause;
}
set pause(value) {
if(this.#pause == value) return;
this.#pause = value;
this.#blank.visible = !value;
if(value) this.#timeLine.pause();
else this.#timeLine.resume();
}
destroy(destroyChild) {
this.#timeLine.destroy(true);
super.destroy(destroyChild);
}
get width() {
return super.width;
}
set width(value) {
super.width = value;
this.#blank.x = -this.width;
this.#draw();
}
get height() {
return super.height;
}
set height(value) {
super.height = value;
this.#draw();
}
}

View File

@@ -55,10 +55,6 @@ export default class CyberTrajectory extends CyberTrajectoryUI {
#speed;
#auto;
static load() {
return ['images/slider/vslider_1@3x$bar.png'];
}
static #createComponent = plugin.extractComponents(CyberTrajectory.uiView, ['boxTrajectoryItem']);
#createTrajectoryItem() {
const item = CyberTrajectory.#createComponent('boxTrajectoryItem');

View File

@@ -2,100 +2,51 @@ export default class Achievement extends AchievementUI {
constructor() {
super();
this.btnBack.on(Laya.Event.CLICK, this, () => $ui.switchView(UI.pages.MAIN));
const min = Math.min(this.btnAchievement.fontSize, this.btnStatistics.fontSize);
const max = Math.max(this.btnAchievement.fontSize, this.btnStatistics.fontSize);
this.#state = {min, max};
this.btnStatistics.on(Laya.Event.CLICK, this, ()=>this.switch('statistics'));
this.btnAchievement.on(Laya.Event.CLICK, this, ()=>this.switch('achievement'));
this.listAchievements.renderHandler = new Laya.Handler(this, this.onRenderAchievement);
this.listAchievements.scrollBar.elasticDistance = 150;
this.on(Laya.Event.RESIZE, this, () => {
this.boxPage.width = 2 * this.width;
this.boxA.width = this.boxB.width = this.width;
if(this.boxPage.x < 0) {
this.boxPage.x = - this.width;
}
const renderWidth = this.listAchievements?._itemRender?.props?.width;
if(renderWidth) {
const col = Math.max(Math.floor((this.width - 65) / renderWidth), 1);
this.listAchievements.width = col * renderWidth + (col - 1) * (this.listAchievements.spaceY || 0) + 30;
}
});
}
#state;
#tweens;
init() {
this.switch('statistics', 0);
const {statistics, achievements, PropertyTypes: pt} = core;
this.listAchievements.array = achievements;
this.labRemakeTimes.text = statistics[pt.TMS].value;
this.labRemakeTimes.text = $_.format($lang.F_RemakeTimes, statistics[pt.TMS].value);
this.labRemakeTimesJudge.text = statistics[pt.TMS].judge;
this.labAchievementCountJudge.color = $ui.common.grade[statistics[pt.TMS].grade];
$_.deepMapSet(this.boxRemakeTimes, $ui.common.achievement[statistics[pt.TMS].grade]);
this.labAchievementCount.text = statistics[pt.CACHV].value;
this.labAchievementCount.text = $_.format($lang.F_AchievementCount, statistics[pt.CACHV].value);
this.labAchievementCountJudge.text = statistics[pt.CACHV].judge;
this.labAchievementCountJudge.color = $ui.common.grade[statistics[pt.CACHV].grade];
$_.deepMapSet(this.boxAchievementCount, $ui.common.achievement[statistics[pt.CACHV].grade]);
this.labEventRate.text = parseInt(statistics[pt.REVT].value*100)+'%';
this.prgEventRate.value = statistics[pt.REVT].value;
this.prgEventRate.scaleX = statistics[pt.REVT].value;
$_.deepMapSet(this.boxEventRate, $ui.common.achievement[statistics[pt.REVT].grade]);
this.labTalentRate.text = parseInt(statistics[pt.RTLT].value*100)+'%';
this.prgTalentRate.value = statistics[pt.RTLT].value;
this.prgTalentRate.scaleX = statistics[pt.RTLT].value;
$_.deepMapSet(this.boxTalentRate, $ui.common.achievement[statistics[pt.RTLT].grade]);
}
switch(page, time=300) {
if(this.#tweens) {
this.#tweens.forEach(tween => Laya.Tween.clear(tween));
}
this.#tweens = [];
switch (page) {
case 'statistics':
time = - this.boxPage.x / this.width * time;
this.#tweens.push(
Laya.Tween.to(this.boxPage, {x: 0}, time, Laya.Ease.backOut, Laya.Handler.create(this, () => this.#tweens = null)),
Laya.Tween.to(this.btnStatistics, {fontSize: this.#state.max, anchorX: 0.5, anchorY: 1}, time, Laya.Ease.backOut),
Laya.Tween.to(this.btnAchievement, {fontSize: this.#state.min, anchorX: 0.5, anchorY: 1}, time, Laya.Ease.backOut),
);
break;
case 'achievement':
time = (this.width + this.boxPage.x) / this.width * time;
this.#tweens.push(
Laya.Tween.to(this.boxPage, {x: - this.width}, time, Laya.Ease.backOut, Laya.Handler.create(this, () => this.#tweens = null)),
Laya.Tween.to(this.btnStatistics, {fontSize: this.#state.min, anchorX: 0.5, anchorY: 1}, time, Laya.Ease.backOut),
Laya.Tween.to(this.btnAchievement, {fontSize: this.#state.max, anchorX: 0.5, anchorY: 1}, time, Laya.Ease.backOut),
);
break;
}
}
onRenderAchievement(box, index) {
onRenderAchievement(box) {
const dataSource = box.dataSource;
const name = box.getChildByName('name');
const description = box.getChildByName('description');
const completed = box.getChildByName('completed');
const uncomplete = box.getChildByName('uncomplete');
const boxMask = box.getChildByName('boxMask');
$_.deepMapSet(box, $ui.common.achievement[dataSource.grade]);
name.color = description.color = $ui.common.defaultFontColor;
if(dataSource.isAchieved) {
name.text = dataSource.name;
description.text = dataSource.description;
completed.visible = true;
uncomplete.visible = false;
boxMask.visible = false;
} else {
name.text = dataSource.hide? '???': dataSource.name;
description.text = dataSource.hide? '???': dataSource.description;
completed.visible = false;
uncomplete.visible = true;
boxMask.visible = true;
}
box.colorFilter = $ui.gradeFilter(dataSource.grade);
}
}

View File

@@ -97,42 +97,6 @@ export default class Property extends PropertyUI {
this.btnStrengthReduce.disabled = this.btnStrengthReduce.gray = false;
this.btnMoneyIncrease.disabled = this.btnMoneyIncrease.gray = false;
this.btnMoneyReduce.disabled = this.btnMoneyReduce.gray = false;
if (this.total >= this.#propertyPoints) {
this.btnCharmIncrease.disabled = this.btnCharmIncrease.gray = true;
this.btnIntelligenceIncrease.disabled = this.btnIntelligenceIncrease.gray = true;
this.btnStrengthIncrease.disabled = this.btnStrengthIncrease.gray = true;
this.btnMoneyIncrease.disabled = this.btnMoneyIncrease.gray = true;
} else if (this.total <= 0) {
this.btnCharmReduce.disabled = this.btnCharmReduce.gray = true;
this.btnIntelligenceReduce.disabled = this.btnIntelligenceReduce.gray = true;
this.btnStrengthReduce.disabled = this.btnStrengthReduce.gray = true;
this.btnMoneyReduce.disabled = this.btnMoneyReduce.gray = true;
}
if (charm <= this.#propertyAllocateLimit[0]) {
this.btnCharmReduce.disabled = this.btnCharmReduce.gray = true;
} else if (charm >= this.#propertyAllocateLimit[1]) {
this.btnCharmIncrease.disabled = this.btnCharmIncrease.gray = true;
}
if (intelligence <= this.#propertyAllocateLimit[0]) {
this.btnIntelligenceReduce.disabled = this.btnIntelligenceReduce.gray = true;
} else if (intelligence >= this.#propertyAllocateLimit[1]) {
this.btnIntelligenceIncrease.disabled = this.btnIntelligenceIncrease.gray = true;
}
if (strength <= this.#propertyAllocateLimit[0]) {
this.btnStrengthReduce.disabled = this.btnStrengthReduce.gray = true;
} else if (strength >= this.#propertyAllocateLimit[1]) {
this.btnStrengthIncrease.disabled = this.btnStrengthIncrease.gray = true;
}
if (money <= this.#propertyAllocateLimit[0]) {
this.btnMoneyReduce.disabled = this.btnMoneyReduce.gray = true;
} else if (money >= this.#propertyAllocateLimit[1]) {
this.btnMoneyIncrease.disabled = this.btnMoneyIncrease.gray = true;
}
}
check(left, right, value) {
@@ -209,35 +173,9 @@ export default class Property extends PropertyUI {
renderTalent(box) {
const dataSource = box.dataSource;
const labTitle = box.getChildByName("labTitle");
const grade1 = box.getChildByName("grade1");
const grade2 = box.getChildByName("grade2");
const grade3 = box.getChildByName("grade3");
const labDescription = box.getChildByName("labDescription");
box.label = $_.format($lang.F_TalentSelection, dataSource);
const style = $ui.common.card[dataSource.grade].normal;
labTitle.text = dataSource.name;
labDescription.text = dataSource.description;
switch (dataSource.grade) {
case 1:
grade1.visible = true;
grade2.visible = false;
grade3.visible = false;
break;
case 2:
grade1.visible = false;
grade2.visible = true;
grade3.visible = false;
break;
case 3:
grade1.visible = false;
grade2.visible = false;
grade3.visible = true;
break;
default:
grade1.visible = false;
grade2.visible = false;
grade3.visible = false;
break;
}
$_.deepMapSet(box, style);
}
}

View File

@@ -1,6 +1,7 @@
export default class Summary extends SummaryUI {
constructor() {
super();
this.listSummary.renderHandler = Laya.Handler.create(this, this.renderSummary, null, false);
this.listSelectedTalents.renderHandler = Laya.Handler.create(this, this.renderTalent, null, false);
this.btnAgain.on(Laya.Event.CLICK, this, this.onAgain);
}
@@ -15,63 +16,22 @@ export default class Summary extends SummaryUI {
init({talents}) {
const {summary, lastExtendTalent} = core;
const gradeFilters = [
$ui.common.grade0,
$ui.common.grade1,
$ui.common.grade2,
$ui.common.grade3,
];
const gradeColors = [
$ui.common.filter0,
$ui.common.filter1,
$ui.common.filter2,
$ui.common.filter3,
];
const age = summary[core.PropertyTypes.HAGE];
this.labAge.text = ''+age.value;
this.labAgeJudge.text = age.judge;
this.labAgeJudge.color = gradeColors[age.grade];
const sum = summary[core.PropertyTypes.SUM];
this.labTotal.text = ''+sum.value;
this.labTotalJudge.text = sum.judge;
this.labTotalJudge.color = gradeColors[sum.grade];
const chr = summary[core.PropertyTypes.HCHR];
this.labCharm.text = ''+chr.value;
this.prgCharm.value = chr.progress;
this.labCharmJudge.text = chr.judge;
this.labCharmJudge.color = gradeColors[chr.grade];
this.boxCharmGrade.colorFilter = gradeFilters[chr.grade];
const int = summary[core.PropertyTypes.HINT];
this.labIntelligence.text = ''+int.value;
this.prgIntelligence.value = int.progress;
this.labIntelligenceJudge.text = int.judge;
this.labIntelligenceJudge.color = gradeColors[int.grade];
this.boxIntelligenceGrade.colorFilter = gradeFilters[int.grade];
const str = summary[core.PropertyTypes.HSTR];
this.labStrength.text = ''+str.value;
this.prgStrength.value = str.progress;
this.labStrengthJudge.text = str.judge;
this.labStrengthJudge.color = gradeColors[str.grade];
this.boxStrengthGrade.colorFilter = gradeFilters[str.grade];
const mny = summary[core.PropertyTypes.HMNY];
this.labMoney.text = ''+mny.value;
this.prgMoney.value = mny.progress;
this.labMoneyJudge.text = mny.judge;
this.labMoneyJudge.color = gradeColors[mny.grade];
this.boxMoneyGrade.colorFilter = gradeFilters[mny.grade];
const spr = summary[core.PropertyTypes.HSPR];
this.labSpirit.text = ''+spr.value;
this.prgSpirit.value = spr.progress;
this.labSpiritJudge.text = spr.judge;
this.labSpiritJudge.color = gradeColors[spr.grade];
this.boxSpiritGrade.colorFilter = gradeFilters[spr.grade];
this.listSummary.array = [
[core.PropertyTypes.HCHR, $lang.UI_Property_Charm],
[core.PropertyTypes.HINT, $lang.UI_Property_Intelligence],
[core.PropertyTypes.HSTR, $lang.UI_Property_Strength],
[core.PropertyTypes.HMNY, $lang.UI_Property_Money],
[core.PropertyTypes.HSPR, $lang.UI_Property_Spirit],
[core.PropertyTypes.HAGE, $lang.UI_Final_Age],
[core.PropertyTypes.SUM, $lang.UI_Total_Judge],
].map(([type, key]) => {
const data = summary[type];
return {
label: `${key}${$lang.UI_Colon} ${data.value} ${$lang[data.judge]}`,
grade: data.grade,
}
});
talents.sort(({id:a, grade:ag}, {id:b, grade:bg},)=>{
if(a == lastExtendTalent) return -1;
@@ -81,45 +41,17 @@ export default class Summary extends SummaryUI {
this.#selectedTalent = talents[0].id;
this.listSelectedTalents.array = talents;
}
renderSummary(box) {
const {label, grade} = box.dataSource;
box.label = label;
$_.deepMapSet(box, $ui.common.summary[grade]);
}
renderTalent(box) {
const dataSource = box.dataSource;
const labTitle = box.getChildByName("labTitle");
const grade1 = box.getChildByName("grade1");
const grade2 = box.getChildByName("grade2");
const grade3 = box.getChildByName("grade3");
const labDescription = box.getChildByName("labDescription");
const selected = box.getChildByName("selected");
const unselected = box.getChildByName("unselected");
labTitle.text = dataSource.name;
labDescription.text = dataSource.description;
switch (dataSource.grade) {
case 1:
grade1.visible = true;
grade2.visible = false;
grade3.visible = false;
break;
case 2:
grade1.visible = false;
grade2.visible = true;
grade3.visible = false;
break;
case 3:
grade1.visible = false;
grade2.visible = false;
grade3.visible = true;
break;
default:
grade1.visible = false;
grade2.visible = false;
grade3.visible = false;
break;
}
selected.visible = dataSource.id == this.#selectedTalent;
unselected.visible = !selected.visible;
box.label = $_.format($lang.F_TalentSelection, dataSource);
const style = $ui.common.card[dataSource.grade];
$_.deepMapSet(box, dataSource.id == this.#selectedTalent? style.selected: style.normal);
box.getChildByName('blank').pause = dataSource.id != this.#selectedTalent;
box.off(Laya.Event.CLICK, this, this.onSelectTalent);
box.on(Laya.Event.CLICK, this, this.onSelectTalent, [dataSource.id]);
}

View File

@@ -36,10 +36,16 @@ export default class Talent extends TalentUI {
renderTalent(box, index) {
const dataSource = box.dataSource;
box.label = `${dataSource.name}(${dataSource.description})`;
const style = $ui.common.card[dataSource.grade];
const blank = box.getChildByName('blank');
box.label = $_.format($lang.F_TalentSelection, dataSource);
$_.mapSet(box, this.#selected.has(index)? style.selected: style.normal);
const style = $ui.common.card[dataSource.grade];
const changeStyle = () => {
const selected = this.#selected.has(index);
blank.pause = !selected;
$_.deepMapSet(box, selected? style.selected: style.normal);
}
changeStyle();
box.offAll(Laya.Event.CLICK);
box.on(Laya.Event.CLICK, this, () => {
@@ -56,7 +62,7 @@ export default class Talent extends TalentUI {
? 'UI_Next'
: 'UI_Talent_Select_Uncomplete';
$_.mapSet(box, this.#selected.has(index)? style.selected: style.normal);
changeStyle();
});
}
}

View File

@@ -14,40 +14,6 @@ export default class Trajectory extends TrajectoryUI {
this.btnSummary.on(Laya.Event.CLICK, this, this.onSummary);
this.panelTrajectory.vScrollBar.elasticDistance = 150;
let interval = null;
let timeout = null;
const scroll = alter => {
let value = this.panelTrajectory.vScrollBar.value + alter;
if(value < 0) value = 0;
if(value > this.panelTrajectory.vScrollBar.max) value = this.panelTrajectory.vScrollBar.max;
this.panelTrajectory.scrollTo(0, value);
}
const on = (btn, alter) => {
btn.off(Laya.Event.CLICK, this, scroll);
btn.on(Laya.Event.CLICK, this, scroll, [100*alter]);
timeout = setTimeout(() => {
btn.off(Laya.Event.CLICK, this, scroll);
interval = setInterval(() => scroll(10*alter), 10);
}, 100);
}
const clear = () => {
if(interval) {
clearInterval(interval);
interval = null;
}
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
};
this.btnUp.on(Laya.Event.MOUSE_DOWN, this, on, [this.btnUp, -1]);
this.btnDown.on(Laya.Event.MOUSE_DOWN, this, on, [this.btnDown, 1]);
this.btnUp.on(Laya.Event.MOUSE_UP, this, clear);
this.btnUp.on(Laya.Event.MOUSE_OUT, this, clear);
this.btnDown.on(Laya.Event.MOUSE_UP, this, clear);
this.btnDown.on(Laya.Event.MOUSE_OUT, this, clear);
this.scbSpeed.on(Laya.Event.CHANGE, this, () => this.speed = this.scbSpeed.value);
this.scbSpeed.on(Laya.Event.MOUSE_UP, this, () => this.onNext());
}
@@ -56,7 +22,10 @@ export default class Trajectory extends TrajectoryUI {
#auto;
static load() {
return ['images/slider/vslider_1@3x$bar.png'];
return [
"images/atlas/images/progress.atlas",
'images/atlas/images/slider.atlas',
];
}
static #createComponent = plugin.extractComponents(Trajectory.uiView, ['boxTrajectoryItem']);
@@ -64,6 +33,10 @@ export default class Trajectory extends TrajectoryUI {
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;

View File

@@ -13,9 +13,6 @@ const popups = {
ACHIEVEMENT: 'POPUP_ACHIEVEMENT',
};
const colors = {
}
const cyber = {
pages: {
[pages.LOADING]: "loading",
@@ -62,6 +59,21 @@ const def = {
configs: {
bgColor: '#222831',
common: {
defaultFontColor: '#eeeeee',
trajectoryItem: {
box: {
defaultColor: '#4a5361',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#4a5361',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 2,
radius: 0,
},
ageColor: '#ffffee',
contentColor: '#eeeeee',
},
grade: [
'#cccccc',
'#55fffe',
@@ -153,25 +165,105 @@ const def = {
radius: 4,
},
selected: {
defaultColor: '#f8f8f8',
defaultStroke: '#a5ff88',
defaultLabel: '#eeeeee',
hoverColor: '#3b3b3b',
hoverStroke: '#a5ff88',
defaultColor: '#f7a989',
defaultStroke: '#f8f8f8',
defaultLabel: '#3b3b3b',
hoverColor: '#f7a989',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 4,
radius: 4,
}
}
],
summary: [
{
defaultColor: '#464646',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#c0c0c0',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 2,
radius: 0,
},{
defaultColor: '#6495ed',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#87cefa',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 2,
radius: 0,
},{
defaultColor: '#e2a7ff',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#e7beff',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 2,
radius: 0,
},
{
defaultColor: '#ffa07a',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#f7a989',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 2,
radius: 0,
}
],
achievement: [
{
defaultColor: '#464646',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#c0c0c0',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 4,
radius: 0,
},{
defaultColor: '#6495ed',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#87cefa',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 4,
radius: 0,
},{
defaultColor: '#e2a7ff',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#e7beff',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 4,
radius: 0,
},
{
defaultColor: '#ffa07a',
defaultStroke: '#f8f8f8',
defaultLabel: '#eeeeee',
hoverColor: '#f7a989',
hoverStroke: '#f8f8f8',
hoverLabel: '#3b3b3b',
lineWidth: 4,
radius: 0,
}
]
},
class: {
btn_main: {
defaultColor: '#393e46',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#ff7878',
hoverStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 2,
radius: 4,
@@ -179,15 +271,18 @@ const def = {
btn_small: {
defaultColor: '#5865f2',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#1160b0',
hoverStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 0,
radius: 4,
},
title: {
color: '#ffffff',
},
font_default: {
color: '#eeeeee',
}
},
pages: {
@@ -205,10 +300,85 @@ const def = {
vars: {
btnDrawCard: 'btn_main',
btnNext: 'btn_main',
},
names: {
title: 'title',
}
},
[pages.PROPERTY]: {
vars: {
btnRandomAllocate: 'btn_main',
btnNext: 'btn_main',
title: 'title',
},
names: {
font_default: 'font_default',
property: {
colorFilter: '#eeeeeeff'
}
}
},
[pages.TRAJECTORY]: {
vars: {
btnSummary: 'btn_main',
boxTrajectory: {
defaultColor: '#393e46',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#393e46',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 2,
radius: 4,
},
boxSpeed: {
colorFilter: '#ffffffff'
}
},
names: {
propertyBox: {
defaultColor: '#222831',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#222831',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 2,
radius: 4,
},
propertyValue: {
defaultColor: '#eeeeee',
defaultStroke: '#eeeeee',
defaultLabel: '#222831',
hoverColor: '#eeeeee',
hoverStroke: '#eeeeee',
hoverLabel: '#222831',
lineWidth: 0,
radius: 4,
}
}
},
[pages.SUMMARY]: {
vars: {
btnAgain: 'btn_main',
title: 'title',
},
names: {
font_default: 'font_default',
}
},
[pages.ACHIEVEMENT]: {
vars: {
btnBack: 'btn_small',
btnRank: 'btn_small',
},
names: {
font_default: 'font_default',
title: 'title',
}
},
[pages.THANKS]: {
vars: {
btnBack: 'btn_small',
},
}
},
popups: {

View File

@@ -7,7 +7,7 @@ export default class UIManager {
stage = Laya.stage;
}
this.#stage = stage;
this.#stage.bgColor = this.#configs.bgColor;
this.theme = 'default';
stage.addChild(this.#viewLayer);
this.#viewLayer.zOrder = 1;
@@ -192,7 +192,7 @@ export default class UIManager {
if(typeof config == 'string') {
config = this.#configs?.class?.[config];
}
for(const key in config) target[key] = config[key];
$_.deepMapSet(target, config);
};
if(config.names)
@@ -285,6 +285,7 @@ export default class UIManager {
set theme(value) {
this.#theme = value;
this.#stage.bgColor = this.#configs.bgColor;
document?.querySelector?.('meta[name="theme-color"]')?.setAttribute?.('content', this.#configs.bgColor);
}
get #pages() {