mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-03-29 13:15:53 +08:00
96 lines
2.4 KiB
JavaScript
96 lines
2.4 KiB
JavaScript
|
|
import talentsData from './talents.js';
|
|
import ageData from './age.js';
|
|
import eventsData from './events.js';
|
|
import { max, sum } from '../functions/util.js';
|
|
import { summary } from "../functions/summary.js";
|
|
//"\d*": ->
|
|
//"age": "(\d*)", -> "_id": "$1", "age": "$1",
|
|
//"\d*": \{ -> {
|
|
//"id": -> "_id":
|
|
function allTalents() {
|
|
// wx.setStorage({
|
|
// key: 'talentsData',
|
|
// data: talentsData
|
|
// })
|
|
return talentsData.slice(0)
|
|
}
|
|
function allAge() {
|
|
// wx.setStorage({
|
|
// key: 'agedata',
|
|
// data: ageData
|
|
// })
|
|
return ageData.slice(0)
|
|
}
|
|
function allEvents() {
|
|
// wx.setStorage({
|
|
// key: 'eventsData',
|
|
// data: eventsData
|
|
// })
|
|
return eventsData.slice(0)
|
|
}
|
|
|
|
function randomTalents(max) {
|
|
const result = getRandomInRange(talentsData, max)
|
|
return result
|
|
}
|
|
function getRandomInRange(arr, count) {
|
|
var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
|
|
while (i-- > min) {
|
|
index = Math.floor((i + 1) * Math.random());
|
|
temp = shuffled[index];
|
|
shuffled[index] = shuffled[i];
|
|
shuffled[i] = temp;
|
|
}
|
|
return shuffled.slice(min).sort(function(a,b){return a-b;});
|
|
}
|
|
|
|
function buildSummary(records, type) {
|
|
const value = max(records.map(({[type]:v})=>v));
|
|
const { judge, grade } = summary(type, value);
|
|
return { judge, grade, value };
|
|
}
|
|
|
|
function finalSummary(records) {
|
|
const m = type=>max(records.map(({[type]: value})=>value));
|
|
const value = Math.floor(sum(m('CHR'), m('INT'), m('STR'), m('MNY'), m('SPR'))*2 + m('AGE')/2);
|
|
const { judge, grade } = summary('SUM', value);
|
|
return { judge, grade, value };
|
|
}
|
|
|
|
function computeTalentsStatus(talents) {
|
|
var status = talents.map(function(item) {
|
|
if ('status' in item) {
|
|
return item.status
|
|
} else {
|
|
return 0
|
|
}
|
|
})
|
|
return status
|
|
}
|
|
|
|
function computeUseableProp(max, status) {
|
|
var proNum = max
|
|
status.forEach(function(item){
|
|
proNum = proNum + item
|
|
})
|
|
return proNum
|
|
}
|
|
|
|
function randomProp(max, init){
|
|
// console.log('randomProperty', t)
|
|
var arr = init
|
|
while(max>0) {
|
|
const sub = Math.round(Math.random() * (Math.min(max, 10) - 1)) + 1;
|
|
while(true) {
|
|
const select = Math.floor(Math.random() * 4) % 4;
|
|
if(arr[select] - sub <0) continue;
|
|
arr[select] -= sub;
|
|
max -= sub;
|
|
break;
|
|
}
|
|
}
|
|
return arr
|
|
}
|
|
|
|
export { randomTalents, getRandomInRange, allTalents, allAge, allEvents, buildSummary, finalSummary, computeTalentsStatus, computeUseableProp, randomProp }; |