Example #1
0
 public HoverArgs(CaseData hoveredCase, PersoData hoveredPersonnage, PathfindingCase Pathfinding, BallonData hoveredBallon)
 {
     this.hoveredCase       = hoveredCase;
     this.hoveredPersonnage = hoveredPersonnage;
     this.Pathfinding       = Pathfinding;
     this.hoveredBallon     = hoveredBallon;
 }
Example #2
0
    // ************* //
    // ** Trigger ** //
    // ************* //

    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Personnage")
        {
            if (col.gameObject.GetComponent <PersoData>().persoCase != thisCase)
            {
                TransparencyBehaviour.CheckTransparency(col.gameObject, 1f);
                personnageData  = col.gameObject.GetComponent <PersoData>();
                casePathfinding = PathfindingCase.NonWalkable;
                col.gameObject.GetComponent <PersoData>().persoCase = thisCase;
                TransparencyBehaviour.CheckTransparency(col.gameObject, 0.5f);
            }
        }

        if (col.tag == "Ballon")
        {
            if (col.gameObject.GetComponent <BallonData> ().ballonCase != thisCase)
            {
                TransparencyBehaviour.CheckTransparency(col.gameObject, 1f);
                ballon          = col.gameObject.GetComponent <BallonData>();
                casePathfinding = PathfindingCase.NonWalkable;
                col.gameObject.GetComponent <BallonData>().ballonCase = thisCase;
                TransparencyBehaviour.CheckTransparency(col.gameObject, 0.5f);
                col.gameObject.GetComponent <BallonData>().xCoord = xCoord;
                col.gameObject.GetComponent <BallonData>().yCoord = yCoord;
            }

            if (winCase != Player.Neutral)
            {
                StartCoroutine(UIManager.Instance.ScoreChange(winCase));
            }
        }
    }
Example #3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        CaseData  coll  = collision.transform.GetComponent <CaseData>();
        PersoData perso = collision.transform.GetComponent <PersoData>();

        if (coll != null)
        {
            if (coll.caseElement == Element.Feu)
            {
                AirScript.Instance.airEffect.SetActive(false);
                AirScript.Instance.fireAirEffect.transform.position = coll.transform.position;
                AirScript.Instance.fireAirEffect.SetActive(true);
                //     coll.changeElement(Element.Aucun);
                transform.parent.gameObject.SetActive(false);
            }
        }
        else if (perso != null)
        {
            if (targetPosition.node == null) // pas de target = pas de tp
            {
                return;
            }
            perso.transform.position = targetPosition.transform.position + new Vector3(0, GraphManager.Instance.getCaseOffset(perso.gameObject), 0);
            AirScript.Instance.airEffect.SetActive(false);
        }
    }
Example #4
0
    // *************** //
    // ** Tacle ** //
    // *************** //

    IEnumerator TackleEffect(PersoData punchingPersonnage, Transform path, float offsetY)
    { // Effet visuel à chaque fois que le personnage se déplaçant se fait taclé
        if (punchingPersonnage.GetComponent <BoxCollider2D>().enabled != false)
        {
            punchingPersonnage.GetComponent <BoxCollider2D>().enabled = false;

            Vector3 startPos = punchingPersonnage.transform.position;

            float fracturedTime = 0;
            float timeUnit      = tackleAnimTime / 60;

            while (fracturedTime < 2)
            {
                fracturedTime += timeUnit + 0.01f;
                punchingPersonnage.transform.position = Vector3.Lerp(startPos, path.position + new Vector3(0, offsetY, 0), fracturedTime);
                yield return(new WaitForEndOfFrame());
            }

            fracturedTime = 0;

            while (fracturedTime < 2)
            {
                fracturedTime += timeUnit + 0.01f;
                punchingPersonnage.transform.position = Vector3.Lerp(path.position + new Vector3(0, offsetY, 0), startPos, fracturedTime);
                yield return(new WaitForEndOfFrame());
            }
            punchingPersonnage.GetComponent <BoxCollider2D>().enabled = true;
        }
    }
