Ejemplo n.º 1
0
    public IEnumerator IndicatorCheck()
    {
        while (true)
        {
            Collider[] hitColliders = Physics.OverlapSphere(transform.position, indicatorRange);
            foreach (ActionIndicator indicator in aIndicators)
            {
                if (indicator.anim.isActiveAndEnabled)
                {
                    indicator.anim.SetBool("isVisible", false);
                }
            }
            aIndicators.Clear();

            foreach (Collider col in hitColliders)
            {
                ActionIndicator indicator = col.GetComponentInChildren <ActionIndicator>();
                if (indicator)
                {
                    aIndicators.Add(indicator);
                }
            }

            foreach (ActionIndicator indicator in aIndicators)
            {
                RaycastHit hit;
                if (Physics.Linecast(transform.position, indicator.transform.position, out hit) && hit.transform.gameObject == indicator.iObject.gameObject && !indicator.isGazedAt)
                {
                    if (indicator.anim.isActiveAndEnabled)
                    {
                        indicator.anim.SetBool("isVisible", true);
                    }
                }
                else
                {
                    if (indicator.anim.isActiveAndEnabled)
                    {
                        indicator.anim.SetBool("isVisible", false);
                    }
                }
            }

            yield return(new WaitForSeconds(updateRate));
        }
    }
Ejemplo n.º 2
0
    // TODO - maybe UI panels should have base and subclasses that implement their own creation methods
    public void CreateInteractionPanel(WorldObject.InformationStruct informationStruct)
    {
        GameObject obj = Instantiate(interactionPanelPrefab, transform);

        obj.transform.SetParent(transform);
        obj.transform.position = Input.mousePosition;
        InteractionPanel interactionPanel = obj.GetComponent <InteractionPanel>();

        // Set the title as the object name
        interactionPanel.objectNameText.text = informationStruct.objectName;

        // Set this panel to close on the close button click
        interactionPanel.closeButton.onClick.AddListener(() => { Destroy(obj); });

        // Update the actions panel
        foreach (Action action in informationStruct.actions)
        {
            ActionIndicator actionIndicator = Instantiate(interactionPanel.actionEntryPrefab, transform);
            actionIndicator.transform.SetParent(interactionPanel.actionListPanel.transform);

            // Link the add item button
            actionIndicator.addItemButton.onClick.AddListener(() => { CreateItemSelectPanel(interactionPanel, action); });

            // Add the action title
            actionIndicator.actionNameText.text = action.description;

            // Add precondition icons
            foreach (WorldItem precondition in action.preconditions)
            {
                Image itemIcon = Instantiate(actionIndicator.itemIcon, transform);
                itemIcon.transform.SetParent(actionIndicator.preconditionGridLayout.transform);
                itemIcon.sprite = precondition.itemDefinition.icon;
            }

            // Add effect icons
            foreach (WorldItem effect in action.effects)
            {
                Image itemIcon = Instantiate(actionIndicator.itemIcon, transform);
                itemIcon.transform.SetParent(actionIndicator.effectGridLayout.transform);
                itemIcon.sprite = effect.itemDefinition.icon;
            }
        }
    }
Ejemplo n.º 3
0
 // When we are enabled
 public virtual void Start()
 {
     indicator         = Instantiate(UI.current.aIndicatorPrefab, transform);
     indicator.iObject = this;
 }