Example #1
0
 public override bool CanBeSelected(Joueur joueurActif, TurnManager.phases phaseActive)
 {
     if (phaseActive == TurnManager.phases.Deploiement)
     {
         return(joueurActif.Equals(joueur) && territoire == null && canAct);
     }
     else
     {
         return(joueurActif.Equals(joueur) && canAct);
     }
 }
    void Update()
    {
        if (turnManager.GetJoueurActif() != null)
        {
            Joueur             joueurActif = turnManager.GetJoueurActif();
            TurnManager.phases phaseActive = turnManager.PhaseActive;

            joueurLabel.color = Utils.GetColor(joueurActif.Couleur);
            joueurLabel.transform.Find("Nom").gameObject.GetComponent <Text>().text = joueurActif.Nom;

            if (phaseActive == TurnManager.phases.Deploiement)
            {
                joueurLabel.transform.Find("Phase Active").gameObject.GetComponent <Text>().text = "Déploiement";
            }
            else
            {
                joueurLabel.transform.Find("Phase Active").gameObject.GetComponent <Text>().text = phaseActive.ToString();
            }


            if (joueurActif.Credits == 0)
            {
                fonds.text = "Fonds : 0 (+" + joueurActif.EstimatedEarnings() + ") Cr";
            }
            else
            {
                fonds.text = "Fonds : " + joueurActif.Credits + "k (+" + joueurActif.EstimatedEarnings() + ") Cr";
            }
        }
        if (Input.GetKeyDown(KeyCode.P))
        {
            if (Input.GetKeyDown(KeyCode.P))
            {
                isPaused = !isPaused;
                parametersPanel.SetActive(!parametersPanel.activeSelf);
            }
            if (isPaused)
            {
                Time.timeScale = 0f;
            }
            else
            {
                Time.timeScale = 1.0f;
            }
        }
        if (waitingPanel.activeSelf)
        {
            int index = (int)(Time.time * framesPerSecond) % loadingFrames.Count;
            waitingPanel.transform.FindChild("Image").GetComponent <Image>().sprite = loadingFrames[index];
        }
    }
    void Update()
    {
        if (guiManager == null)
        {
            guiManager = GameObject.Find("GUIManager").GetComponent <GUIController>();
        }
        else if (!guiManager.dialogOpened) // Si une fenêtre de dialogue n'est pas ouverte
        {
            joueurActif = guiManager.GetComponent <TurnManager>().GetJoueurActif();

            // Réinitialisation du timer comptant le temps passé avec le bouton pressé
            if (Input.GetMouseButtonDown(1))
            {
                timeDown = 0.0f;
            }
            else if (Input.GetMouseButton(1))
            {
                timeDown += 0.1f;

                // 1/2 seconde c'est écoulé sans relâchement du bouton, le joueur veut sélectionner avec le triangle
                // !isSelecting permet d'éviter de réinitialiser la sélection
                if (timeDown > 0.5f && !isSelecting)
                {
                    isSelecting    = true;
                    mousePosition1 = Input.mousePosition;

                    removeAllSelection(selectedObjects);
                    selectedObjects = new List <Unite>();
                }
            }

            // Lorsque le bouton est relâché, ajoute les unités sélectionnées s'il y en a
            if (Input.GetMouseButtonUp(1))
            {
                TurnManager.phases phaseActive = guiManager.GetComponent <TurnManager>().PhaseActive;

                // C'est un clic, on ajoute l'unité pointée par le curseur
                if (timeDown < 0.5f)
                {
                    RaycastHit hit;
                    if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 13.5f, LayerMask.GetMask("Unites")))
                    {
                        Unite unit = hit.collider.gameObject.GetComponent <Unite>();

                        if (unit.CanBeSelected(joueurActif, phaseActive))
                        {
                            AddSelection(hit.collider.gameObject.GetComponent <Unite>());
                        }
                    }
                    else
                    {
                        removeAllSelection(selectedObjects);
                    }
                }
                else // C'est une sélection multiple, on ajoute tout ce qui est dans le rectangle
                {
                    removeAllSelection(selectedObjects);
                    foreach (var selectableObject in FindObjectsOfType <Unite>())
                    {
                        if (IsWithinSelectionBounds(selectableObject.gameObject) && selectableObject.CanBeSelected(joueurActif, phaseActive))
                        {
                            AddSelection(selectableObject);
                        }
                    }

                    isSelecting = false;

                    /*
                     * var sb = new StringBuilder();
                     * sb.AppendLine(string.Format("Selecting [{0}] Units", selectedObjects.Count));
                     * foreach (var selectedObject in selectedObjects)
                     *  sb.AppendLine("-> " + selectedObject.gameObject.name);
                     * Debug.Log(sb.ToString());
                     */
                }

                timeDown = 0.0f;
            }

            // Highlight all objects within the selection box
            if (isSelecting)
            {
                TurnManager.phases phaseActive = guiManager.GetComponent <TurnManager>().PhaseActive;

                foreach (var selectableObject in FindObjectsOfType <Unite>())
                {
                    if (IsWithinSelectionBounds(selectableObject.gameObject) && !selectedObjects.Contains(selectableObject) && selectableObject.CanBeSelected(joueurActif, phaseActive))
                    {
                        AddSelection(selectableObject);
                    }
                }
            }
        }
    }
