예제 #1
0
 private void UserActionControl(object sender, ExtLibControl.UserAction a)
 {
     if (a.type == "pause")
     {
         PersistentScript.ExecuteOnMainThread.Enqueue(() => PauseLevel(true));
         //ExtLibControl.PServer2.SendMessage($"Pausing", ExtLibControl.PServer2.clientse);
         Debug.Log("<color=#006666>Pausing....</color>");
         ExtLibControl.DeQueueAction();
     }
 }
예제 #2
0
    public static void PauseLevel(bool v)//TODO verificar...
    {
        ExtLibControl.ClearActionQueue();
        ExtLibControl.currentUAction = null;

        isPlaying = !v;
        instance.FileMenu.parent.GetChild(1).gameObject.SetActive(v);
        Time.timeScale         = v ? 0 : PersistentScript.instance.timescale;
        instance.aSource.pitch = v ? 0.5f : 1f;
    }
예제 #3
0
 public static void ShowGOverMessage(int score)
 {
     if (score <= 0)
     {
         ShowInfoMessage("Fim de jogo, você não obteve nenhuma pontuação", true);
     }
     else
     {
         instance.GameOverBoxText.text = $"Fim de jogo!\n Sua pontuação é de {score} ponto{((score == 1) ? "" : "s")}.";
         PersistentScript.lastScore    = score;
         instance.GameOverBox.gameObject.SetActive(true);
         PauseLevel(true);
     }
     ExtLibControl.ClearActionQueue();
 }
예제 #4
0
    private void Start()
    {
        //isPlaying = true;
        PersistentScript.canRunUserActions = true;
        PersistentScript.currentScore      = (PersistentScript.playType == 0) ? 0 : totalItens;
        PersistentScript.timeT0            = (PersistentScript.playType == 0) ? PersistentScript.currentMap.maxTime + .4f : 0;
        var audioS = GetComponent <AudioSource>();


        Instantiate(PersistentScript.currentMap.MapPrefab);
        PersistentScript.instance.ItemCollection = GameObject.Find("ItemCollection")?.transform;
        PersistentScript.instance.cameraHolder   = GameObject.Find("Camera-holder").transform;

        if (clips.Length > 0)
        {
            audioS.clip = clips[UnityEngine.Random.Range(0, clips.Length)];
            audioS.Play();
        }
        if (ExtLibControl.currentUAction?.userAction.type == "restart")
        {
            ExtLibControl.DeQueueAction();
        }
        else
        {
            ExtLibControl.ClearActionQueue();
        }


        //starMessage
        //mudar para PersistentScript.currentMap.detailedDescription
        if (PersistentScript.incomingMessage == "Welcome")
        {
            ShowInfoMessage(PersistentScript.currentMap.longDescription);
            //           ShowInfoMessage(@"Bem vindo ao primeiro mapa, aqui sua aventura começar primeiramente vá {Map01-Menu/ NovoArquivoCpp} escreva seu programa e copile.
            //Ele deve ser capaz de direcionar o Robo ao quadro espaço amarelo, coletar seus itens e depositar no espaço vermelho, voltando ao espaço inicial para reposição de itens, o Jogo termina com três itens;
            //   Para pegar um item , <b>levante a gaiola</b> aproxime-se dele e <b>abaixe a gaiola</b> em cima. Já para largar-lo , basta erguer a gaiola");
        }
        else if (PersistentScript.incomingMessage != null)
        {
            ShowInfoMessage(PersistentScript.incomingMessage);
        }
        else if (PersistentScript.incomingMessage == null)
        {
            PauseLevel(false);
        }

        ScoreTextBox.transform.parent.GetComponent <TextMeshProUGUI>().text = (PersistentScript.playType == 0) ? "Pontuação:" : "Restantes:";
    }
