Merge branch 'hjb' of git.kingsome.cn:server/game2006api into hjb

This commit is contained in:
hujiabin 2022-09-21 18:03:05 +08:00
commit a76561d183
2 changed files with 142 additions and 4 deletions

View File

@ -1 +1,31 @@
exports.TIME_ZONE = 0; exports.TIME_ZONE = 0;
exports.NORMAL_HERO_FRAGMENT = [
110101,
110111,
110121,
110131,
110141,
110151,
110161,
110171
];
exports.SPEC_HERO_FRAGMENT = 110181;
exports.ALL_HERO_FRAGMENT = exports.NORMAL_HERO_FRAGMENT.concat([exports.SPEC_HERO_FRAGMENT]);
exports.NORMAL_GUN_FRAGMENT = [
110201,
110211,
110221,
110231,
110241,
110251,
110261,
110271
];
exports.SPEC_GUN_FRAGMENT = 110281;
exports.ALL_GUN_FRAGMENT = exports.NORMAL_GUN_FRAGMENT.concat([exports.SPEC_GUN_FRAGMENT]);

View File

@ -6,6 +6,14 @@ const constant = require('../constant');
const YESTERDAY_HERO_NUM = 1000; const YESTERDAY_HERO_NUM = 1000;
const YESTERDAY_GUN_NUM = 1000; const YESTERDAY_GUN_NUM = 1000;
const PVP_TYPE = 0;
const PVE_TYPE = 1;
const PVP_RATIO = 0.6;
const PVE_RATIO = 0.4;
const ITEM_PRE = 'item_';
class Fragment { class Fragment {
async start() { async start() {
@ -64,12 +72,12 @@ class Fragment {
return; return;
} }
const allocedFragments = new Map(); const allocedFragments = new Map();
allocedFragments.set(0, new Map()); allocedFragments.set(PVP_TYPE, new Map());
allocedFragments.set(1, new Map()); allocedFragments.set(PVE_TYPE, new Map());
rows.forEach( rows.forEach(
(element) => { (element) => {
if (element['type'] == 0 || if (element['type'] == PVP_TYPE ||
element['type'] == 1) { element['type'] == PVE_TYPE) {
const data = allocedFragments.get(element['type']); const data = allocedFragments.get(element['type']);
if (data) { if (data) {
const num = Math.max(0, element['alloc_num'] - element['fragment_num']); const num = Math.max(0, element['alloc_num'] - element['fragment_num']);
@ -89,6 +97,106 @@ class Fragment {
} }
async realloc(conn, daySeconds, nowTime, hourSeconds, allocedFragments) { async realloc(conn, daySeconds, nowTime, hourSeconds, allocedFragments) {
const hour = Math.floor(hourSeconds / 3600);
const remainHour = Math.min(24, Math.max(1, 24 - hour));
const remainData = this.getRemainData(daySeconds, nowTime, hourSeconds, allocedFragments);
}
async getRemainData(daySeconds, nowTime, hourSeconds, allocedFragments) {
const totalHeroNum = this.getYesterDayHeroNum();
const totalGunNum = this.getYesterDayGunNum();
const normalHeroNum = Math.floor(totalHeroNum * 0.06 * 8);
const specHeroNum = Math.floor(totalHeroNum * 0.02);
const normalGunNum = Math.floor(totalGunNum * 0.06 * 8);
const specGunNum = Math.floor(totalGunNum * 0.02);
const remainData = new Map();
remainData.set(PVP_TYPE, new Map());
remainData.set(PVE_TYPE, new Map());
remainData.forEach(
(value, key) => {
switch (key) {
case PVP_TYPE:
{
value.set('normalHeroNum', Math.floor(normalHeroNum * PVP_RATIO));
value.set('specHeroNum', Math.floor(specHeroNum * PVP_RATIO));
value.set('normalGunNum', Math.floor(normalGunNum * PVP_RATIO));
value.set('specGunNum', Math.floor(specGunNum * PVP_RATIO));
value.set('remainHeroNum', 0);
value.set('remainGunNum', 0);
}
break;
case PVE_TYPE:
{
value.set('normalHeroNum', Math.floor(normalHeroNum * PVE_RATIO));
value.set('specHeroNum', Math.floor(specHeroNum * PVE_RATIO));
value.set('normalGunNum', Math.floor(normalGunNum * PVE_RATIO));
value.set('specGunNum', Math.floor(specGunNum * PVE_RATIO));
value.set('remainHeroNum', 0);
value.set('remainGunNum', 0);
}
break;
default:
{
return;
}
break;
}//end switch
const data = allocedFragments.get(key);
constant.ALL_HERO_FRAGMENT.forEach(
(element) => {
if (element == constant.SPEC_HERO_FRAGMENT) {
const allocedNum = data.get(element);
let remainNum = value.get('specHeroNum');
if (allocedNum) {
remainNum = Math.max(0, remainNum - allocedNum);
}
value.set(element, remainNum);
} else {
const allocedNum = data.get(element);
let remainNum = Math.floor(value.get('normalHeroNum') / 8);
if (allocedNum) {
remainNum = Math.max(0, remainNum - allocedNum);
}
value.set(element, remainNum);
}
}
);//end forEach
constant.ALL_GUN_FRAGMENT.forEach(
(element) => {
if (element == constant.SPEC_GUN_FRAGMENT) {
const allocedNum = data.get(element);
let remainNum = value.get('specGunNum');
if (allocedNum) {
remainNum = Math.max(0, remainNum - allocedNum);
}
value.set(ITEM_PRE + element, remainNum);
} else {
const allocedNum = data.get(element);
let remainNum = Math.floor(value.get('normalGunNum') / 8);
if (allocedNum) {
remainNum = Math.max(0, remainNum - allocedNum);
}
value.set(ITEM_PRE + element, remainNum);
}
}
);//end forEach
}
);//end forEach
return remainData;
}
getYesterDayHeroNum() {
return YESTERDAY_HERO_NUM;
}
getYesterDayGunNum() {
return YESTERDAY_GUN_NUM;
} }
} }