package com.znv.linkup.core.status; import com.znv.linkup.core.GameSettings; /** * 游戏连击处理 * * @author yzb * */ class GameCombo { public GameCombo() { this(null); } public GameCombo(IGameStatus listener) { combo = 0; preRemoveTime = System.currentTimeMillis(); this.listener = listener; } public void clearCombo() { combo = 0; } public void addCombo() { combo++; } /** * 获取连击得分 * * @return 连击奖励分数 */ public int getComboScore() { long curTime = System.currentTimeMillis(); long span = curTime - preRemoveTime; // 毫秒数 int diff = (int) span - GameSettings.ComboDelay; if (diff <= 0) { combo++; } else { combo = 1; } preRemoveTime = curTime; if (combo != 0) { if (listener != null) { listener.onCombo(combo); } if (combo % GameSettings.ComboMod == 0) { return getComboScore(combo); } } return 0; } /** * 根据连击数获取连击奖励分数 * * @param combo * 连击数 * @return 连击奖励分数 */ public static int getComboScore(int combo) { return combo * GameSettings.ComboScore; } public int getGameCombo() { return combo; } private long preRemoveTime; private int combo; private IGameStatus listener; }