Example #1
0
        //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();
            }
        }