Example #5
0
    void Start()
    {
        GameObject persoCreated;

        listHeroJXToPlace.Add(new List <PersoData>());
        listHeroJXToPlace.Add(new List <PersoData>());
        foreach (PersoData obj in listHeroJ1)
        {
            persoCreated = (GameObject)Instantiate(obj.gameObject, new Vector3(999, 999, 999), Quaternion.identity);
            persoCreated.GetComponent <PersoData>().owner = Player.Red;
            listHeroJXToPlace[0].Add(persoCreated.GetComponent <PersoData>());
        }

        foreach (PersoData obj in listHeroJ2)
        {
            persoCreated = (GameObject)Instantiate(obj.gameObject, new Vector3(999, 999, 999), Quaternion.identity);
            persoCreated.GetComponent <PersoData>().owner = Player.Blue;
            listHeroJXToPlace[1].Add(persoCreated.GetComponent <PersoData>());
        }

        listHeroJ1.Clear();
        listHeroJ2.Clear();
        listHero.AddRange(listHeroJXToPlace[0]);
        listHero.AddRange(listHeroJXToPlace[1]);
    }
Example #6
0
    public void Deselect(Phase currentPhase, Player currentPlayer)
    {
        MoveBehaviour.Instance.HidePath();
        MoveBehaviour.Instance.pathes.Clear();
        GameManager.Instance.actualAction = PersoAction.isSelected;
        CaseManager.Instance.StartCoroutine("ShowActions");

        if (selectedLastCase != null)
        {
            if (currentPhase == Phase.Placement)
            {
                selectedLastCase.ChangeColor(Statut.None, Statut.isSelected);
            }
            else
            {
                selectedLastCase.ChangeColor(Statut.None, Statut.isSelected);
            }
        }
        selectedPersonnage = null;
        selectedCase       = null;

        if (currentPhase == Phase.Placement)
        {
            PlacementBehaviour.Instance.NextToPlace(TurnManager.Instance.currentPhase, TurnManager.Instance.currentPlayer);
        }
    }
Example #7
0
    public void HoverPerso() // hover comme chez HoverEvent
    {
        CaseData        hoveredCase        = newHoveredPersonnage.persoCase;
        PersoData       hoveredPersonnage  = newHoveredPersonnage;
        PathfindingCase hoveredPathfinding = newHoveredPersonnage.persoCase.casePathfinding;

        HoverEvent.newHoverEvent(this, new HoverArgs(hoveredCase, hoveredPersonnage, hoveredPathfinding, null));
    }
Example #8
0
 public void ResetSelection(Color caseColor)
 {
     if (selectedCase != null)
     {
         selectedCase.ChangeColor(Statut.None, Statut.isSelected);
     }
     selectedCase       = null;
     selectedPersonnage = null;
 }
Example #9
0
    // ************* //
    // ** Actions ** //
    // ************* //

    void ChangeUI()
    {// à chaque click, l'UI change de tel ou tel manière
        if (SelectionManager.Instance.selectedPersonnage != null)
        {
            characterList.Clear();

            IsVisible(true);

            PersoData      selectedPersoData      = SelectionManager.Instance.selectedPersonnage.GetComponent <PersoData>();
            SpriteRenderer selectedSpriteRenderer = SelectionManager.Instance.selectedPersonnage.GetComponent <SpriteRenderer>();

            infoPersoPortraits.GetComponent <infoPersoPortraits>().Clear();

            if (GameObject.FindGameObjectsWithTag("Personnage") == null)
            {
                return;
            }

            foreach (PersoData perso in RosterManager.Instance.listHero)
            {
                if (perso.GetComponent <PersoData>().owner == selectedPersoData.owner)
                {
                    characterList.Add(perso);
                }
            }

            infoPersoPortraits.GetComponent <infoPersoPortraits>().setMainPortrait(selectedSpriteRenderer.sprite, selectedPersoData.owner);

            characterList.Remove(SelectionManager.Instance.selectedPersonnage);
            if (characterList.Count > 0)
            {
                infoPersoPortraits.GetComponent <infoPersoPortraits>().setSubPortrait1(characterList[0].GetComponent <SpriteRenderer>().sprite, characterList[0].GetComponent <PersoData>().owner);
            }
            infoPersoPortraits.GetComponent <infoPersoPortraits>().SubPortrait1.GetComponent <PortraitInteractive>().newHoveredPersonnage = characterList[0];
            if (characterList.Count > 1)
            {
                infoPersoPortraits.GetComponent <infoPersoPortraits>().setSubPortrait2(characterList[1].GetComponent <SpriteRenderer>().sprite, characterList[1].GetComponent <PersoData>().owner);
            }
            infoPersoPortraits.GetComponent <infoPersoPortraits>().SubPortrait2.GetComponent <PortraitInteractive>().newHoveredPersonnage = characterList[1];
            if (characterList.Count > 2)
            {
                infoPersoPortraits.GetComponent <infoPersoPortraits>().setSubPortrait3(characterList[2].GetComponent <SpriteRenderer>().sprite, characterList[2].GetComponent <PersoData>().owner);
            }
            infoPersoPortraits.GetComponent <infoPersoPortraits>().SubPortrait3.GetComponent <PortraitInteractive>().newHoveredPersonnage = characterList[2];

            infoPersoStats.GetComponent <infoPersoStats>().changePr(selectedPersoData.actualPointResistance, selectedPersoData.pointResistance);
            infoPersoStats.GetComponent <infoPersoStats>().changePm(selectedPersoData.actualPointMovement, selectedPersoData.pointMovement);
            infoPersoStats.GetComponent <infoPersoStats>().changePo(selectedPersoData.actualPointResistance, selectedPersoData.pointResistance);
        }
        else
        {
            //  GetComponent<Image>().color = noneOwnerColor;
            IsVisible(false);
        }
    }
