Esempio n. 1
0
    public void SubmitCurrentLevel(LinkJava.SimulationTypes inputSimulationType)
    {
        string levelToString = SerializeCurrentLevel();
        string filename      =
            linkJava.savePath
            + Constants.FilePrefixes.inputLevelFile + "_" + inputSimulationType.ToString().ToUpper() + "_"
            + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt";

        //Debug.Log(filename);
        System.IO.File.WriteAllText(filename, levelToString);
        linkJava.filename       = filename;
        linkJava.simulationMode = inputSimulationType;
        GameManager.Instance.tracker.CreateEventExt("SubmitCurrentLevel" + inputSimulationType.ToString(), filename);

        LinkJava.OnSimulationCompleted += TriggerLevelSimulation;
        linkJava.SendToJava();
    }
    public void DefineButtonBehaviors()
    {
        playerInteraction_UI.ClearButtonBehaviors();
        foreach (Transform t in playerInteraction_UI.hint_button_container)
        {
            Destroy(t.gameObject);
        }

        /* semaphore placement events */
        EventTrigger.Entry beginDrag_semaphore = new EventTrigger.Entry();
        beginDrag_semaphore.eventID = EventTriggerType.BeginDrag;
        beginDrag_semaphore.callback.AddListener((eventData) => { BeginDrag(MenuOptions.semaphore); });
        playerInteraction_UI.place_semaphore.triggers.Add(beginDrag_semaphore);

        EventTrigger.Entry continueDrag_semaphore = new EventTrigger.Entry();
        continueDrag_semaphore.eventID = EventTriggerType.Drag;
        continueDrag_semaphore.callback.AddListener((eventData) => { ContinueDrag(MenuOptions.semaphore); });
        playerInteraction_UI.place_semaphore.triggers.Add(continueDrag_semaphore);

        EventTrigger.Entry endDrag_semaphore = new EventTrigger.Entry();
        endDrag_semaphore.eventID = EventTriggerType.EndDrag;
        endDrag_semaphore.callback.AddListener((eventData) => { EndDrag(MenuOptions.semaphore); });
        playerInteraction_UI.place_semaphore.triggers.Add(endDrag_semaphore);

        /* signal placement events */
        EventTrigger.Entry beginDrag_button = new EventTrigger.Entry();
        beginDrag_button.eventID = EventTriggerType.BeginDrag;
        beginDrag_button.callback.AddListener((eventData) => { BeginDrag(MenuOptions.button); });
        playerInteraction_UI.place_button.triggers.Add(beginDrag_button);

        EventTrigger.Entry continueDrag_button = new EventTrigger.Entry();
        continueDrag_button.eventID = EventTriggerType.Drag;
        continueDrag_button.callback.AddListener((eventData) => { ContinueDrag(MenuOptions.button); });
        playerInteraction_UI.place_button.triggers.Add(continueDrag_button);

        EventTrigger.Entry endDrag_button = new EventTrigger.Entry();
        endDrag_button.eventID = EventTriggerType.EndDrag;
        endDrag_button.callback.AddListener((eventData) => { EndDrag(MenuOptions.button); });
        playerInteraction_UI.place_button.triggers.Add(endDrag_button);

        /* trash events */
        EventTrigger.Entry hover_trash = new EventTrigger.Entry();
        hover_trash.eventID = EventTriggerType.PointerEnter;
        hover_trash.callback.AddListener((eventData) => { BeginHover(MenuOptions.trash); });
        playerInteraction_UI.trash.triggers.Add(hover_trash);

        EventTrigger.Entry endHover_trash = new EventTrigger.Entry();
        endHover_trash.eventID = EventTriggerType.PointerExit;
        endHover_trash.callback.AddListener((eventData) => { EndHover(MenuOptions.trash); });
        playerInteraction_UI.trash.triggers.Add(endHover_trash);

        /* Bezier Visibility */

        /*Button flowButton = playerInteraction_UI.preview.GetComponent<Button>();
         * flowButton.onClick.RemoveAllListeners();
         * flowButton.onClick.AddListener( ()=> ToggleConnectionVisibility() );
         */
        EventTrigger.Entry hover_bezier = new EventTrigger.Entry();
        hover_bezier.eventID = EventTriggerType.PointerEnter;
        hover_bezier.callback.AddListener((eventData) => { connectVisibility = false; ToggleConnectionVisibility(); });
        playerInteraction_UI.preview.triggers.Add(hover_bezier);

        EventTrigger.Entry click_bezier = new EventTrigger.Entry();
        click_bezier.eventID = EventTriggerType.PointerDown;
        click_bezier.callback.AddListener((eventData) => { LockConnectionVisibility(); });
        playerInteraction_UI.preview.triggers.Add(click_bezier);

        EventTrigger.Entry endHover_bezier = new EventTrigger.Entry();
        endHover_trash.eventID = EventTriggerType.PointerExit;
        endHover_trash.callback.AddListener((eventData) => { connectVisibility = true; ToggleConnectionVisibility(); });
        playerInteraction_UI.preview.triggers.Add(endHover_trash);

        /* Exit */
        //Note: Exit Button behavior is handled in playerInteraction_UI.pauseOverlay


        LinkJava.SimulationTypes playSimulation = LinkJava.SimulationTypes.Play;
        playerInteraction_UI.simulationButton.onClick.RemoveAllListeners();
        playerInteraction_UI.simulationButton.onClick.AddListener(() => TriggerSimulation(playSimulation) /*GameManager.Instance.SubmitCurrentLevel(playSimulation)*/);
        playerInteraction_UI.simulationButton.onClick.AddListener(() => playerInteraction_UI.simulationButton.interactable = false);
        playerInteraction_UI.simulationButton.interactable = true;

        playerInteraction_UI.stopSimulationButton.onClick.RemoveAllListeners();
        playerInteraction_UI.stopSimulationButton.onClick.AddListener(() => EndSimulation());
        playerInteraction_UI.stopSimulationButton.interactable = false;
        playerInteraction_UI.stopSimulationButton.gameObject.SetActive(false);

        LinkJava.SimulationTypes fullSimulation = LinkJava.SimulationTypes.ME;
        playerInteraction_UI.submitButton.onClick.RemoveAllListeners();
        playerInteraction_UI.submitButton.onClick.AddListener(() => TriggerSimulation(fullSimulation) /*GameManager.Instance.SubmitCurrentLevel(fullSimulation)*/);
        playerInteraction_UI.submitButton.onClick.AddListener(() => playerInteraction_UI.submitButton.interactable = false);
        playerInteraction_UI.submitButton.interactable = true;

        playerInteraction_UI.revealHintsButton.onClick.RemoveAllListeners();
        playerInteraction_UI.revealHintsButton.onClick.AddListener(() => ToggleHintsVisibility());

/* Track Color Hover Setup */
        for (int triggerIndex = 0; triggerIndex < playerInteraction_UI.rightPanelColors.Length; triggerIndex++)
        {
            playerInteraction_UI.rightPanelColors[triggerIndex].triggers.Clear();
            if (GameManager.Instance.GetGridManager().IsCurrentThreadColor(triggerIndex))
            {
                playerInteraction_UI.rightPanelColors[triggerIndex].gameObject.SetActive(true);
                int loadColors = triggerIndex;                // + 1;

                EventTrigger.Entry beginHoverColor = new EventTrigger.Entry();
                beginHoverColor.eventID = EventTriggerType.PointerEnter;
                beginHoverColor.callback.AddListener((eventData) => {
                    if (!/*connectVisibilityLock*/ colorFlowVisibilityLock)
                    {
                        GameManager.Instance.GetGridManager().RevealGridColorMask(loadColors);
                    }
                    ToggleFlowVisibility(true);
                });
                playerInteraction_UI.rightPanelColors[triggerIndex].triggers.Add(beginHoverColor);

                EventTrigger.Entry lockHoverColor = new EventTrigger.Entry();
                lockHoverColor.eventID = EventTriggerType.PointerDown;
                int lockIndex = triggerIndex;
                lockHoverColor.callback.AddListener((eventData) => { LockFlowVisibility(lockIndex); });
                playerInteraction_UI.rightPanelColors[triggerIndex].triggers.Add(lockHoverColor);


                EventTrigger.Entry endHoverColor = new EventTrigger.Entry();
                endHoverColor.eventID = EventTriggerType.PointerExit;
                endHoverColor.callback.AddListener((eventData) => {
                    if (!/*connectVisibilityLock*/ colorFlowVisibilityLock)
                    {
                        GameManager.Instance.GetGridManager().HideGridColorMask();
                    }
                    ToggleFlowVisibility(false);
                });
                playerInteraction_UI.rightPanelColors[triggerIndex].triggers.Add(endHoverColor);
            }
            else
            {
//				Debug.Log(playerInteraction_UI.rightPanelColors[triggerIndex].gameObject.name);
                playerInteraction_UI.rightPanelColors[triggerIndex].gameObject.SetActive(false);
            }
        }

/* Question Mark Hint Setup */
        for (int hintIndex = 0; hintIndex < playerInteraction_UI.hintButtons.Length; hintIndex++)
        {
            HintConstructor h = playerInteraction_UI.hintButtons[hintIndex].hint;
            if (playerInteraction_UI.hintButtons[hintIndex].levelIds.Count == 0 || playerInteraction_UI.hintButtons[hintIndex].levelIds.Contains(GameManager.Instance.GetDataManager().currentLevelData.metadata.level_id))
            {
                GameObject hintInstance = Instantiate(playerInteraction_UI.hint_button_prefab, playerInteraction_UI.hint_button_container) as GameObject;
                hintInstance.transform.localScale = Vector3.one;
                Button instanceButton = hintInstance.GetComponent <Button>();
                Image  instanceImage  = hintInstance.GetComponent <Image>();
                instanceButton.onClick.AddListener(() => TriggerHint(h.hintTitle, h.hintDescription, h.hintImage));

                if (playerInteraction_UI.hintButtons[hintIndex].hint.hintButtonImage != null)
                {
                    //	playerInteraction_UI.hintButtons[hintIndex].hintButtonTrigger.GetComponent<Image>().sprite = playerInteraction_UI.hintButtons[hintIndex].hint.hintButtonImage;
                    instanceImage.sprite = playerInteraction_UI.hintButtons[hintIndex].hint.hintButtonImage;
                }
                else if (playerInteraction_UI.hintButtons[hintIndex].hint.hintImage != null)
                {
                    //playerInteraction_UI.hintButtons[hintIndex].hintButtonTrigger.GetComponent<Image>().sprite = playerInteraction_UI.hintButtons[hintIndex].hint.hintImage;
                    instanceImage.sprite = playerInteraction_UI.hintButtons[hintIndex].hint.hintImage;
                }
                //playerInteraction_UI.hintButtons[hintIndex].hintButtonTrigger.onClick.AddListener( ()=> TriggerHint( h.hintTitle, h.hintDescription, h.hintImage ) );
            }
        }
/* Toolbar Tooltips */
        foreach (TooltipEvent t in playerInteraction_UI.tooltipEvents)
        {
            EventTrigger.Entry beginHover_event = new EventTrigger.Entry();
            string             tooltipText      = t.tooltipContent.tooltipText;
            string             tooltipName      = t.tooltipUiElement.name;
            beginHover_event.eventID = EventTriggerType.PointerEnter;
            Debug.Log("Adding listener for " + t.tooltipUiElement.name);
            beginHover_event.callback.AddListener((eventData) => { if (interactionPhase == InteractionPhases.ingame_default)
                                                                   {
                                                                       playerInteraction_UI.tooltipOverlay.OpenPanel(); playerInteraction_UI.tooltipOverlay.SetTooltip(tooltipText, Input.mousePosition); GameManager.Instance.tracker.CreateEventExt("tooltip", tooltipName);
                                                                   }
                                                  });
            t.tooltipUiElement.triggers.Add(beginHover_event);
        }
    }
 void TriggerSimulation(LinkJava.SimulationTypes simulationType)
 {
     playerInteraction_UI.loadingOverlay.OpenPanel();
     GameManager.Instance.SubmitCurrentLevel(simulationType);
 }