public string GetFunctionText()
    {
        StoreObjectFunction_Handler functionHandler = gameObject_.GetComponent <StoreObjectFunction_Handler>();
        StoreObjectModifier_Handler modifierHandler = gameObject_.GetComponent <StoreObjectModifier_Handler>();

        if (functionHandler.HasBudtenderCounterFunction())
        {
            if (functionHandler.GetBudtenderCounterFunction().HasPriority()) // Make sure only one modifier/function is marked as priority on each object
            {
                return("Budtender Counter");
            }
        }
        if (functionHandler.HasCheckoutCounterFunction())
        {
            if (functionHandler.GetCheckoutCounterFunction().HasPriority()) // Make sure only one modifier/function is marked as priority on each object
            {
                return("Checkout Counter");
            }
        }
        if (functionHandler.HasDecorationFunction())
        {
            if (functionHandler.GetDecorationFunction().HasPriority()) // Make sure only one modifier/function is marked as priority on each object
            {
                return("Decoration");
            }
        }
        if (functionHandler.HasDisplayShelfFunction())
        {
            if (functionHandler.GetDisplayShelfFunction().HasPriority()) // Make sure only one modifier/function is marked as priority on each object
            {
                if (components.Contains("MainStore"))
                {
                    return("Display Shelf");
                }
                else
                {
                    return("Storage Shelf");
                }
            }
        }
        if (functionHandler.HasDoorwayFunction())
        {
            if (functionHandler.GetDoorwayFunction().HasPriority()) // Make sure only one modifier/function is marked as priority on each object
            {
                return("Doorway");
            }
        }

        // Two different defaults, both generic
        if (objType == objectType.StoreObject)
        {
            return("Store Object");
        }
        return("Object");
    }
