コード例 #1
0
    public void ClickOnActive(ActiveButton _active)
    {
        Unselection();
        selectedActive = _active;
        HeroPiece piece         = _active.Piece;
        Ability   activeAbility = piece.Hero.Active;

        if (activeAbility.Targetting == e_targetting.Default)
        {
            activeList.Add(board[piece.Position.x, piece.Position.y]);
            activeList = utility.GetRange(activeList, piece.Hero.Active);

            foreach (Square s in activeList)
            {
                s.HighLight(1);
            }
        }
        else if (activeAbility.Targetting == e_targetting.AutomaticTarget)
        {
            activeList.Add(board[piece.Position.x, piece.Position.y]);
            activeList = utility.GetRange(activeList, piece.Hero.Active);

            piece.ActivePower(activeList.ToArray());
            Unselection();
        }
        else
        {
            piece.ActivePower(null);
            Unselection();
        }
    }
コード例 #2
0
 public override void Use(Square[] _targets, HeroPiece _user)
 {
     for (int i = 0; i < Value; i++)
     {
         GameplayManager.Instance.DeckManager.DrawCard();
     }
 }
コード例 #3
0
    public void ClickOnBoard(Square _square)
    {
        if (step == e_step.Placement)
        {
            PlacementBoard(_square);
            return;
        }

        if (selectedPiece != null)
        {
            if (movementList.Contains(_square) && !_square.Occupied)
            {
                selectedPiece.NotifyMovement(_square, true);
                selectedPiece.HighLight(false);
                selectedPiece = null;
                Unselection();
            }
            else
            {
                Unselection();
            }
        }
        else if (selectedActive != null)
        {
            if (activeList.Contains(_square))
            {
                Square[] targets = new Square[] { _square };
                selectedActive.Piece.ActivePower(targets);

                Unselection();
            }
        }
    }
コード例 #4
0
    public void Unselection()
    {
        if (selectedPiece != null)
        {
            Square square = board[selectedPiece.Position.x, selectedPiece.Position.y];
            if (step != e_step.Placement)
            {
                selectedPiece.NotifyMovement(square, false);
            }
            else
            {
                MoveHeroPiece(selectedPiece.Index, square.Position, false);
            }

            selectedPiece.HighLight(false);
        }

        selectedPiece  = null;
        selectedActive = null;
        canUnselect    = false;
        toDrag         = null;

        movementList.Clear();
        attackList.Clear();
        activeList.Clear();

        if (step != e_step.Placement)
        {
            foreach (Square s in board)
            {
                s.UnHighLight();
            }
        }
    }
コード例 #5
0
 public virtual void Use(Square[] _targets, HeroPiece _user)
 {
     foreach (Effect f in Effects)
     {
         f.Use(_targets, _user);
     }
 }
コード例 #6
0
    public void Setup(HeroPiece _piece)
    {
        piece = _piece;
        transform.localScale = Vector3.zero;

        text.text = piece.Hero.Active.Cost.ToString();
        text.transform.localScale = Vector3.zero;
    }
コード例 #7
0
ファイル: HeroUI.cs プロジェクト: BourgoisAlexis/Katra_Heroes
    public void Setup(HeroPiece _piece, Color _color)
    {
        heroPiece = _piece;
        active.Setup(heroPiece);

        healthBar.color     = _color;
        healthBarText.color = _color;
    }
コード例 #8
0
    public void TargetHero(HeroPiece _piece)
    {
        Square square = utility.Board[_piece.Position.x, _piece.Position.y];

        if (inRange.Contains(square))
        {
            Square[] targets = new Square[] { square };
            selectedCard.Card.Use(targets, null);
            UsedCard();
        }
    }
コード例 #9
0
    public void ChangeOccupied(HeroPiece _piece)
    {
        piece = _piece;

        if (piece == null)
        {
            occupied = false;
        }
        else
        {
            occupied = true;
        }
    }
コード例 #10
0
    private void PlacementBoard(Square _square)
    {
        if (selectedPiece != null)
        {
            if (!_square.Occupied && _square.Team == gameplayManager.Team)
            {
                MoveHeroPiece(selectedPiece.Index, _square.Position, false);
                selectedPiece.HighLight(false);
                selectedPiece = null;
            }

            Unselection();
        }
    }
コード例 #11
0
    public override void Use(Square[] _targets, HeroPiece _user)
    {
        List <Square> targets = new List <Square>();

        targets.AddRange(_targets);
        targets = GameplayManager.Instance.Utility.GetAOE(targets, this);

        foreach (Square s in targets)
        {
            if (s.Piece != null)
            {
                s.Piece.NotifyStat(Stat, Value, Duration, Tick);
            }
        }
    }
