//private List<IRuntimeJewel> toRemoveBuff = new List<IRuntimeJewel>(); public override void OnEnterState() { //Logger.Log<EvaluateBoardState>("OnEnterState"); base.OnEnterState(); // Bring in board data IRuntimeJewel[,] jewelMap = board.GetBoardData().GetMap(); if (FindMatchesUtil.FindBestMatches(jewelMap).Count == 0) { OnResetState(); return; } List <List <IRuntimeJewel> > toRemoveBuffs = FindMatchesUtil.FindMatchesBuffer(jewelMap); foreach (var toRemoveBuff in toRemoveBuffs) { if (toRemoveBuff.Count > 3) { OnBonus(toRemoveBuff.Select((jewel) => { return(jewel.Data.JewelID); }).ToList()); } foreach (var jewel in toRemoveBuff) { OnRemove(jewel); } } if (toRemoveBuffs.Count > 0 || FindMatchesUtil.ContainsNullJewel(board.GetBoardData().GetMap())) { OnCascadeState(); } else { OnCleanBoardState(); } }