/// <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); }
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(); } }
/// <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); }
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); } }