コード例 #12
0
    public override void DragEnd()
    {
        base.DragEnd();

        Vector2 mousePos = mainCamera.ScreenToWorldPoint(Input.mousePosition);

        Collider2D[] cols = Physics2D.OverlapCircleAll(mousePos, 0.2f);

        HeroPiece _piece  = null;
        Square    _square = null;

        if (cols.Length > 1)
        {
            foreach (Collider2D c in cols)
            {
                if (c.GetComponent <HeroPiece>())
                {
                    if (c.GetComponent <HeroPiece>() != selectedPiece)
                    {
                        _piece = c.GetComponent <HeroPiece>();
                    }
                }
                else if (c.GetComponent <Square>())
                {
                    _square = c.GetComponent <Square>();
                }
            }

            if (_piece != null)
            {
                ClickOnHero(_piece);
            }
            else if (_square != null)
            {
                ClickOnBoard(_square);
            }
        }
        else
        {
            Unselection();
        }
    }
コード例 #13
0
    public void Decrease(HeroPiece _piece)
    {
        if (tick > 0)
        {
            tick--;
            _piece.ModifyStat(key, tickValue, buffDuration, tick);

            return;
        }

        if (buffDuration > 0)
        {
            buffDuration--;
        }

        if (key != e_stats.Health && tick == 0 && buffDuration == 0)
        {
            currentValue = baseValue;
        }
    }
コード例 #14
0
    private void CreateHeroPiece(int _heroIndex, e_teams _team, Vector2Int _position)
    {
        Square     start    = board[_position.x, _position.y];
        GameObject instance = Instantiate(heroePiecePrefab, start.transform.position, Quaternion.identity, null);
        HeroUI     ui       = gameplayManager.UIManager.CreateHeroUI();
        HeroPiece  piece    = instance.GetComponent <HeroPiece>();

        piece.Setup(gameplayManager.Data.Heroes[_heroIndex], _team, pieces.Count, _position, ui);
        start.ChangeOccupied(instance.GetComponent <HeroPiece>());

        if (gameplayManager.Team == _team)
        {
            gameplayManager.OnYourTurn += piece.TurnDebute;
        }
        else
        {
            gameplayManager.OnEnnemyTurn += piece.TurnDebute;
        }

        pieces.Add(piece);
    }
コード例 #15
0
    //Placement
    private void PlacementHero(HeroPiece _piece)
    {
        if (selectedPiece != null)
        {
            if (_piece == selectedPiece)
            {
                canUnselect = true;
            }
            else if (_piece != selectedPiece)
            {
                Unselection();
            }
        }
        else if (_piece.Team == gameplayManager.Team)
        {
            Unselection();

            ClickDrag(_piece.transform);
            selectedPiece = _piece;
            selectedPiece.HighLight(true);
            canUnselect = false;
        }
    }
コード例 #16
0
    public override void Use(Square[] _targets, HeroPiece _user)
    {
        Square desti = _targets[0];

        if (desti == null)
        {
            return;
        }

        if (Effect == e_positionEffects.Teleport)
        {
            HeroPiece piece = desti.Piece;

            piece.NotifyMovement(board[_user.Position.x, _user.Position.y], false);
            _user.NotifyMovement(desti, false);
        }

        else
        {
            Vector2Int direction = desti.Position - _user.Position;
            int        x         = direction.x != 0 ? (int)Mathf.Sign(direction.x) : 0;
            int        y         = direction.y != 0 ? (int)Mathf.Sign(direction.y) : 0;
            direction = new Vector2Int(x, y);


            if (Effect == e_positionEffects.Push)
            {
                Square square = utility.GetFinalSquareInDirection(desti, direction, Distance + 1);
                desti.Piece.NotifyMovement(square, false);
            }
            else if (Effect == e_positionEffects.Pull)
            {
                Square square = utility.GetFinalSquareInDirection(desti, -direction, Distance + 1);
                desti.Piece.NotifyMovement(square, false);
            }
        }
    }
コード例 #17
0
    public void RemoveHeroPiece(HeroPiece _piece)
    {
        board[_piece.Position.x, _piece.Position.y].ChangeOccupied(null);
        pieces[_piece.Index] = null;

        if (_piece.Team == gameplayManager.Team)
        {
            gameplayManager.OnYourTurn -= _piece.TurnDebute;

            foreach (HeroPiece p in pieces)
            {
                if (p != null && p.Team == gameplayManager.Team)
                {
                    return;
                }
            }

            gameplayManager.OnlineManager.Defeat();
        }
        else
        {
            gameplayManager.OnEnnemyTurn -= _piece.TurnDebute;
        }
    }
