using System;
using UnityEngine;
///
/// 默认 P(倍数)爆奖事件:n 次爆奖,每次评分一个倍数。
/// 逻辑:
/// 爆奖次数由前端定义(awardCount);
/// 每次自增倍数 = 总倍数(bJbeishu,服务端下发) / 爆奖次数(awardCount)。
/// 流程:
/// Timeline/动画事件每完成一轮调用一次 BeiShuFX():beishunum += (bJbeishu / awardCount),
/// xiaoGuo_Effect 显示本轮自增,beishu 显示累计
/// → 全部轮次走完后 TimeLineEnd()/EndBJ() 结算(保证最终显示总倍数 bJbeishu)。
/// 字段 beishu/beishunum/xiaoGuo_Effect/EndBJ 继承自 BJBeishuEvent。
///
public class DefaultPBBJEvent : BJBeishuEvent
{
[Header("爆奖次数(前端定义)")]
[Tooltip("总共爆 n 次,每次评分 = 总倍数 bJbeishu / 爆奖次数")]
public int awardCount = 1;
/// 已触发的爆奖次数
public int currCount;
public Action jiafenEndAction;
///
/// 每次爆奖触发(awardCount 次调用):按"总倍数/次数"自增倍数。
/// xiaoGuo_Effect 显示本轮自增倍数,beishu 从旧值递增到新累计值(不直接跳变)。
///
public void BeiShuFX()
{
if (awardCount <= 0) awardCount = 1;
// 每次自增 = 总倍数 / 爆奖次数
int old = beishunum;
int step = Mathf.CeilToInt((float)bJbeishu / awardCount);
beishunum += step;
SetFieldText(xiaoGuo_Effect, xiaoGuo_UGUI, step.ToString());
RollBeiShu(old,0, jiafenEndAction); // 从 old 递增到 beishunum(递增动画,而非直接等于)
currCount++;
}
/// 时间轴/动画事件结束:把累计倍数递增到总倍数后统一结算
public void TimeLineEnd()
{
// 累计可能因整除有余数而与总倍数不一致,从当前值递增到服务端总倍数后再结算
int old = beishunum;
beishunum = bJbeishu;
RollBeiShu(old, 0f, () => EndBJ());
}
}