Example #10
0
    public void SelectPerso(CaseData hoveredCase, PersoData hoveredPersonnage, Color selectedColor, Phase currentPhase, Player currentPlayer, PersoAction actualAction)
    {
        Deselect(currentPhase, currentPlayer);
        selectedCase       = hoveredCase;
        selectedPersonnage = hoveredPersonnage;

        selectedCase.caseColor = selectedColor;
        selectedCase.ChangeColor(Statut.isSelected);
        GameManager.Instance.actualAction = PersoAction.isSelected;
        CaseManager.Instance.StartCoroutine("ShowActions");
    }
Example #11
0
    IEnumerator Deplacement(Color caseColor, float offsetY, PersoData selectedPersonnage)
    { // On déplace le personnage de case en case jusqu'au click du joueur propriétaire, et entre temps on check s'il est taclé ou non
        TurnManager.Instance.DisableFinishTurn();

        selectedPersonnage.GetComponent <PersoData>().movePath = pathes;
        GameManager.Instance.actualAction = PersoAction.isMoving;

        foreach (Transform path in pathes)
        {
            if (selectedPersonnage.isTackled)
            {
                path.GetComponent <CaseData>().ChangeColor(Statut.isTackled, Statut.isMoving);
            }
            else
            {
                Vector3 startPos      = SelectionManager.Instance.selectedPersonnage.transform.position;
                float   fracturedTime = 0;
                float   timeUnit      = travelTime / 60;

                selectedPersonnage.RotateTowards(path.transform.position);

                while (selectedPersonnage.transform.position != path.transform.position + new Vector3(0, offsetY, 0))
                {
                    fracturedTime += timeUnit + 0.01f;
                    selectedPersonnage.transform.position = Vector3.Lerp(startPos, path.transform.position + new Vector3(0, offsetY, 0), fracturedTime);
                    yield return(new WaitForEndOfFrame());
                }
                SelectionManager.Instance.selectedCase = path.gameObject.GetComponent <CaseData>();
                path.GetComponent <CaseData>().ChangeColor(Statut.None, Statut.isMoving);
                TackleBehaviour.Instance.CheckTackle(selectedPersonnage.gameObject);
            }
        }
        SelectionManager.Instance.selectedCase = pathes[pathes.Count - 1].gameObject.GetComponent <CaseData>();
        SelectionManager.Instance.selectedCase.GetComponent <CaseData>().ChangeColor(Statut.None, Statut.isMoving);
        GameManager.Instance.actualAction = PersoAction.isSelected;

        if (!selectedPersonnage.isTackled)
        {
            SelectionManager.Instance.selectedCase.GetComponent <CaseData>().casePathfinding = PathfindingCase.NonWalkable;
            SelectionManager.Instance.selectedPersonnage.actualPointMovement -= pathes.Count - 1;
            pathes.Clear();
        }
        else
        {
            selectedPersonnage.isTackled = false;
            SelectionManager.Instance.selectedPersonnage.actualPointMovement = 0;
            pathes.Clear();
        }

        TurnManager.Instance.StartCoroutine("EnableFinishTurn");
        CaseManager.Instance.StartCoroutine("ShowActions");
        yield return(new WaitForEndOfFrame());
    }
