Beispiel #1
0
        /// <summary>
        /// Iterate through all the fruitons on the board and return a list of fruitons/tiles (according to <param name="returnTiles"/>)
        /// that satisfies all the conditions given by <param name="filters"/>
        /// </summary>
        /// <returns></returns>
        private List <GameObject> FilterFruitons(bool returnTiles, params Func <ClientFruiton, bool>[] filters)
        {
            List <GameObject> result = new List <GameObject>();

            foreach (GameObject gameObject in battleViewer.FruitonsGrid)
            {
                if (gameObject == null)
                {
                    continue;
                }
                ClientFruiton clientFruiton          = gameObject.GetComponent <ClientFruiton>();
                bool          satisfiesAllConditions = filters.All(f => f(clientFruiton));
                if (satisfiesAllConditions)
                {
                    if (returnTiles)
                    {
                        Point position = clientFruiton.KernelFruiton.position;
                        result.Add(battleViewer.GridLayoutManager.GetTile(position.x, position.y));
                    }
                    else
                    {
                        result.Add(gameObject);
                    }
                }
            }
            return(result);
        }
Beispiel #2
0
        public void Update()
        {
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                FinishTutorial();
            }
            if (!isInitialized)
            {
                foreach (GameObject gameObject in battleViewer.FruitonsGrid)
                {
                    if (gameObject == null)
                    {
                        continue;
                    }
                    ClientFruiton clientFruiton = gameObject.GetComponent <ClientFruiton>();
                    if (!clientFruiton.IsInitialized)
                    {
                        return;
                    }
                }
                CreateTutorialStages();
                isInitialized = true;
                return;
            }
            foreach (Action action in currentStage.UpdateActions)
            {
                action();
            }
            // Check if the typing is finished.
            if (TypeChars())
            {
                switch (currentStage.EndCondition)
                {
                case TutorialStage.StageEndCondition.LeftClickHighlighted:
                    WaitForLeftClick();
                    break;

                case TutorialStage.StageEndCondition.ButtonContinueClick:
                    battleViewer.TutorialContinueButton.gameObject.SetActive(true);
                    break;

                case TutorialStage.StageEndCondition.DifferentButtonClick:
                    break;

                case TutorialStage.StageEndCondition.HoverOverHighlighted:
                    WaitForHover();
                    break;

                default:
                    throw  new ArgumentOutOfRangeException();
                }
            }
            else if (Input.GetMouseButtonDown(0))
            {
                FinishTypingInstantly();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Iterate through all the Fruitons on the board and return a list of objects that <paramref name="filter"/> returned when applied on each of Fruitons.
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        private List <GameObject> GetObjectsRelativeToFruitons(Func <ClientFruiton, GameObject> filter)
        {
            List <GameObject> result = new List <GameObject>();

            foreach (GameObject gameObject in battleViewer.FruitonsGrid)
            {
                if (gameObject == null)
                {
                    continue;
                }
                ClientFruiton kernelFruiton = gameObject.GetComponent <ClientFruiton>();
                result.Add(filter(kernelFruiton));
            }
            return(result);
        }
Beispiel #4
0
        private void PerformAction(Action performedAction)
        {
            List <Event> events = Kernel.performAction(performedAction).CastToList <Event>();

            for (int i = 0; i < Kernel.currentState.fruitons.length; i++)
            {
                var           fruiton       = Kernel.currentState.fruitons[i] as Fruiton;
                ClientFruiton clientFruiton = clientFruitons[fruiton.id];
                clientFruiton.KernelFruiton = fruiton;
            }

            foreach (Event item in events)
            {
                battleViewer.ProcessEvent(item);
            }
        }