metafide-surge
Version:
Metafide Surge Game Computation
104 lines (103 loc) • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseNumeric = exports.serializeSpotPlayer = exports.serializeRangePlayer = exports.scaleFrom1e8 = exports.DEFAULT_SPOT_ALLOCATION_PERCENTAGES = exports.DEFAULT_RANGE_ALLOCATION_PERCENTAGES = void 0;
/**
* Default allocation percentages used if none are provided.
*/
exports.DEFAULT_RANGE_ALLOCATION_PERCENTAGES = {
metafide_rake: 0.019875,
streak_pot_5: 0.01425,
streak_pot_10: 0.0095,
streak_pot_25: 0.002375,
daily_reward_pot: 0.0035,
monthly_reward_pot: 0.0015,
burn: 0.025, // 2.5%
};
exports.DEFAULT_SPOT_ALLOCATION_PERCENTAGES = {
metafide_rake: 0.019875,
range_rake: 0.015,
streak_pot_5: 0.01425,
streak_pot_10: 0.0095,
streak_pot_25: 0.002375,
burn: 0.025,
daily_reward_pot: 0.0035,
monthly_reward_pot: 0.0015, // 0.15%
};
/**
* Scales down a number from 1e8, safely handling all edge cases.
* @param value - The input value to scale
* @returns The scaled value, or 0 if input is invalid
*/
function scaleFrom1e8(value) {
if (typeof value !== 'number' || !isFinite(value)) {
return 0;
}
if (value === 0) {
return 0;
}
return value / 1e8;
}
exports.scaleFrom1e8 = scaleFrom1e8;
function serializeRangePlayer(data) {
var _a;
return {
gid: Number(data.gid),
c: data.c,
a: data.a,
id: data.id,
f: Number(data.f),
hp: Number(data.hp),
lp: Number(data.lp),
cm: data.cm,
cmt: (_a = data.cmt) !== null && _a !== void 0 ? _a : null,
t: data.t,
w: Number(data.w),
r: Number(data.r),
p: Number(data.p),
ex: data.ex,
ex_ha: data.ex_ha ? Number(data.ex_ha) : null,
ex_la: data.ex_la ? Number(data.ex_la) : null,
ex_t: data.ex_t ? Number(data.ex_t) : null,
pw: data.pw,
win: data.win,
};
}
exports.serializeRangePlayer = serializeRangePlayer;
function serializeSpotPlayer(data) {
var _a;
return {
gid: Number(data.gid),
c: data.c,
a: data.a,
id: data.id,
f: Number(data.f),
cm: data.cm,
cmt: (_a = data.cmt) !== null && _a !== void 0 ? _a : null,
t: data.t,
w: Number(data.w),
r: Number(data.r),
sp: Number(data.sp),
pw: data.pw,
win: data.win,
tx: data.tx,
txid: data.txid,
};
}
exports.serializeSpotPlayer = serializeSpotPlayer;
/**
* Converts a `Numeric` (string or number) to a number.
* Returns 0 if the value is null, undefined, or not a valid number.
*
* @param {Numeric | null | undefined} value - The value to convert.
* @returns {number} A valid number (or 0 if invalid).
*/
function parseNumeric(value) {
if (typeof value === 'number')
return value;
if (typeof value === 'string') {
const parsed = parseFloat(value);
return isNaN(parsed) ? 0 : parsed;
}
return 0;
}
exports.parseNumeric = parseNumeric;