Example #4
0
 /// <summary>
 /// Vérifie qu'une unité peut être sélectionnée.
 /// </summary>
 /// <param name="joueurActif">Joueur Le joueur actif à ce tour</param>
 /// <param name="phaseActive">TurnManager.phases La phase en cour</param>
 /// <returns>bool true si l'unité peut être ajoutée, false sinon</returns>
 public virtual bool CanBeSelected(Joueur joueurActif, TurnManager.phases phaseActive)
 {
     return(false);
 }
Example #5
0
    void OnMouseUp()
    {
        if (!guiManager.GetComponent <GUIController>().dialogOpened) // S'il n'y a pas de fenêtre de dialogue d'ouverte
        {
            if (dragged)
            {
                dragged = false;
                TurnManager.phases phaseActive = guiManager.GetComponent <TurnManager>().PhaseActive;

                RaycastHit hit;

                // Le Raycast vérifiera si la droite perpendiculaire à la map passant par l'unité touche un territoire
                // et donc si l'unité tombera sur un territoire
                if (Physics.Raycast(this.transform.position, Vector3.down, out hit, 4.0f, LayerMask.GetMask("BoardLayer")))
                {
                    System.Object zoneSelectionnee = GameObject.Find("Territoires colorés").GetComponent <ColoredTerritories>().GetHoveredTerritory(hit);

                    if (zoneSelectionnee != null)
                    {
                        if (zoneSelectionnee.GetType().Name == "Territoire")
                        {
                            Territoire territoireSelectionnee = zoneSelectionnee as Territoire;

                            // Terrestre terrestre = this as Terrestre;
                            // if(territoireSelectionnee.Equals(terrestre.territoire))

                            if (territoireSelectionnee.joueur == joueur)
                            {
                                // Les unités peuvent se déplacer pendant la phase de déploiement si elles viennent d'être achetée ou durant la
                                // phase de mouvement
                                if (phaseActive != TurnManager.phases.Attaque)
                                {
                                    MoveMultipleUnits(territoireSelectionnee);
                                }
                                else
                                {
                                    InvalidPositioning("Vous ne pouvez (re)déployer vos unités en-dehors la phase de mouvement ou de déploiement.");
                                }
                            }
                            else
                            {
                                if (phaseActive == TurnManager.phases.Attaque)
                                {
                                    Attack(territoireSelectionnee);
                                }
                                else
                                {
                                    InvalidPositioning("Vous ne pouvez attaquer en-dehors de la phase d'attaque.");
                                }
                            }
                        }
                        else
                        {
                            Route routeSelectionnee = zoneSelectionnee as Route;

                            if (routeSelectionnee.joueur == joueur || routeSelectionnee.joueur == null)
                            {
                                // Les unités peuvent se déplacer pendant la phase de déploiement si elles viennent d'être achetée ou durant la
                                // phase de mouvement
                                if (phaseActive != TurnManager.phases.Attaque)
                                {
                                    MoveMultipleUnits(routeSelectionnee);
                                }
                                else
                                {
                                    InvalidPositioning("Vous ne pouvez redéployer vos unités en-dehors la phase de mouvement.");
                                }
                            }
                            else
                            {
                                if (phaseActive == TurnManager.phases.Attaque)
                                {
                                    Attack(routeSelectionnee);
                                }
                                else
                                {
                                    InvalidPositioning("Vous ne pouvez attaquer en-dehors de la phase d'attaque");
                                }
                            }
                        }
                    }
                    else
                    {
                        InvalidPositioning("Cette unité ne peut être déployée ici.");
                    }
                }
                else
                {
                    foreach (Unite unit in selectedList)
                    {
                        unit.transform.position = unit.offset;
                    }
                }
            }
        }
    }