UNPKG

metafide-surge

Version:

Metafide Surge Game Computation

104 lines (103 loc) 3.04 kB
"use strict"; 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;