예제 #5
0
    void Update()
    {
        Time.timeScale = timescale;
        if (Input.GetKeyDown(KeyCode.Z))
        {
            ExtLibControl.DeQueueAction(); //Libera a ultima ação --para casos de encurralamento
        }
        if (Input.GetKeyDown(KeyCode.X))
        {
            ExtLibControl.ClearActionQueue(); //Limpa todas as Ações
        }
        float v = (Input.GetKeyDown(KeyCode.W) ? 1 : Input.GetKeyDown(KeyCode.S) ? -1 : 0);

        if (v != 0)
        {
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("move", 0, .2f * v));
        }
        v = (Input.GetKeyDown(KeyCode.D) ? 1 : Input.GetKeyDown(KeyCode.A) ? -1 : 0);
        if (v != 0)
        {
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("rot", 0, 15f * v));
        }

        if (Input.GetKeyDown(KeyCode.Q))
        {
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("garra", 0));
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("hold", -1, 3));
        }

        if (Input.GetKeyDown(KeyCode.T))
        {
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("getTIME"));
        }
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            currentCamera = (currentCamera + 1) % cameraHolder.childCount;
            ExtLibControl.userActions.Enqueue(new ExtLibControl.UserAction("cam", -1, currentCamera));
        }

        if (Input.GetKeyDown(KeyCode.KeypadDivide))
        {
            DEBUGmode = !DEBUGmode;
        }


        while (ExecuteOnMainThread.Count > 0)
        {
            ExecuteOnMainThread.Dequeue().Invoke();
        }

        if (ExtLibControl.userActions.Count > 0)
        {
            if (((ExtLibControl.currentUAction == null) ? true : ExtLibControl.currentUAction.done) &&
                canRunUserActions && MenuManager_InGame.isPlaying)
            {
                ExtLibControl.MoveActionQueue();
            }

            if (!(ExtLibControl.currentUAction == null) && canRunUserActions && MenuManager_InGame.isPlaying)
            {
                var u = ExtLibControl.currentUAction.userAction;
                switch (u.type)
                {
                case "holdReal" when u.target == -1:
                    ExtLibControl.currentUAction.userAction.target = 1;
                    StartCoroutine(WaitAndDo(u.value, () => ExtLibControl.DeQueueAction()));
                    break;

                case "hold":
                    if (u.target == -1)
                    {
                        ExtLibControl.currentUAction.userAction.target = 1;
                        holdTime = u.value;
                    }
                    else if (holdTime < 1e-8)
                    {
                        ExtLibControl.DeQueueAction();
                    }
                    else
                    {
                        holdTime -= Time.deltaTime;
                    }
                    break;

                case "restart" when u.target == -1:
                    ExtLibControl.currentUAction.userAction.target = 1;
                    MenuManager_InGame.ReloadLevel();
                    break;

                case "speed":
                    timescale = u.value;
                    ExtLibControl.DeQueueAction();
                    break;

                case "cam":
                {
                    if (u.value < cameraHolder.childCount)
                    {
                        for (int i = 0; i < cameraHolder.childCount; i++)
                        {
                            cameraHolder.GetChild(i).gameObject.SetActive(i == u.value);
                        }
                    }

                    ExtLibControl.DeQueueAction();
                    break;
                }
                }
                //feedback ActionsBehaviours
                switch (u.type)
                {
                case "getTIME":
                    PipeFeedback(timeT0);
                    break;

                case "getCameraCount":
                    PipeFeedback(cameraHolder.childCount);
                    break;

                case "getScore":
                    PipeFeedback((int)currentScore);
                    break;
                }
            }
        }
    }
예제 #6
0
 void Start()
 {
     ExtLibControl.INIT();
     SceneManager.activeSceneChanged += OnSceneChanged;
 }
예제 #7
0
 private void OnApplicationQuit()
 {
     ExtLibControl.END();
 }
예제 #8
0
 public static void PipeFeedback(float value)
 {
     ExtLibControl.PServer2.SendMessage($"{value}", ExtLibControl.PServer2.clientse);
     ExtLibControl.DeQueueAction();
 }