Beispiel #1
0
    /// <summary>
    /// Event Handler
    /// </summary>
    /// <param name="eventType"></param>
    /// <param name="Sender"></param>
    /// <param name="Param"></param>
    public void OnEvent(EventType eventType, Component Sender, object Param = null)
    {
        //select event type
        switch (eventType)
        {
        case EventType.OpenGenericPicker:
            GenericPickerDetails details = Param as GenericPickerDetails;
            SetGenericPicker(details);
            break;

        case EventType.CloseGenericPicker:
            CloseGenericPicker();
            break;

        case EventType.CancelButtonGeneric:
            ProcessCancelButton();
            break;

        case EventType.ChangeColour:
            SetColours();
            break;

        case EventType.ChangeSide:
            SetSide();
            break;

        case EventType.ConfirmGenericActivate:
            GenericReturnData data = Param as GenericReturnData;
            SetConfirmButton(true, data);
            break;

        case EventType.ConfirmGenericDeactivate:
            SetConfirmButton(false);
            break;

        case EventType.ConfirmGenericChoice:
            ProcessGenericChoice();
            break;

        case EventType.BackButtonGeneric:
            ProcessBackButton();
            break;

        default:
            Debug.LogError(string.Format("Invalid eventType {0}{1}", eventType, "\n"));
            break;
        }
    }