Example #12
0
    // ************* //
    // ** Actions ** //
    // ************* //

    void changeColorEnter()
    { // Change la couleur de la case qui est sur le curseur
        Player      currentPlayer      = GameManager.Instance.currentPlayer;
        Phase       currentPhase       = GameManager.Instance.currentPhase;
        Color       actionColor        = ColorManager.Instance.actionColor;
        Color       moveColor          = ColorManager.Instance.moveColor;
        PersoData   selectedPersonnage = SelectionManager.Instance.selectedPersonnage;
        Color       hoverColor         = ColorManager.Instance.hoverColor;
        PersoAction actualAction       = GameManager.Instance.actualAction;

        switch (currentPhase)
        {
        case (Phase.Placement):
            hoveredCase.GetComponent <CaseData>().ChangeColor(Statut.isHovered);
            break;

        case (Phase.Deplacement):
            if (SelectionManager.Instance.selectedPersonnage != null)
            {
                MoveBehaviour.Instance.HidePath();
                if (hoveredPersonnage != null &&
                    hoveredPersonnage.GetComponent <PersoData>().owner != currentPlayer &&
                    Fonction.Instance.CheckAdjacent(selectedPersonnage.gameObject, hoveredPersonnage.gameObject) == true)
                {
                    //          hoveredCase.GetComponent<CaseData>().ChangeColor(actionColor);
                }

                if (hoveredPersonnage != null &&
                    hoveredPersonnage.GetComponent <PersoData>().owner == currentPlayer)
                {
                    //     hoveredCase.GetComponent<CaseData>().ChangeColor(actionColor);
                }

                if (hoveredBallon != null &&
                    Fonction.Instance.CheckAdjacent(selectedPersonnage.gameObject, hoveredBallon.gameObject) == true)
                {
                    //   hoveredCase.GetComponent<CaseData>().ChangeColor(actionColor);
                }

                if (hoveredCase.GetComponent <CaseData>().casePathfinding == PathfindingCase.Walkable &&
                    actualAction == PersoAction.isSelected)
                {
                    MoveBehaviour.Instance.createPath();

                    if (hoveredLastCase != hoveredCase)
                    {
                        Pathfinding.Instance.StartPathfinding();
                    }
                }
            }
            break;
        }
    }
Example #13
0
    void OnMouseOver()
    {
        if (!enabled)
        {
            return;
        }
        hoveredCase        = this.GetComponent <CaseData>();
        hoveredPersonnage  = GetComponent <CaseData> ().personnageData;
        hoveredPathfinding = GetComponent <CaseData> ().casePathfinding;
        hoveredBallon      = GetComponent <CaseData> ().ballon;

        newHoverEvent(this, new HoverArgs(hoveredCase, hoveredPersonnage, hoveredPathfinding, hoveredBallon));
    }
Example #14
0
    public IEnumerator Punch(PersoData hoveredPersonnage)
    {
        SelectionManager.Instance.selectedPersonnage.GetComponent <PersoData> ().pointAction--;
        punchedPersonnage = hoveredPersonnage;
        punchedPersonnage.actualPointResistance--;
        Color punchedPersonnageColor = punchedPersonnage.GetComponent <SpriteRenderer> ().color;

        punchedPersonnage.GetComponent <SpriteRenderer> ().color = new Color(1, 1, 0);

        for (int i = 100; i > 0; i = i - 10)
        {
            yield return(new WaitForSeconds(0.01f));

            punchedPersonnage.GetComponent <SpriteRenderer> ().color = new Color((0.01f * i) + (punchedPersonnageColor.r - (0.01f * i)), (0.01f * i) + (punchedPersonnageColor.g - (0.01f * i)), 0 + (punchedPersonnageColor.b - (0.01f * i)));
        }
    }
