Example #1
0
        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));
        }
Example #2
0
        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);
        }
Example #3
0
        public static bool isCharacterInTile(GridPosition pos)
        {
            foreach (Character enemy in Character.allCharacters)
            {
                if (enemy.isAlive)
                {
                    if (pos.Equals(enemy.Position))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Example #4
0
        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
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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);
        }
Example #9
0
        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));
        }