优化奖励配置/按规则一键生成表
This commit is contained in:
@@ -53,12 +53,12 @@ export interface TierRealEvStandards {
|
||||
T5: number
|
||||
}
|
||||
|
||||
/** 默认标准(与常见业务约定一致:100<T1<500,等) */
|
||||
/** 默认标准(与规则弹窗说明一致) */
|
||||
export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = {
|
||||
T1: 400,
|
||||
T2: 50,
|
||||
T3: -80,
|
||||
T4: -140,
|
||||
T1: 300,
|
||||
T2: 150,
|
||||
T3: 50,
|
||||
T4: -40,
|
||||
T5: 0
|
||||
}
|
||||
|
||||
@@ -66,16 +66,16 @@ export const DEFAULT_TIER_REAL_EV_STANDARDS: TierRealEvStandards = {
|
||||
* 校验档位与 real_ev 区间是否一致;通过返回 null,否则返回 i18n 键名(不含 page.configPage. 前缀)
|
||||
*/
|
||||
export function validateTierRealEvStandards(s: TierRealEvStandards): string | null {
|
||||
if (!Number.isFinite(s.T1) || !(s.T1 > 100 && s.T1 < 500)) {
|
||||
if (!Number.isFinite(s.T1) || !(s.T1 > 200)) {
|
||||
return 'ruleGenInvalidT1RealEv'
|
||||
}
|
||||
if (!Number.isFinite(s.T2) || !(s.T2 > 0 && s.T2 < 100)) {
|
||||
if (!Number.isFinite(s.T2) || !(s.T2 > 100 && s.T2 < 200)) {
|
||||
return 'ruleGenInvalidT2RealEv'
|
||||
}
|
||||
if (!Number.isFinite(s.T3) || !(-100 < s.T3 && s.T3 < 0)) {
|
||||
if (!Number.isFinite(s.T3) || !(s.T3 > 0 && s.T3 < 100)) {
|
||||
return 'ruleGenInvalidT3RealEv'
|
||||
}
|
||||
if (!Number.isFinite(s.T4) || !(s.T4 < -100)) {
|
||||
if (!Number.isFinite(s.T4) || !(s.T4 < 0)) {
|
||||
return 'ruleGenInvalidT4RealEv'
|
||||
}
|
||||
if (!Number.isFinite(s.T5) || s.T5 !== 0) {
|
||||
@@ -271,10 +271,21 @@ export function generateTiers(input: GenerateTierInput): GenerateTierResult {
|
||||
return { ok: false, message: '在当前盘面与约束下未找到可行解,请调整 T1/T4/T5 固定条数或放宽 T2 下限后重试' }
|
||||
}
|
||||
|
||||
function uiTextByTierWhenStandards(
|
||||
tier: IndexTier,
|
||||
realEv: number
|
||||
): { ui_text: string; ui_text_en: string } {
|
||||
if (tier === 'T5') {
|
||||
return { ui_text: '再来一次', ui_text_en: 'Once again' }
|
||||
}
|
||||
const value = String(realEv)
|
||||
return { ui_text: value, ui_text_en: value }
|
||||
}
|
||||
|
||||
/** 展示文案:直接使用真实结算值(中英文相同) */
|
||||
function uiTextFromRealEv(realEv: number): { ui_text: string; ui_text_en: string } {
|
||||
const s = String(realEv)
|
||||
return { ui_text: s, ui_text_en: s }
|
||||
const value = String(realEv)
|
||||
return { ui_text: value, ui_text_en: value }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -315,31 +326,31 @@ export function buildRowsFromTiers(
|
||||
if (standards !== undefined) {
|
||||
if (tier === 'T1') {
|
||||
real_ev = standards.T1
|
||||
const f = uiTextFromRealEv(real_ev)
|
||||
const f = uiTextByTierWhenStandards(tier, real_ev)
|
||||
ui_text = f.ui_text
|
||||
ui_text_en = f.ui_text_en
|
||||
remark = '大奖格'
|
||||
} else if (tier === 'T2') {
|
||||
real_ev = standards.T2
|
||||
const f = uiTextFromRealEv(real_ev)
|
||||
const f = uiTextByTierWhenStandards(tier, real_ev)
|
||||
ui_text = f.ui_text
|
||||
ui_text_en = f.ui_text_en
|
||||
remark = standards.T2 <= 1 ? '完美回本' : '小赚'
|
||||
} else if (tier === 'T3') {
|
||||
real_ev = standards.T3
|
||||
const f = uiTextFromRealEv(real_ev)
|
||||
const f = uiTextByTierWhenStandards(tier, real_ev)
|
||||
ui_text = f.ui_text
|
||||
ui_text_en = f.ui_text_en
|
||||
remark = '抽水'
|
||||
} else if (tier === 'T4') {
|
||||
real_ev = standards.T4
|
||||
const f = uiTextFromRealEv(real_ev)
|
||||
const f = uiTextByTierWhenStandards(tier, real_ev)
|
||||
ui_text = f.ui_text
|
||||
ui_text_en = f.ui_text_en
|
||||
remark = '惩罚'
|
||||
} else {
|
||||
real_ev = standards.T5
|
||||
const f = uiTextFromRealEv(real_ev)
|
||||
const f = uiTextByTierWhenStandards(tier, real_ev)
|
||||
ui_text = f.ui_text
|
||||
ui_text_en = f.ui_text_en
|
||||
remark = '前端需要在播放一次动画(特殊)'
|
||||
|
||||
Reference in New Issue
Block a user