Example #15
0
    public void OnNewClick()
    { // Lors d'un click sur une case
        Phase       currentPhase       = TurnManager.Instance.currentPhase;
        BallonData  hoveredBallon      = HoverManager.Instance.hoveredBallon;
        PersoData   selectedPersonnage = SelectionManager.Instance.selectedPersonnage;
        PersoAction actualAction       = GameManager.Instance.actualAction;

        if (currentPhase == Phase.Deplacement &&
            selectedPersonnage != null &&
            hoveredBallon != null &&
            actualAction == PersoAction.isSelected)
        {
            if (Fonction.Instance.CheckAdjacent(hoveredBallon.gameObject, selectedPersonnage.gameObject) == true)
            {
                ShotMenu();
            }
        }
    }
Example #16
0
 public void ChangePersoPosition(CaseData hoveredCase, PersoData hoveredPersonnage, float offsetY)
 { // Change la position d'un personnage déjà placer vers la case où a cliqué le joueur possesseur.
     if (hoveredCase.GetComponent <CaseData>().casePathfinding == PathfindingCase.Walkable || hoveredPersonnage != null)
     {
         SelectionManager.Instance.selectedCase           = hoveredCase;
         SelectionManager.Instance.selectedLastPersonnage = SelectionManager.Instance.selectedPersonnage;
         SelectionManager.Instance.selectedLastPersonnage.transform.position = SelectionManager.Instance.selectedCase.transform.position + new Vector3(0, offsetY, 0);
         if (hoveredPersonnage != null && SelectionManager.Instance.selectedLastCase != null)
         {
             SelectionManager.Instance.selectedPersonnage = hoveredPersonnage;
             SelectionManager.Instance.selectedPersonnage.transform.position = SelectionManager.Instance.selectedLastCase.transform.position + new Vector3(0, offsetY, 0);
         }
         else
         {
             SelectionManager.Instance.selectedPersonnage = hoveredPersonnage;
         }
     }
     SelectionManager.Instance.Deselect(TurnManager.Instance.currentPhase, TurnManager.Instance.currentPlayer);
 }
Example #17
0
    public void OnNewClick()
    {
        PersoData   hoveredPersonnage  = HoverManager.Instance.hoveredPersonnage;
        Phase       currentPhase       = TurnManager.Instance.currentPhase;
        Player      currentPlayer      = TurnManager.Instance.currentPlayer;
        PersoAction actualAction       = GameManager.Instance.actualAction;
        PersoData   selectedPersonnage = SelectionManager.Instance.selectedPersonnage;

        if (actualAction == PersoAction.isSelected &&
            currentPhase == Phase.Deplacement &&
            selectedPersonnage != null &&
            hoveredPersonnage != null &&
            hoveredPersonnage.GetComponent <PersoData>().owner != currentPlayer &&
            selectedPersonnage.GetComponent <PersoData>().pointAction != 0 &&
            Fonction.Instance.CheckAdjacent(selectedPersonnage.gameObject, hoveredPersonnage.gameObject) == true)
        {
            Punch(HoverManager.Instance.hoveredPersonnage);
        }
    }
Example #18
0
    public void TirReplacerBalle()
    {
        PersoData   selectedPersonnage = SelectionManager.Instance.selectedPersonnage;
        CaseData    hoveredCase        = HoverManager.Instance.hoveredCase;
        PersoAction actualAction       = GameManager.Instance.actualAction;
        BallonData  selectedBallon     = SelectionManager.Instance.selectedBallon;

        if (actualAction == PersoAction.isReplacingBall &&
            caseAction.Count != 0)
        {
            if (caseAction.Contains(hoveredCase))
            {
                selectedBallon.transform.position = hoveredCase.transform.position;
                hoveredCase.GetComponent <CaseData>().ChangeColor(Statut.canReplace);
                StartCoroutine(ReplacerBalleEnd());
                return;
            }
            StartCoroutine(ReplacerBalleEnd());
            selectedPersonnage.GetComponent <PersoData> ().actualPointMovement++;
        }
    }
