Esempio n. 1
0
        /// <summary>
        /// Устанавливает необходимые пункты меню для указанного предмета
        /// </summary>
        /// <param name="menu">Контекстное меню, в котором проводится установка</param>
        /// <param name="item">Предмет, относительно которого устанавливаются настройки</param>
        public void SetupPopupMenu(InventoryPopupMenu menu, Item item)
        {
            menu.setSelectedItem(item); // устанавливаем контекстному меню ссылку на выбранный предмет

            menu.useItem.setEnabled(item.toGameObject().GetComponent<DynamicObject>() as IUsedType !=null);
            menu.dropAllItems.setEnabled(item.getMaxCount() > 1 && item.getCount() > 1);
        }
Esempio n. 2
0
        /// <summary>
        /// Создаёт список свойств, которые даёт предмет
        /// </summary>
        /// <param name="item">Предмет, свойства которого анализируются</param>
        /// <returns>Возвращает список свойств</returns>
        public List<PropertyItem> createInformationItems(Item item)
        {
            if (item == null || item.toGameObject() == null)
                return null;

            DynamicObject dynamicObject = item.toGameObject().GetComponent<DynamicObject>();

            #if UNITY_EDITOR
            if (dynamicObject == null) {
                Debug.LogError("Предмет "+item.description.dName+" не имеет инициализированного gameObject!");
            }
            #endif

            List<PropertyItem> result = new List<PropertyItem>();
                checkStates(dynamicObject, ref result);
                checkTypes(dynamicObject, ref result);
            return result;
        }
Esempio n. 3
0
        /// <summary>
        /// Создаёт экземпляр объекта впереди камеры персонажа из предмета
        /// </summary>
        /// <param name="item">Предмет, экземпляр объекта которого надо создать</param>
        public void CreateNewInstance(Item item)
        {
            GameObject obj = GameObject.Instantiate<GameObject>(item.toGameObject());

            obj.transform.position = mainCamera.transform.position + (mainCamera.transform.forward * 1.2f);
            obj.transform.rotation = Quaternion.Euler(UnityEngine.Random.Range(0, 360), UnityEngine.Random.Range(0, 360), UnityEngine.Random.Range(0, 360));

            Rigidbody rigidBody = obj.GetComponent<Rigidbody>();

            if (rigidBody == null)
                return;

            Ray ray = Camera.main.ScreenPointToRay(GameConfig.CenterScreen);
            rigidBody.AddForce(ray.direction * 5f);
        }