抽点
This commit is contained in:
parent
55cce7745c
commit
51645bf47a
@ -3007,10 +3007,84 @@
|
|||||||
return resultFor(selfGesture, opponentGesture);
|
return resultFor(selfGesture, opponentGesture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function numberFromFields(source, fields) {
|
||||||
|
if (!source) return null;
|
||||||
|
for (var i = 0; i < fields.length; i += 1) {
|
||||||
|
if (
|
||||||
|
!Object.prototype.hasOwnProperty.call(
|
||||||
|
source,
|
||||||
|
fields[i]
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var raw = source[fields[i]];
|
||||||
|
if (raw === null || raw === undefined || raw === '') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var value = Number(raw);
|
||||||
|
if (Number.isFinite(value)) return value;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function totalFeeBPSForMatch(match) {
|
||||||
|
var config = state.config || {};
|
||||||
|
var feeBPS = numberFromFields(match, [
|
||||||
|
'fee_bps',
|
||||||
|
'feeBps',
|
||||||
|
]);
|
||||||
|
var poolBPS = numberFromFields(match, [
|
||||||
|
'pool_bps',
|
||||||
|
'poolBps',
|
||||||
|
]);
|
||||||
|
if (feeBPS === null) {
|
||||||
|
feeBPS = numberFromFields(config, [
|
||||||
|
'fee_bps',
|
||||||
|
'feeBps',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if (poolBPS === null) {
|
||||||
|
poolBPS = numberFromFields(config, [
|
||||||
|
'pool_bps',
|
||||||
|
'poolBps',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if (feeBPS === null && poolBPS === null) return null;
|
||||||
|
return Math.max(
|
||||||
|
0,
|
||||||
|
Math.min(10000, (feeBPS || 0) + (poolBPS || 0))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function estimatedPayoutFromFee(match) {
|
||||||
|
var stakeCoin =
|
||||||
|
numberFromFields(match, ['stake_coin', 'stakeCoin']) ||
|
||||||
|
state.selectedStake ||
|
||||||
|
0;
|
||||||
|
var totalFeeBPS = totalFeeBPSForMatch(match);
|
||||||
|
if (!stakeCoin || totalFeeBPS === null) return 0;
|
||||||
|
return Math.max(
|
||||||
|
0,
|
||||||
|
Math.trunc(
|
||||||
|
(stakeCoin * 2 * (10000 - totalFeeBPS)) / 10000
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function payoutFromMatch(match, result) {
|
function payoutFromMatch(match, result) {
|
||||||
var self = findSelfParticipant(match);
|
var self = findSelfParticipant(match);
|
||||||
if (self && self.payout_coin > 0) return self.payout_coin;
|
var payoutCoin = numberFromFields(self, [
|
||||||
if (result === 'draw') return 0;
|
'payout_coin',
|
||||||
|
'payoutCoin',
|
||||||
|
]);
|
||||||
|
if (payoutCoin !== null) {
|
||||||
|
return Math.max(0, Math.trunc(payoutCoin));
|
||||||
|
}
|
||||||
|
if (result !== 'win') return 0;
|
||||||
|
// 真实局缺少 payout_coin 时不能再展示未扣点的 2 倍押注。
|
||||||
|
// 兜底只能按本局或配置里的 fee_bps + pool_bps 估算。
|
||||||
|
if (match) return estimatedPayoutFromFee(match);
|
||||||
return state.selectedStake * 2;
|
return state.selectedStake * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user