Example #19
0
    // ************ //
    // ** Events ** //
    // ************ //

    void OnNewHover(object sender, HoverArgs e)
    { // Curseur se trouve sur une case ou quitte une case
        if (hoveredLastCase == null || hoveredLastCase != hoveredCase)
        {
            hoveredLastCase = hoveredCase;
        }

        if (hoveredCase != null)
        {
            changeColorExit(GameManager.Instance.currentPhase);
        }
        Debug.Log(hoveredCase);
        Debug.Log(hoveredLastCase);

        hoveredPersonnage  = e.hoveredPersonnage;
        hoveredCase        = e.hoveredCase;
        hoveredPathfinding = e.Pathfinding;
        hoveredBallon      = e.hoveredBallon;

        changeColorEnter();
        CheckIfAction();
    }
Example #20
0
    void OnTriggerExit2D(Collider2D col)
    {
        if (col.tag == "Personnage" &&
            col.gameObject.GetComponent <BoxCollider2D>().enabled == true &&
            GetComponent <PolygonCollider2D>().enabled == true)
        {
            personnageData  = null;
            casePathfinding = PathfindingCase.Walkable;
            ChangeColor(Statut.None, Statut.isSelected);
            ChangeColor(Statut.None, Statut.isAllyPerso);
        }

        if (col.tag == "Ballon" &&
            col.gameObject.GetComponent <BoxCollider2D>().enabled == true &&
            GetComponent <PolygonCollider2D>().enabled == true)
        {
            TransparencyBehaviour.CheckTransparency(col.gameObject, 1f);
            ballon          = null;
            casePathfinding = PathfindingCase.Walkable;
            ChangeColor(Statut.None, Statut.canShot);
        }
    }
Example #21
0
    void CreatePersoPlacement(CaseData hoveredCase, float offsetY, PersoData selectedPersonnage)
    { //
        if (SelectionManager.Instance.selectedPersonnage != null)
        {
            selectedPersonnage.transform.position = hoveredCase.transform.position + new Vector3(0, offsetY, 0);
            selectedPersonnage.owner = TurnManager.Instance.currentPlayer;
            selectedPersonnage.ChangeColor();
            RosterManager.Instance.listHeroPlaced.Add(selectedPersonnage);

            if (selectedPersonnage.GetComponent <PersoData>().owner == Player.Red)
            {
                selectedPersonnage.GetComponent <PersoData>().ChangeRotation(Direction.SudEst);
                // mettre icone perso rouge
            }
            else
            {
                selectedPersonnage.GetComponent <PersoData>().ChangeRotation(Direction.NordOuest);
                // mettre icone perso bleu
            }

            SelectionManager.Instance.Deselect(TurnManager.Instance.currentPhase, TurnManager.Instance.currentPlayer);
        }
    }