コード例 #18
0
    protected override void Down()
    {
        GameObject ui  = DetectUI(Input.mousePosition);
        GameObject col = DetectCollider(Input.mousePosition);

        //UIs
        CardPiece    _card   = null;
        ActiveButton _active = null;

        if (ui != null)
        {
            _card   = ui.GetComponent <CardPiece>();
            _active = ui.GetComponent <ActiveButton>();

            ui.GetComponent <Clickable>()?.Onclick();
        }

        //Colliders
        HeroPiece _piece  = null;
        Square    _square = null;

        if (col != null)
        {
            _piece  = col.GetComponent <HeroPiece>();
            _square = col.GetComponent <Square>();

            col.GetComponent <Clickable>()?.Onclick();
        }

        //Steps
        if (step == e_step.Placement)
        {
            if (_piece != null)
            {
                boardManager.ClickOnHero(_piece);
            }
            else if (_square != null)
            {
                boardManager.ClickOnBoard(_square);
            }
        }

        else if (step == e_step.Card)
        {
            if (_card != null)
            {
                deckManager.ClickOnCard(_card);
            }
            else
            {
                UnselectAll();
            }
        }

        else if (step == e_step.UseCard)
        {
            if (_piece != null)
            {
                deckManager.TargetHero(_piece);
            }
            else if (_square != null)
            {
                deckManager.TargetBoard(_square);
            }
        }

        else if (step == e_step.Board)
        {
            if (_active != null && _active.Piece.Team == team && _active.CheckMana() && _active.Piece.CanActive > 0)
            {
                boardManager.ClickOnActive(_active);
            }
            else if (_piece != null)
            {
                boardManager.ClickOnHero(_piece);
            }
            else if (_square != null)
            {
                boardManager.ClickOnBoard(_square);
            }
            else
            {
                UnselectAll();
            }
        }

        else if (step == e_step.Ennemy)
        {
            if (_piece != null)
            {
                //Afficher les stats quand ce sera fait
            }
            else if (_card != null)
            {
                //Afficher les stats quand ce sera fait
            }
        }
    }
コード例 #19
0
ファイル: Effect.cs プロジェクト: BourgoisAlexis/Katra_Heroes
 public virtual void Use(Square[] _targets, HeroPiece _user)
 {
 }
コード例 #20
0
    //InGame
    public void ClickOnHero(HeroPiece _piece)
    {
        if (step == e_step.Placement)
        {
            PlacementHero(_piece);
            return;
        }

        if (selectedActive != null)
        {
            if (_piece == selectedActive.Piece)
            {
                Unselection();
            }
            else
            {
                Square square = board[_piece.Position.x, _piece.Position.y];
                if (activeList.Contains(square))
                {
                    Square[] targets = new Square[] { square };
                    selectedActive.Piece.ActivePower(targets);

                    Unselection();
                }
            }
        }
        else if (selectedPiece != null)
        {
            if (_piece == selectedPiece)
            {
                canUnselect = true;
            }
            else if (_piece.Team != gameplayManager.Team)
            {
                Square square = board[_piece.Position.x, _piece.Position.y];
                if (attackList.Contains(square))
                {
                    if (selectedPiece.CanMove > 0)
                    {
                        selectedPiece.NotifyMovement(AttackPath(square), true);
                    }

                    Square[] targets = new Square[] { square };
                    selectedPiece.Attack(targets);
                    selectedPiece.HighLight(false);
                    selectedPiece = null;
                }
                Unselection();
            }
            else if (_piece != selectedPiece)
            {
                Unselection();
            }
        }
        else if (_piece.Team == gameplayManager.Team)
        {
            if (_piece.CanMove > 0 || _piece.CanAct > 0)
            {
                Unselection();
                selectedPiece = _piece;
                selectedPiece.HighLight(true);
                canUnselect = false;
                ClickDrag(_piece.transform);

                Ability    atck = selectedPiece.Hero.Attack;
                EffectStat ef   = (EffectStat)atck.Effects[0];

                ef.Value         = -selectedPiece.Stats[e_stats.Damage].CurrentValue;
                atck.Range       = selectedPiece.Stats[e_stats.Range].CurrentValue;
                atck.GetOccupied = true;

                Ability             mov    = selectedPiece.Hero.Move;
                List <e_squareType> exceps = new List <e_squareType>();
                if (selectedPiece.Hero.Fly == false)
                {
                    exceps.Add(e_squareType.Obstacle);
                }

                mov.Range       = selectedPiece.Stats[e_stats.Speed].CurrentValue;
                mov.GetOccupied = false;
                mov.Exceptions  = exceps;

                HighlightHeroRanges();
            }
        }
    }