You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/assets/script/ui/BattleGame/BattleGamePassiveSkillRunti...

60 lines
2.1 KiB

import { BattleBuffFunctionType } from '../../manager/battleBuff/BattleBuffTypes';
import { isBattleBuffPassiveGoldMine } from '../../manager/battleBuff/BattleBuffPassiveSkillUtil';
import type { ProjectBattleHandle } from '../../battle/runtime/BattleRuntime';
import type { BattleGamePassiveSkillHost } from './BattleGamePassiveSkillHost';
/**
* 局内被动 buff CD 结束触发(按 functiontype 扩展具体逻辑)。
* 无 CD 的被动为携带即生效,不在此处理。
*/
export class BattleGamePassiveSkillRuntime {
/**
* 被动 buff CD 结束
* @param row Battlebuff 表行
* @param battle 战斗句柄
* @param host 被动 UI / 棋盘上下文
* @param slotIndex ui_selfskill2List 槽位
* @returns 是否已受理本次触发
*/
static onPassiveCdReady(
row: ITableBattlebuff,
battle: ProjectBattleHandle | null,
host: BattleGamePassiveSkillHost | null,
slotIndex: number,
): boolean {
const ft = Math.floor(Number(row.functiontype) || 0);
const id = Math.floor(Number(row.id) || 0);
if (ft <= 0 || id <= 0) return false;
if (!host) {
console.log('[PassiveSkill] CD 结束缺少 host', ft, 'id=', id);
return false;
}
if (isBattleBuffPassiveGoldMine(row) || ft === BattleBuffFunctionType.GoldMine) {
return BattleGamePassiveSkillRuntime._onGoldMineReady(battle, host, slotIndex);
}
console.log('[PassiveSkill] CD 结束未实现 functiontype', ft, 'id=', id);
return false;
}
/**
* 金矿:本机 +1 金币并重开 CD。
* @param battle 战斗
* @param host 被动 host
* @param slotIndex 槽位
*/
private static _onGoldMineReady(
battle: ProjectBattleHandle | null,
host: BattleGamePassiveSkillHost,
slotIndex: number,
): boolean {
if (!battle) {
console.log('[PassiveSkill] 金矿缺少 battle');
return false;
}
battle.addPlayerGold(battle.localPlayerId, 1);
host.restartPassiveCd(slotIndex);
return true;
}
}