Example #22
0
    public IEnumerator Move()
    {
        CaseData  hoveredCase        = HoverManager.Instance.hoveredCase;
        PersoData selectedPersonnage = SelectionManager.Instance.selectedPersonnage;

        GameManager.Instance.actualAction = PersoAction.isShoting;
        TurnManager.Instance.DisableFinishTurn();
        MenuManager.Instance.isShoting = true;

        GameObject nextPosition;

        animator.SetTrigger("Roule");
        isMoving     = true;
        offsetBallon = new Vector2(0, 0);
        float xCoordNext = hoveredCase.GetComponent <CaseData>().xCoord;
        float yCoordNext = hoveredCase.GetComponent <CaseData>().yCoord;

        xCoordInc = 0;
        yCoordInc = 0;
        transform.localRotation = Quaternion.Euler(0, 0, 0);
        Debug.Log(selectedPersonnage.transform.position + " " + transform.position);

        if (selectedPersonnage.transform.position.x > transform.position.x)
        {
            xCoordInc -= 0.5f;
            yCoordInc -= 0.5f;
        }
        else if (selectedPersonnage.transform.position.x < transform.position.x)
        {
            xCoordInc += 0.5f;
            yCoordInc += 0.5f;
        }

        if (selectedPersonnage.transform.position.y - 0.5f > transform.position.y)
        {
            xCoordInc += 0.5f;
            yCoordInc -= 0.5f;
        }
        else if (selectedPersonnage.transform.position.y - 0.5f < transform.position.y)
        {
            xCoordInc -= 0.5f;
            yCoordInc += 0.5f;
        }
        for (int i = 0; i < ballStrenght; i++)
        {
            if ((BallonStatut.isIntercepted & statut) == BallonStatut.isIntercepted)
            {
                ChangeStatut(BallonStatut.None, BallonStatut.isIntercepted);
                break;
            }
            xCoordNext += xCoordInc;
            yCoordNext += yCoordInc;
            if (GameObject.Find(xCoordNext.ToString() + " " + yCoordNext.ToString()) != null)
            {
                nextPosition = GameObject.Find(xCoordNext.ToString() + " " + yCoordNext.ToString());
                if (nextPosition.GetComponent <CaseData>().casePathfinding == PathfindingCase.NonWalkable)
                {
                    if (!canRebond)
                    {
                        break;
                    }
                    nextPosition = GameObject.Find(xCoordNext.ToString() + " " + yCoordNext.ToString());
                }
            }
            else
            {
                if (!canRebond)
                {
                    goto endMove;
                }
                xCoordInc    = -xCoordInc;
                yCoordInc    = -yCoordInc;
                xCoordNext  += xCoordInc;
                yCoordNext  += yCoordInc;
                nextPosition = GameObject.Find(xCoordNext.ToString() + " " + yCoordNext.ToString());
            }

            if (xCoordNext == ballonCase.GetComponent <CaseData>().xCoord)
            {
                if (yCoordNext < ballonCase.GetComponent <CaseData>().yCoord)
                {
                    ballonDirection = Direction.SudOuest;
                }
                else
                {
                    ballonDirection = Direction.NordEst;
                }
            }
            else if (yCoordNext == ballonCase.GetComponent <CaseData>().yCoord)
            {
                if (xCoordNext < ballonCase.GetComponent <CaseData>().xCoord)
                {
                    ballonDirection = Direction.NordOuest;
                }
                else
                {
                    ballonDirection = Direction.SudEst;
                }
            }
            ChangeRotation();
            Vector3 startPos      = transform.position;
            float   fracturedTime = 0;
            float   timeUnit      = travelTimeBallon / 60;
            while (transform.position != nextPosition.transform.position)
            {
                fracturedTime     += timeUnit + 0.01f;
                transform.position = Vector3.Lerp(startPos, nextPosition.transform.position, fracturedTime);
                yield return(new WaitForEndOfFrame());
            }
            TackleBehaviour.Instance.CheckTackle(this.gameObject, selectedPersonnage);
        }
endMove:
        isMoving = false;
        GameManager.Instance.actualAction = PersoAction.isSelected;
        animator.ResetTrigger("Roule");
        animator.SetTrigger("Idle");
        CaseManager.Instance.StartCoroutine("ShowActions");
        TurnManager.Instance.EnableFinishTurn();
    }
