mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-03-25 16:48:23 +08:00
commit870d711162Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 27 16:50:19 2022 +0800 update event commitb327eb1765Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 27 16:36:02 2022 +0800 update event commit4e845bc2ebAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 27 16:35:56 2022 +0800 fix ui feel commitbd508913c5Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 27 16:35:22 2022 +0800 update special thanks commitd097b3bc15Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 27 16:04:55 2022 +0800 add unique character commit8d71b73e94Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Jan 25 21:27:29 2022 +0800 fix: bug save load commit286828abe7Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Jan 25 18:15:22 2022 +0800 add game mode commit0e3c885ad3Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Jan 6 20:09:20 2022 +0800 update special thanks commitb421082374Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Fri Dec 31 20:26:20 2021 +0800 update specialthanks commit765a69294bAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Dec 14 19:10:03 2021 +0800 fix ios goto commit8eb8c3ca72Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Dec 14 19:03:37 2021 +0800 add event grade commitab705dd46cAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Dec 14 18:48:42 2021 +0800 build version commita1e4232369Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Dec 14 18:47:05 2021 +0800 change talent replace before property allocate commitf4d7b3ae3cAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Dec 14 18:06:18 2021 +0800 add event grade commit0567e40ddcAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 21:28:10 2021 +0800 add particle commitf17003925eAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 20:14:26 2021 +0800 change ui commitf8beda1d8fAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 19:08:30 2021 +0800 change popup message ui commit915a2aa17dAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 18:34:29 2021 +0800 new build commitb5edabc104Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 18:18:46 2021 +0800 add hint message commita143feadafAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 17:57:31 2021 +0800 fix copy bug commiteab1975791Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 17:56:28 2021 +0800 add save/load commitacf9b92134Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Dec 2 14:35:33 2021 +0800 add theme switch commit488a6054abAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Wed Dec 1 18:30:36 2021 +0800 fix uiManager bug commitf0317eaf14Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Wed Dec 1 16:07:03 2021 +0800 add message popup commiteb02d1ee6fAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 21:22:54 2021 +0800 change relocation commit60503eae47Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 19:27:16 2021 +0800 change ScaleButton -> Laya.runtime.ScaleButton commit52ef5909c1Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 19:26:31 2021 +0800 change ScaleButton -> Laya.runtime.ScaleButton commit0284f6aa71Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 19:05:24 2021 +0800 config webpack commit0e272ffd99Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 13:17:41 2021 +0800 add thanks commite1e2ab4701Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 28 11:40:21 2021 +0800 add light theme commit4f55c00f86Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sat Nov 27 22:27:39 2021 +0800 fix bug commit1d07bdfc46Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sat Nov 27 21:48:47 2021 +0800 daily update commit52d6a0ca8fAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Wed Nov 24 23:10:04 2021 +0800 daily update commitf8dd720d4dAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Wed Nov 24 19:08:13 2021 +0800 daily update commitd088c1a862Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 21 21:41:46 2021 +0800 remove useless commita711fcf3edAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Nov 16 00:53:05 2021 +0800 add achievement popup add page adaptive add talent extends commit05e02de3dbAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Sat Nov 13 01:24:04 2021 +0800 add github and discord commitbff0109cc5Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sat Nov 13 00:30:01 2021 +0800 add trajectory auto mode commit54c04f65c2Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Fri Nov 12 19:54:31 2021 +0800 fix property judge negative number bug commit660739530bAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Fri Nov 12 19:48:58 2021 +0800 update achievement commitc94e9e7433Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Thu Nov 11 21:37:45 2021 +0800 update daily commitc06cd9ea62Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Tue Nov 9 00:08:05 2021 +0800 update daily commit2666983f89Author: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 7 23:00:22 2021 +0800 add uiManager auto scan and load skin resource commit22fa5d755aAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Nov 7 22:17:04 2021 +0800 update framework commitf40698d63eAuthor: Vick Scarlet <scarlet_vick@outlook.com> Date: Sun Oct 31 00:13:22 2021 +0800 add laya
134 lines
3.6 KiB
JavaScript
134 lines
3.6 KiB
JavaScript
class Character {
|
|
constructor(system) {
|
|
this.#system = system;
|
|
}
|
|
|
|
#system;
|
|
#characters;
|
|
#characterPullCount;
|
|
#rateableKnife;
|
|
#rate;
|
|
#pipe = [];
|
|
#uniqueWaTaShi;
|
|
#propertyWeight;
|
|
#talentWeight
|
|
|
|
initial({characters}) {
|
|
this.#characters = characters;
|
|
const uniqueWaTaShi = localStorage.getItem('uniqueWaTaShi');
|
|
if(uniqueWaTaShi != null || uniqueWaTaShi != 'undefined')
|
|
this.#uniqueWaTaShi = JSON.parse(uniqueWaTaShi);
|
|
return this.count;
|
|
}
|
|
|
|
get count() {
|
|
return Object.keys(this.#characters).length;
|
|
}
|
|
|
|
config({
|
|
characterPullCount = 3,
|
|
rateableKnife = 10,
|
|
propertyWeight,
|
|
talentWeight,
|
|
} = {}) {
|
|
this.#characterPullCount = characterPullCount;
|
|
this.#rateableKnife = rateableKnife;
|
|
this.#propertyWeight = propertyWeight;
|
|
this.#talentWeight = talentWeight;
|
|
}
|
|
|
|
get #unique() {
|
|
if(this.#uniqueWaTaShi) {
|
|
return this.#system.clone(this.#uniqueWaTaShi);
|
|
}
|
|
|
|
const now = Date.now();
|
|
this.#pipe.push(now);
|
|
if(this.#pipe.length < 10) return null;
|
|
const time = this.#pipe.shift();
|
|
if(now - time > 10000) return null;
|
|
return {unique: true, generate: false};
|
|
}
|
|
|
|
set #unique(data) {
|
|
this.#uniqueWaTaShi = this.#system.clone(data);
|
|
this.#uniqueWaTaShi.unique = true;
|
|
this.#uniqueWaTaShi.generate = true;
|
|
localStorage.setItem(
|
|
'uniqueWaTaShi',
|
|
JSON.stringify(this.#uniqueWaTaShi)
|
|
);
|
|
}
|
|
|
|
get #weightRandom() {
|
|
return this.#system.function(this.#system.Function.UTIL).weightRandom;
|
|
}
|
|
|
|
generateUnique() {
|
|
if(this.#uniqueWaTaShi) return this.#unique;
|
|
const weightRandom = this.#weightRandom;
|
|
const {CHR, INT, STR, MNY} = this.#system.PropertyTypes;
|
|
|
|
this.#unique = {
|
|
property: {
|
|
[CHR]: weightRandom(this.#propertyWeight),
|
|
[INT]: weightRandom(this.#propertyWeight),
|
|
[STR]: weightRandom(this.#propertyWeight),
|
|
[MNY]: weightRandom(this.#propertyWeight),
|
|
},
|
|
talent: this.#system
|
|
.request(this.#system.Module.TALENT)
|
|
.random(weightRandom(this.#talentWeight)),
|
|
}
|
|
|
|
return this.#unique;
|
|
}
|
|
|
|
random() {
|
|
return {
|
|
unique: this.#unique,
|
|
normal: this.#rateable(),
|
|
}
|
|
}
|
|
|
|
#rateable() {
|
|
if(!this.#rate) {
|
|
this.#rate = {};
|
|
for(const id in this.#characters) {
|
|
this.#rate[id] = 1;
|
|
}
|
|
}
|
|
|
|
const r = [];
|
|
const weightRandom = this.#weightRandom;
|
|
new Array(this.#characterPullCount)
|
|
.fill(0)
|
|
.forEach(()=>{
|
|
r.push(
|
|
weightRandom(Object
|
|
.keys(this.#rate)
|
|
.filter(id=>!r.includes(id))
|
|
.map(id=>([id,this.#rate[id]]))
|
|
)
|
|
)
|
|
});
|
|
|
|
let min = Infinity;
|
|
for(const id in this.#rate) {
|
|
if(r.includes(id)) {
|
|
min = Math.min(min, this.#rate[id]);
|
|
continue;
|
|
}
|
|
min = Math.min(min, ++ this.#rate[id]);
|
|
}
|
|
if(min > this.#rateableKnife) {
|
|
for(const id in this.#rate) {
|
|
this.#rate[id] -= this.#rateableKnife;
|
|
}
|
|
}
|
|
return r.map(id=>this.#system.clone(this.#characters[id]));
|
|
}
|
|
|
|
}
|
|
|
|
export default Character; |