public override void Update(GridPosition pos) { base.Update(pos); if (secondary != null) { return; } if (pos.Equals(Target.CurrentPosition)) { return; } int selecteddir = InputHandlerer.GetDirectionFromInput(); if (selecteddir == 1) { Target.PreviousTarget(); BattleUIContainer._instance.UnitView.SetDamagePreview(Character.GetCharacterAtTile(Target.CurrentPosition).stats, activator.stats); } else if (selecteddir == 3) { Target.NextTarget(); BattleUIContainer._instance.UnitView.SetDamagePreview(Character.GetCharacterAtTile(Target.CurrentPosition).stats, activator.stats); } GameManager._intance.StartCoroutine(GameManager.BlockInput(GameManager.controlsMode)); }
public static bool isOtherTeamInTile(GridPosition pos, Character chara) { foreach (Character enemy in Character.allCharacters) { if (enemy.isAlive && enemy != chara && enemy.TeamNumber != chara.TeamNumber) { if (pos.Equals(enemy.Position)) { return(true); } } } return(false); }
public static bool isCharacterInTile(GridPosition pos) { foreach (Character enemy in Character.allCharacters) { if (enemy.isAlive) { if (pos.Equals(enemy.Position)) { return(true); } } } return(false); }
public void DestroyBlock(GameTile tile) { GridPosition pos = FindTile(tile); if (pos.Equals(new GridPosition(-1, -1, -1))) { return; } layers[pos.z].Rows[pos.y].Tiles[pos.x] = null; #if UNITY_EDITOR UnityEditor.Undo.DestroyObjectImmediate(tile.gameObject); #else DestroyImmediate(tile.gameObject); #endif }
public static Character GetEnemyAtTile(GridPosition pos, Character chara) { if (pos == null) { return(null); } foreach (Character enemy in chara.GetAllEnemies()) { if (enemy.isAlive) { if (pos.Equals(enemy.Position)) { return(enemy); } } } return(null); }
public static Character GetCharacterAtTile(GridPosition pos) { if (pos == null) { return(null); } foreach (Character enemy in Character.allCharacters) { if (enemy.isAlive) { if (pos.Equals(enemy.Position)) { return(enemy); } } } return(null); }
public override void Update(GridPosition pos) { base.Update(pos); if (pos.Equals(Target.CurrentPosition)) { return; } RangeDisplayControls(); ViewControls(pos, false); GameManager._intance.StartCoroutine(GameManager.BlockInput(GameManager.controlsMode)); if (activeRange.Exists(item => item.Equals(pos))) { Cancel(); TurnManager._instance.RemoveCancel(this.Cancel); Target.isOutside = false; } }
public bool AddPath(GridPosition nextPos) { if (path.Count > 1) { if (nextPos.Equals(path.Last.Previous.Value)) { path.RemoveLast(); DrawPath(); return(true); } else if (ContainPoint(nextPos)) { Debug.Log("Contain point"); return(false); } } path.AddLast(nextPos); DrawPath(); return(true); }
public override void Update(GridPosition pos) { base.Update(pos); if (secondary != null) { return; } RangeDisplayControls(); if (pos.Equals(Target.CurrentPosition)) { return; } int selecteddir = InputHandlerer.GetDirectionFromInput(); if (pathDraw.GetPath().Count == 0) { activator.SetAnimatorDirection(selecteddir); } //Disable walking throught enemy if (pathDraw.GetPath().Count > 0) { if (Character.isOtherCharacterInTile(pathDraw.Last.Clone(), activator)) { if (pathDraw.GetPath().Count > 1) { if (!pathDraw.LastNode.Previous.Value.Equals(pos)) { GameManager._intance.StartCoroutine(GameManager.BlockInput(GameManager.controlsMode)); return; } } } } //Are we inside of character movement range if (currentMovementRange.Exists(item => item.Equals(pos))) { //Did we enter the movement range? if (!Target.isOutside) { Target.Clear(); bool characterInTile = Character.isCharacterInTile(pos); if (characterInTile) { Character chara = Character.GetCharacterAtTile(pos); if (chara != activator) { if (chara.TeamNumber != activator.TeamNumber && !activator.TurnActionsPreformed[0]) { if (pathDraw.AddPath(pos)) { AudioManager._instance.PlayClip("Click_Standard_03"); Target.Move(pos, Color.red); BattleUIContainer._instance.UnitView.SetDamagePreview(chara.stats, activator.stats); pathDraw.SetLastWaypointGraphic(Target.Indicator.gameObject); LastDirection = selecteddir; } } } else { //Return to same tiel as character pathDraw.Destroy(); Target.CurrentPosition = activator.Position; } } else { //No characters in tile if (pathDraw.AddPath(pos)) { AudioManager._instance.PlayClip("Click_Standard_03"); Target.CurrentPosition = pos.Clone(); LastDirection = selecteddir; } BattleUIContainer.RefreshUnitView(activator); BattleUIContainer._instance.UnitView.HideDamagePreview(); } } else { //If we return to walkarea from outside } } else { if (!Target.isOutside) { AudioManager._instance.PlayClip("Click_Standard_03"); secondary = new ViewAction(this, currentMovementRange); Target.Move(pos, Color.white); TurnManager._instance.AddCancel(secondary.Cancel); } //Move outside walkable range Target.isOutside = true; } GameManager._intance.StartCoroutine(GameManager.BlockInput(GameManager.controlsMode)); }