public override void OnTileSelected(TileProxy tile) { if (currentUnit != null && visitableTiles.Contains(tile)) { TileProxy startTile = BoardProxy.instance.GetTileAtPosition(currentUnit.GetPosition()); if (startTile != tile) { UnitProxy unit = startTile.GetUnit(); if (unit.GetData().GetTurnActions().CanMove()) { unit.GetData().GetTurnActions().Move(); PanelController.SwitchChar(unit); StartCoroutine(currentUnit.CreatePathToTileAndLerpToPosition(tile, () => { tile.ReceiveGridObjectProxy(currentUnit); startTile.RemoveGridObjectProxy(currentUnit); UnHighlightTiles(); InteractivityManager.instance.EnterDefaultMode(); })); } else { Debug.Log("Out of actions. Send signal to player they can't move unit."); } } else { StartCoroutine(currentUnit.CreatePathToTileAndLerpToPosition(tile, () => { StartCoroutine(ResetTiles()); })); } } else if (currentUnit != null) { //Select all the tiles with opp team in all tiles //List<TileProxy> visitableTiles = allTiles.Where(tl => tl.GetUnit().GetData().GetTeam() != currentUnit.GetData().GetTeam()).ToList<TileProxy>(); if (!allTiles.Where(tl => tl.HasUnit() && (tl.GetUnit().GetData().GetTeam() != currentUnit.GetData().GetTeam())).ToList <TileProxy>().Contains(tile)) { BoardProxy.instance.FlushTiles(); PanelController.SwitchChar(null); } ////Player clicked out of unit range, reset tiles/UI so player can click somewhere else instead //BoardProxy.instance.FlushTiles(); //PanelController.SwitchChar(null); } }
public static void InteractionDialogGameobject(Skill.Actions interaction, TileProxy tile, string msg, Color color) { //Debug.Log("Animation reason: " + animDesc); instance.StartCoroutine(instance.DialogAnim(msg, color, ReturnWaitTimeDialog(interaction), tile.GetUnit().transform)); //instance.timeLeft = ANIMATION_WAIT_TIME_LIMIT; }