Beispiel #2
0
    /// <summary>
    /// Sets up Generic picker window
    /// </summary>
    private void SetGenericPicker(GenericPickerDetails details)
    {
        //close Node tooltip safety check
        GameManager.i.tooltipNodeScript.CloseTooltip("ModalGenericPicker.cs -> SetGenericPicker");
        //open Generic picker
        bool        errorFlag = false;
        CanvasGroup genericCanvasGroup;

        //set modal status
        GameManager.i.guiScript.SetIsBlocked(true);
        //activate main panel
        modalPanelObject.SetActive(true);
        //header activated only if text provided
        if (string.IsNullOrEmpty(details.textHeader) == false)
        {
            modalHeader.gameObject.SetActive(true);
            headerText.text = details.textHeader;
        }
        else
        {
            modalHeader.gameObject.SetActive(false);
        }
        //activate dialogue window
        modalPickerCanvas.gameObject.SetActive(true);
        modalGenericObject.SetActive(true);
        //confirm button should be switched off at the start
        buttonConfirm.gameObject.SetActive(false);
        //back button only switched on if it has a valid underlying eventType
        if (backReturnEvent == EventType.None)
        {
            buttonBack.gameObject.SetActive(false);
        }
        else
        {
            buttonBack.gameObject.SetActive(true);
        }
        //halt execution, until picker is processed, if indicated
        if (details.isHaltExecution == true)
        {
            GameManager.i.turnScript.haltExecution = true;
        }
        //canvasGroup.alpha = 100;

        //populate dialogue
        if (details != null)
        {
            if (details.arrayOfOptions.Length > 0)
            {
                //initialise data
                nodeIDSelected      = details.nodeID;
                actorSlotIDSelected = details.actorSlotID;
                datapoint           = details.data;
                optionIDSelected    = -1;
                optionNameSelected  = "";
                //set help
                List <HelpData> listOfHelpData = GameManager.i.helpScript.GetHelpData(details.help0, details.help1, details.help2, details.help3);
                if (listOfHelpData != null && listOfHelpData.Count > 0)
                {
                    buttonHelp.gameObject.SetActive(true);
                    help.SetHelpTooltip(listOfHelpData, 150, 200);
                }
                else
                {
                    buttonHelp.gameObject.SetActive(false);
                }
                //assign sprites, texts, optionID's and tooltips
                for (int i = 0; i < details.arrayOfOptions.Length; i++)
                {
                    if (arrayOfGenericOptions[i] != null)
                    {
                        GenericInteraction interaction = arrayOfInteractions[i];
                        if (interaction != null)
                        {
                            //there are 'maxOptions' options but not all of them may be used
                            if (details.arrayOfOptions[i] != null)
                            {
                                //get option canvas
                                genericCanvasGroup = arrayOfGenericOptions[i].GetComponent <CanvasGroup>();
                                if (genericCanvasGroup != null)
                                {
                                    //activate option
                                    arrayOfGenericOptions[i].SetActive(true);
                                    //populate data
                                    interaction.optionImage.sprite                 = details.arrayOfOptions[i].sprite;
                                    interaction.displayText.text                   = details.arrayOfOptions[i].text;
                                    interaction.imageInteraction.data.optionID     = details.arrayOfOptions[i].optionID;
                                    interaction.imageInteraction.data.optionName   = details.arrayOfOptions[i].optionName;
                                    interaction.imageInteraction.data.optionNested = details.arrayOfOptions[i].optionText;
                                    interaction.imageInteraction.data.actorSlotID  = details.actorSlotID;
                                    //option Active or Not?
                                    if (details.arrayOfOptions[i].isOptionActive == true)
                                    {
                                        //activate option
                                        genericCanvasGroup.alpha              = 1.0f;
                                        genericCanvasGroup.interactable       = true;
                                        interaction.imageInteraction.isActive = true;
                                    }
                                    else
                                    {
                                        //deactivate option
                                        genericCanvasGroup.alpha              = 0.25f;
                                        genericCanvasGroup.interactable       = false;
                                        interaction.imageInteraction.isActive = false;
                                    }
                                    //tooltip -> Image
                                    GenericTooltipUI tooltipImage = arrayOfImageTooltips[i];
                                    if (details.arrayOfImageTooltips[i] != null)
                                    {
                                        tooltipImage.tooltipHeader  = details.arrayOfImageTooltips[i].textHeader;
                                        tooltipImage.tooltipMain    = details.arrayOfImageTooltips[i].textMain;
                                        tooltipImage.tooltipDetails = details.arrayOfImageTooltips[i].textDetails;
                                    }
                                    else
                                    {
                                        //default values
                                        tooltipImage.tooltipHeader  = "";
                                        tooltipImage.tooltipMain    = "";
                                        tooltipImage.tooltipDetails = "";
                                    }
                                    //tooltip -> Text
                                    GenericTooltipUI tooltipText = arrayOfTextTooltips[i];
                                    if (details.arrayOfTextTooltips[i] != null)
                                    {
                                        tooltipText.tooltipHeader  = details.arrayOfTextTooltips[i].textHeader;
                                        tooltipText.tooltipMain    = details.arrayOfTextTooltips[i].textMain;
                                        tooltipText.tooltipDetails = details.arrayOfTextTooltips[i].textDetails;
                                    }
                                    else
                                    {
                                        //default values
                                        tooltipText.tooltipHeader  = "";
                                        tooltipText.tooltipMain    = "";
                                        tooltipText.tooltipDetails = "";
                                    }
                                }
                                else
                                {
                                    Debug.LogError(string.Format("Invalid genericCanvasGroup for arrayOfGenericOptions[{0}]", i));
                                }
                            }
                            else
                            {
                                arrayOfGenericOptions[i].SetActive(false);
                            }
                        }
                        else
                        {
                            //error -> Null Interaction data
                            Debug.LogError(string.Format("Invalid arrayOfGenericOptions[\"{0}\"] genericData (Null)", i));
                            errorFlag = true;
                            break;
                        }
                    }
                    else
                    {
                        //error -> Null array
                        Debug.LogError(string.Format("Invalid arrayOfGenericOptions[\"{0}\"] (Null)", i));
                        errorFlag = true;
                        break;
                    }
                }
                //register return event for reference once user confirms a choice
                defaultReturnEvent = details.returnEvent;
            }
        }
        else
        {
            //error -> null parameter
            Debug.LogError("Invalid GenericPickerDetails (Null)");
            errorFlag = true;
        }
        //if a problem then generate an outcome window instead
        if (errorFlag == true)
        {
            modalPickerCanvas.gameObject.SetActive(false);

            /*modalGenericObject.SetActive(false);*/

            //create an outcome window to notify player
            ModalOutcomeDetails outcomeDetails = new ModalOutcomeDetails();
            outcomeDetails.textTop    = "There has been a SNAFU";
            outcomeDetails.textBottom = "Heads, toes and other limbswill be removed";
            outcomeDetails.side       = details.side;
            EventManager.i.PostNotification(EventType.OutcomeOpen, this, outcomeDetails, "ModalGenericPicker.cs -> SetGenericPicker");
        }
        //all good, generate
        else
        {
            //texts
            topText.text    = details.textTop;
            middleText.text = details.textMiddle;
            bottomText.text = details.textBottom;
            //set game state
            ModalStateData package = new ModalStateData();
            package.mainState   = ModalSubState.GenericPicker;
            package.pickerState = details.subState;
            GameManager.i.inputScript.SetModalState(package);
            Debug.LogFormat("[UI] ModalGenericPicker.cs -> SetGenericPicker{0}", "\n");
        }
    }