public void initButton(AbstractSortScript s, int number, MasterController master)
 {
     masterController = master;
     sort = s;
     text.text = sort.getNameSort();
     sortNumber = number;
     if (btn != null)
         btn.enabled = true;
     if (image != null)
         image.enabled = true;
 }
    // Update is called once per frame
    void Update()
    {
        if (isLocalPlayer)
        {
            if(Input.GetKeyUp(KeyCode.Space))
            {
                changeRunnerFocused();
            }
            if(Input.GetKeyDown(KeyCode.Alpha1))
            {
                masterUI.keyPressed(KeyCode.Alpha1);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                masterUI.keyPressed(KeyCode.Alpha2);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                masterUI.keyPressed(KeyCode.Alpha3);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                masterUI.keyPressed(KeyCode.Alpha4);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha5))
            {
                masterUI.keyPressed(KeyCode.Alpha5);
            }
            else if (Input.GetKeyDown(KeyCode.Tab))
            {
                masterUI.keyPressed(KeyCode.Tab);
            }
            else if (Input.GetKeyDown(KeyCode.Escape))
            {
                masterUI.keyPressed(KeyCode.Escape);
            }
            if (Input.GetAxis("Mouse ScrollWheel") < 0 && effectiveZoom > minZoom) // back
            {
                translationCamera.z = -zoomSpeed;
                effectiveZoom -= zoomSpeed;
                alignementGauche = getAlignGauche();
            }
            else if (Input.GetAxis("Mouse ScrollWheel") > 0 && effectiveZoom < maxZoom) // forward
            {
                translationCamera.z = zoomSpeed;
                effectiveZoom += zoomSpeed;
                alignementGauche = getAlignGauche();
            }
            else
            {
                translationCamera.z = 0;
            }
            translationCamera.x = (runnerView.transform.position.z - masterCamera.transform.position.z) + alignementGauche;
            masterCamera.transform.Translate(translationCamera * zoomSpeed, Space.Self);

            if (objectSelected != null)
            {
                //print("Object selected");
                Vector3 p1 = masterCamera.transform.position;
                Vector3 p2 = masterCamera.ScreenToWorldPoint(Vector3.right*Input.mousePosition.x+ Vector3.up*Input.mousePosition.y+ Vector3.forward*masterCamera.farClipPlane);
                RaycastHit rayInfo;
                if (Physics.Linecast(p1, p2, out rayInfo))
                {
                    if (rayInfo.collider.gameObject == floor.gameObject)
                    {
                        p1.x = Mathf.Round(rayInfo.point.x);
                        p1.y = Mathf.Round(rayInfo.point.y)+.5f;
                        p1.z = Mathf.Round(rayInfo.point.z-.5f) + .5f;
                        objectSelected.UpdatePosition(p1, Vector3.Distance(p1, runnerView.position),runnerController.getLevel().isPositionOccuped(p1,false));
                    }
                    else objectSelected.Hide();
                }
                else objectSelected.Hide();
                if(objectSelected.CanBePosed() && Input.GetMouseButtonUp(0))
                {
                    removeMana(objectSelected.getCout());
                    //print("name =" + rayInfo.collider.gameObject.name);
                    CmdPoseObject(objectSelected.transform.position, runnerId);
                    runnerController.getLevel().setAllObstacleTransparent(false);
                }
                if (Input.GetMouseButtonUp(1))
                {
                    objectSelected.gameObject.SetActive(false);
                    objectSelected = null;
                    runnerController.getLevel().setAllObstacleTransparent(false);
                }
            }
            else if(sortSelected!=null)
            {
                Vector3 p1 = masterCamera.transform.position;
                Vector3 p2 = masterCamera.ScreenToWorldPoint(Vector3.right * Input.mousePosition.x + Vector3.up * Input.mousePosition.y + Vector3.forward * masterCamera.farClipPlane);
                RaycastHit rayInfo;
                if (Physics.Linecast(p1, p2, out rayInfo))
                {
                    if (rayInfo.collider.gameObject == floor.gameObject)
                    {
                        p1.x = Mathf.Round(rayInfo.point.x);
                        p1.y = Mathf.Round(rayInfo.point.y) + .5f;
                        p1.z = Mathf.Round(rayInfo.point.z - .5f) + .5f;
                        sortSelected.getSortVisualScript().gameObject.SetActive(true);
                        sortSelected.getSortVisualScript().setOK(false);
                        sortSelected.getSortVisualScript().updatePosition(p1);

                    }
                    else if(rayInfo.collider.gameObject.CompareTag("RunnerView"))
                    {
                        sortSelected.getSortVisualScript().gameObject.SetActive(true);
                        sortSelected.getSortVisualScript().setOK(true);
                        sortSelected.getSortVisualScript().updatePosition(rayInfo.collider.gameObject.transform.position);
                    }
                    else sortSelected.getSortVisualScript().gameObject.SetActive(false);
                }
                else
                {
                    sortSelected.getSortVisualScript().gameObject.SetActive(false);
                }

                if (sortSelected.getSortVisualScript().CanBeActivate() && Input.GetMouseButtonUp(0))
                {
                    int tmpRunner = runnerListScript.getRunnerIdByView(rayInfo.collider.gameObject);
                    if (tmpRunner != -1 && !sortSelected.affectAlreadyRunner(tmpRunner))
                    {
                        print("lauch sort");
                        removeMana((int)sortSelected.getCout());
                        CmdLauchSort(tmpRunner);
                    }
                    else
                        print("player already affected by this sort");

                }
                else if (Input.GetMouseButtonUp(1))
                {
                    sortSelected.getSortVisualScript().gameObject.SetActive(false);
                    sortSelected = null;
                }
            }
        }
    }
    public void RpcSetSortSelected(int i)
    {
        if (objectSelected != null)
        {
            objectSelected.gameObject.SetActive(false);
            objectSelected = null;
        }
        if (sortSelected != null)
        {
            sortSelected.getSortVisualScript().gameObject.SetActive(false);
        }

        sortSelected = panelSortScript.getSort(i);
    }
 public void RpcLauchSort(int tmpRunner)
 {
     sortSelected.lauchSort(tmpRunner);
     sortSelected.getSortVisualScript().gameObject.SetActive(false);
     sortSelected = null;
 }
    public void CmdSetSortSelected(int i)
    {
        RpcSetSortSelected(i);
        if (!NetworkClient.active)
        {
            if (objectSelected != null)
            {
                objectSelected.gameObject.SetActive(false);
                objectSelected = null;
            }
            if (sortSelected != null)
            {
                sortSelected.getSortVisualScript().gameObject.SetActive(false);
            }

            sortSelected = panelSortScript.getSort(i);
        }
    }
 public void CmdLauchSort(int tmpRunner)
 {
     RpcLauchSort(tmpRunner);
     if (!NetworkClient.active)
     {
         sortSelected.lauchSort(tmpRunner);
         sortSelected.getSortVisualScript().gameObject.SetActive(false);
         sortSelected = null;
     }
 }
 public void AddChildren(AbstractSortScript go)
 {
     go.transform.parent = this.transform;
     children.Add(go);
 }
 /*Retourne un boolean pour savoir si le runner a déjà ce sort qui lui est appliqué*/
 public bool hasAlreadySort(AbstractSortScript sort)
 {
     return effectiveSorts.Contains(sort);
 }