示例#2
0
 void Awake()
 {
     try
     {
         dm = GameObject.Find("DispensaryManager").GetComponent <DispensaryManager>();
         h  = gameObject.AddComponent <Highlighter>();
         functionHandler = gameObject.GetComponent <StoreObjectFunction_Handler>();
         modifierHandler = gameObject.GetComponent <StoreObjectModifier_Handler>();
         //GetOnPlace();
     }
     catch (Exception ex)
     {
         //print("Probably in test scene");
     }
 }
    public void SelectObject(StoreObject object_)
    {
        if (selectedObject != null)
        {
            DeselectObject();
        }
        selectedObject          = object_;
        selectedObjectText.text = selectedObject.name;

        // Dynamic store object system
        int buttonCount = selectedObject.GetButtonCount();

        buttonCount++; // movement button
        StoreObjectFunction_Handler functionHandler = object_.functionHandler;
        StoreObjectModifier_Handler modifierHandler = object_.modifierHandler;

        if (modifierHandler.HasColorModifier())
        {
            AddColorModifier();
            ColorModifierOffScreen();
        }
        if (modifierHandler.HasModelsModifier())
        {
            AddModelsModifier();
            ModelsModifierOffScreen();
        }
        if (functionHandler.HasDisplayShelfFunction())
        {
            AddShelvesModifier();
            ShelvesModifierOffScreen();
        }
        if (modifierHandler.HasAddonsModifier())
        {
            AddAddonsModifier();
            AddonsModifierOffScreen();
        }
        CreateMovementButton();
        foreach (ObjectSelectionRoundButton button in buttons)
        {
            button.transform.SetAsLastSibling();
        }
        selectedObjectTextImage.transform.SetAsLastSibling();
        StartCoroutine(ButtonsOnScreen());
    }
    public void CreateStoreObjectsList(string search)
    {
        if (search == string.Empty)
        {
            //ClearSearch(false);
        }
        if (dm == null || database == null)
        {
            Start();
        }
        string component;

        try
        {
            component = dm.actionManager.selectedComponent.componentName;
        }
        catch (NullReferenceException)
        {
            component = string.Empty;
        }
        if (component != string.Empty)
        {
            foreach (StoreObjectDisplay display in storeObjectDisplays)
            {
                Destroy(display.gameObject);
            }
            storeObjectDisplays.Clear();
            List <StoreObjectReference> storeObjects = database.GetComponentObjects(component);
            if (search != string.Empty)
            {
                storeObjects = SearchKeyword(storeObjects, search);
            }
            if (!window.searchBar.ignoreFilters)
            {
                storeObjects = FilterList(storeObjects);
            }
            storeObjects = SortList(window.sortMode, storeObjects);
            storeObjectScrollbar.value = 1;
            RectTransform rectTransform      = storeObjectContentPanel.GetComponent <RectTransform>();
            float         prefabHeight       = displayPrefab.gameObject.GetComponent <RectTransform>().rect.height;
            float         contentPanelHeight = storeObjects.Count * prefabHeight + (prefabHeight * .5f);
            rectTransform.sizeDelta = new Vector2(storeObjectContentPanel.rectTransform.sizeDelta.x, contentPanelHeight);
            for (int i = 0; i < storeObjects.Count; i++)
            {
                // Assigning the display panel an object
                StoreObjectReference thisRef = storeObjects[i];
                if (thisRef.gameObject_ != null)
                {
                    StoreObjectDisplay newDisplay = Instantiate(displayPrefab);
                    newDisplay.reference               = thisRef;
                    newDisplay.nameText.text           = thisRef.productName;
                    newDisplay.functionText.text       = thisRef.GetFunctionText();
                    newDisplay.priceText.text          = "$" + thisRef.price.ToString();
                    newDisplay.objectScreenshot.sprite = thisRef.objectScreenshot;

                    //StoreObject thisStoreObject = thisRef.gameObject_.GetComponent<StoreObject>();
                    StoreObjectFunction_Handler functionHandler = thisRef.gameObject_.GetComponent <StoreObjectFunction_Handler>();
                    StoreObjectModifier_Handler modifierHandler = thisRef.gameObject_.GetComponent <StoreObjectModifier_Handler>();
                    bool noModifiers    = true;
                    bool noExtrasPanel  = true; // more specific than no modifiers - this is true if both addons and models modifiers dont exist
                    bool alreadySetMode = false;
                    if (modifierHandler.HasModelsModifier())
                    {
                        newDisplay.availableModes.Add(StoreObjectDisplay.CurrentExtrasMode.Sub_Models);
                        newDisplay.SetMode(StoreObjectDisplay.CurrentExtrasMode.Sub_Models);
                        noModifiers    = false;
                        noExtrasPanel  = false;
                        alreadySetMode = true;
                    }
                    if (functionHandler.HasDisplayShelfFunction())
                    {
                        noModifiers = false;
                    }
                    if (modifierHandler.HasAddonsModifier())
                    {
                        newDisplay.availableModes.Add(StoreObjectDisplay.CurrentExtrasMode.Addons);
                        if (!alreadySetMode)
                        { // If models modifier doesnt exist, go straight to addons mode
                            newDisplay.SetMode(StoreObjectDisplay.CurrentExtrasMode.Addons);
                        }
                        noModifiers   = false;
                        noExtrasPanel = false;
                    }
                    if (modifierHandler.HasColorModifier())
                    {
                        noModifiers = false;
                    }
                    if (noModifiers)
                    {
                        newDisplay.functionDisplayPanel.gameObject.SetActive(false);
                        newDisplay.extrasParentPanel.gameObject.SetActive(false);
                    }
                    if (noExtrasPanel)
                    {
                        newDisplay.extrasParentPanel.gameObject.SetActive(false);
                    }

                    // Button listeners
                    // purchase button needs to start place object action and close store panel
                    // dropdown button needs to open a dropdown giving the option to switch the extras panel content type

                    // Positioning
                    newDisplay.transform.SetParent(storeObjectContentPanel.transform.parent, false);
                    newDisplay.gameObject.SetActive(true);
                    newDisplay.gameObject.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, -prefabHeight * i);
                    storeObjectDisplays.Add(newDisplay);
                }
                else
                {// Alerts me when i've misnamed something and its not retrieved the object from resources properly.  This shouldnt print in final build
                    print("Gameobject null for storereference " + thisRef.productName);
                }
            }
            foreach (StoreObjectDisplay display in storeObjectDisplays)
            {
                display.transform.SetParent(storeObjectContentPanel.transform);
            }
        }
    }