// this is the main one public void SelectTile(BoardEntity boardEntity, List <TileSelectOption> options, Action <TileSelectOption> callBack, bool isMovement = false, Action hoverExit = null) { this.hoverExit = hoverExit; if (selectionCallBack == null) { this.isMovement = isMovement; selectionCallBack = callBack; possibleTiles.Clear(); options.ForEach(x => possibleTiles.Add(x.Selection, x)); if (boardEntity != null) { selectedEntity = boardEntity; glow(selectedEntity.GetTile(), defaultHoverColor); } // highlight possible moves foreach (TileSelectOption opt in options) { highlightMovableTile(opt.Selection.GetComponentInChildren <PathOnClick>()); } //selectedTile = boardEntity.GetTile().PathOnClick; } }
private void EnterAction(BoardEntity boardEntity, Tile leavingTile, Action callback) { if (this.boardEntity.Team != boardEntity.Team && !influenceTiles.Contains(leavingTile)) { influenceSkill.Action(boardEntity.GetTile(), callback); } else { callback(); } }
private void setHoverEntity(BoardEntity boardEntity) { if (hoverBoardEntity != null) { hoverBoardEntity.GetTile().PathOnClick.ColorEffectManager.TurnOff(this); } hoverBoardEntity = boardEntity; if (hoverBoardEntity != null) { //profile.UpdateProfile(boardEntity); //hoverBoardEntity.GetTile().PathOnClick.ColorEffectManager.TurnOn(this, Color.blue); } }
public void TileClicked(PathOnClick pathOnClick) { if (selectionCallBack != null && active) { //checks to see if the selected tile is unselectable if (!(pathOnClick != null && possibleTiles.ContainsKey(pathOnClick.Tile) && !possibleTiles[pathOnClick.Tile].Clickable)) { Action <TileSelectOption> tempSelectOption = selectionCallBack; selectionCallBack = null; BoardEntity tempSelectedEntity = selectedEntity; selectedEntity = null; ClearGlowPath(); foreach (Tile t in possibleTiles.Keys) { unHighlightMovableTile(t.GetComponentInChildren <PathOnClick>()); } if (tempSelectedEntity != null) { unGlow(tempSelectedEntity.GetTile()); } if (pathOnClick != null && possibleTiles.ContainsKey(pathOnClick.Tile)) { tempSelectOption(possibleTiles[pathOnClick.Tile]); } else { tempSelectOption(null); active = false; if (pathOnClick != null && tempSelectedEntity != null && pathOnClick != tempSelectedEntity.GetTile().PathOnClick&& !isMovement) { //pathOnClick.OnMouseUp(); } active = true; } isMovement = false; } } }
public void MoveBoardEntity(Position p, BoardEntity entity, bool move = true) { Tile oldTile = entity.GetTile(); Tile tile = GetTile(p); if (entity.GetTile().BoardEntity == entity) { entity.GetTile().SetBoardEntity(null); } entity.Position = p; if (entity.GetTile().BoardEntity == null) { entity.GetTile().SetBoardEntity(entity); } if (move) { entity.transform.position = entity.GetTile().transform.position; } if (entity is CharacterBoardEntity) { List <Passive> passivesTemp = ((CharacterBoardEntity)entity).Passives; foreach (Passive passive in passivesTemp) { passive.LeaveTile(oldTile); passive.EnterTile(tile); } foreach (TileListener listner in tile.TileListeners) { listner.TileEnter((CharacterBoardEntity)entity, tile); } } if (UpdatedBoardEntityPosition != null) { UpdatedBoardEntityPosition(); } }
public void ExecuteTurnHelper(Action callBack, BoardEntity ragedBy = null) { this.callBack = callBack; List <Move> moves = characterBoardEntity.MoveSet(); Skill skill = characterBoardEntity.BasicAttack; List <AiMove> aiMoves = new List <AiMove>(); Dictionary <Move, List <BoardEntity> > moveToTargets = new Dictionary <Move, List <BoardEntity> >(); moves.Add(new Move { destination = characterBoardEntity.GetTile() }); foreach (Move m in moves) { List <Tile> tiles = new List <Tile>(); if (skill.IsActive()) { tiles = skill.TileSetClickable(m.destination.Position); } List <BoardEntity> entities = new List <BoardEntity>(); // raged target must be the 'nearest' boardentity Position targetPosition; if (ragedBy != null) { targetPosition = ragedBy.GetTile().Position; } else { BoardEntity nearest = tileManager.NearestBoardEntity(m.destination.Position, Team.Player); if (nearest == null) { callBack(); return; } targetPosition = nearest.GetTile().Position; } float distance = targetPosition.GetDistance(m.destination.Position); int movementScore = m.path.Count; AiMove aiMove = new AiMove(int.MaxValue, (int)distance); if (m.destination != characterBoardEntity.GetTile()) { aiMove.AddMoveAction(characterBoardEntity, m, DoNextAction); } aiMoves.Add(aiMove); foreach (Tile t in tiles) { if (t.BoardEntity != null) { // must attack the raged target if there is one if ((ragedBy == null || ragedBy == t.BoardEntity) && !((CharacterBoardEntity)t.BoardEntity).IsStealthed()) { aiMove = new AiMove(targetScore(t.BoardEntity), 0); if (m.destination != characterBoardEntity.GetTile()) { aiMove.AddMoveAction(characterBoardEntity, m, DoNextAction); } aiMove.AddAttackAction(skill, t, (() => DoNextAction(false))); aiMoves.Add(aiMove); } } } moveToTargets[m] = entities; } aiMoves.RemoveAll((a) => a.ApCost > characterBoardEntity.Stats.GetMutableStat(AttributeStats.StatType.AP).Value); aiMoves.Sort(); actionQueue = aiMoves[0].Actions; DoNextAction(false); }
private void buildMoveOptions() { if (selectedBoardEntity is CharacterBoardEntity) { if (TurnManager.CurrentBoardEntity == selectedBoardEntity) { List <Move> moveSet = selectedBoardEntity.MoveSet(); List <TileSelectOption> options = new List <TileSelectOption>(); foreach (Move m in moveSet) { Stats displaystats = selectedBoardEntity.Stats.GetCopy(); displaystats.SubtractAPPoints(m.apCost); displaystats.SetMutableStat(StatType.Movement, m.movementPointsAfterMove); Color col = ApCostColors[0]; if (m.apCost < ApCostColors.Count) { col = ApCostColors[m.apCost]; } options.Add(new TileSelectOption() { Selection = m.destination, OnHover = m.path, HighlightColor = col, HoverColor = hoverColor, ReturnObject = m, OnHoverAction = ( () => { if (getHoverEntity() == null) { profile.PreviewMove(selectedBoardEntity, m); //profile.UpdateProfile(selectedBoardEntity, displaystats); } } ) }); } options.Add(new TileSelectOption() { Selection = selectedBoardEntity.GetTile(), HighlightColor = SelectColor, HoverColor = SelectColor, OnHoverAction = ( () => { if (getHoverEntity() == null) { profile.UpdateProfile(selectedBoardEntity); } }) }); tileSelectionManager.SelectTile(selectedBoardEntity, options, sendMoveToBoardEntity, isMovement: true, hoverExit: () => { if (hoverBoardEntity == null) { profile.UpdateProfile(selectedBoardEntity); } } ); skillSelector.SetBoardEntity((CharacterBoardEntity)selectedBoardEntity); skillSelector.SetSkills(((CharacterBoardEntity)selectedBoardEntity).Skills); } else { tileSelectionManager.SelectTile(selectedBoardEntity, new List <Move>(), sendMoveToBoardEntity, null, null); } } }