Example #23
0
    // *************** //
    // ** Checkers ** //
    // *************** //

    public void CheckTackle(GameObject movingObj, PersoData shotingPersonnage = null)
    { // Vérifie si le personnage peut être taclé, et si c'est le cas, fait un test de chance pour savoir s'il est taclé
        Transform path          = SelectionManager.Instance.selectedCase.transform;
        Player    currentPlayer = TurnManager.Instance.currentPlayer;
        float     xCaseOffset   = CaseManager.Instance.xCaseOffset;
        float     yCaseOffset   = CaseManager.Instance.yCaseOffset;

        foreach (PersoData obj in RosterManager.Instance.listHeroPlaced)
        {
            if (movingObj != null && obj != shotingPersonnage)
            {
                if (obj != movingObj && Fonction.Instance.CheckAdjacent(obj.gameObject, movingObj.gameObject) == true)
                {
                    int randomInt = UnityEngine.Random.Range(0, 100);

                    switch (movingObj.name)
                    {
                    case ("Ballon"):
                        path = movingObj.GetComponent <BallonData>().ballonCase.transform;
                        StartCoroutine(TackleEffect(obj, path, GraphManager.Instance.getCaseOffset(obj.gameObject)));
                        if (randomInt < 50)
                        {
                            Debug.Log("(Si inférieur à 51, il y a interception) " + randomInt + "/" + "100" + ": Interception SUCCESS");
                            GameManager.Instance.actualAction = PersoAction.isWaiting;

                            movingObj.GetComponent <BallonData>().ChangeStatut(BallonStatut.isIntercepted);
                        }
                        break;

                    default:
                        if (obj.owner != currentPlayer)
                        {
                            StartCoroutine(TackleEffect(obj, path, GraphManager.Instance.getCaseOffset(obj.gameObject)));
                            if (movingObj.GetComponent <PersoData>().weightType == obj.weightType)
                            {
                                if (randomInt < 50)
                                {
                                    Debug.Log("(Même poids) (Si inférieur à 51 il y a tackle) " + randomInt + "/" + "100" + ": Tackle SUCCESS");
                                    movingObj.GetComponent <PersoData>().isTackled = true;
                                }
                                else
                                {
                                    Debug.Log("(Même poids) (Si inférieur à 51 il y a tackle) " + randomInt + "/" + "100" + ": Tackle FAILED");
                                }
                            }
                            else
                            {
                                if (randomInt < 25)
                                {
                                    Debug.Log("(Poids différents) (Si inférieur à 26 il y a tackle) " + randomInt + "/" + "100" + ": Tackle SUCCESS");
                                    movingObj.GetComponent <PersoData>().isTackled = true;
                                }
                                else
                                {
                                    Debug.Log("(Poids différents) (Si inférieur à 26 il y a tackle) " + randomInt + "/" + "100" + ": Tackle FAILED");
                                }
                            }
                        }
                        break;
                    }
                }
            }
        }
    }
Example #24
0
    // *************** //
    // ** Actions ** //
    // *************** //

    public IEnumerator ShowActions()
    { // Affiche en violet les actions possible par le joueur.
        yield return(new WaitForEndOfFrame());

        Player    currentPlayer      = GameManager.Instance.currentPlayer;
        Phase     currentPhase       = GameManager.Instance.currentPhase;
        Color     actionPreColor     = ColorManager.Instance.actionPreColor;
        PersoData selectedPersonnage = SelectionManager.Instance.selectedPersonnage;
        Color     selectedColor      = ColorManager.Instance.selectedColor;

        switch (currentPhase)
        {
        case (Phase.Placement):
            break;

        case (Phase.Deplacement):
            foreach (GameObject caseCompared in listCase)
            {
                Color newColor = ColorManager.Instance.caseColor;

                if (!MenuContextuel.Instance.gameObject.activeInHierarchy)
                {
                    PersoData  persoCompared  = caseCompared.GetComponent <CaseData>().personnageData;
                    BallonData ballonCompared = caseCompared.GetComponent <CaseData>().ballon;


                    if (persoCompared != null && persoCompared.GetComponent <PersoData>().owner == currentPlayer)
                    {
                        caseCompared.GetComponent <CaseData>().ChangeColor(Statut.isAllyPerso);
                    }

                    if (SelectionManager.Instance.selectedPersonnage != null)
                    {
                        if (persoCompared != null &&
                            persoCompared.GetComponent <PersoData>().owner != currentPlayer &&
                            Fonction.Instance.CheckAdjacent(persoCompared.gameObject, selectedPersonnage.gameObject) == true)
                        {
                            caseCompared.GetComponent <CaseData>().ChangeColor(Statut.canPunch);
                        }

                        if (ballonCompared != null &&
                            Fonction.Instance.CheckAdjacent(selectedPersonnage.gameObject, ballonCompared.gameObject) == true)
                        {
                            caseCompared.GetComponent <CaseData>().ChangeColor(Statut.canShot);
                            //newColor = actionPreColor;
                        }

                        if (persoCompared == selectedPersonnage)
                        {
                            caseCompared.GetComponent <CaseData>().ChangeColor(Statut.isSelected);
                            //newColor = selectedColor;
                        }
                    }

                    //      if (newColor != ColorManager.Instance.caseColor)
                    //       {
                    //           caseCompared.GetComponent<CaseData>().ChangeColor(newColor);
                    //        }
                }
            }
            break;
        }
    }