public static GameObject Create(CraftData data, Vector3 pos, PlayerCharacter owner)
        {
            if (data is ItemData)
            {
                ItemData item = (ItemData)data;
                Item     obj  = Item.Create(item, pos, 1);
                return(obj.gameObject);
            }

            if (data is PlantData)
            {
                PlantData item = (PlantData)data;
                Plant     obj  = Plant.Create(item, pos, -1);
                return(obj.gameObject);
            }

            if (data is ConstructionData)
            {
                ConstructionData item = (ConstructionData)data;
                Construction     obj  = Construction.Create(item, pos);
                return(obj.gameObject);
            }

            if (data is CharacterData)
            {
                CharacterData item = (CharacterData)data;
                Character     obj  = Character.Create(item, pos);
                return(obj.gameObject);
            }

            return(null);
        }
예제 #2
0
        public void SpawnLoot(CraftData item, int quantity = 1)
        {
            Vector3 pos = GetLootRandomPos();

            if (item is ItemData)
            {
                ItemData aitem = (ItemData)item;
                Item.Create(aitem, pos, quantity);
            }
            if (item is ConstructionData)
            {
                ConstructionData construct_data = (ConstructionData)item;
                Construction.Create(construct_data, pos);
            }
            if (item is PlantData)
            {
                PlantData plant_data = (PlantData)item;
                Plant.Create(plant_data, pos, 0);
            }
        }
        public Construction CraftConstruction(ConstructionData construct, bool pay_craft_cost = true)
        {
            if (!pay_craft_cost || CanCraft(construct))
            {
                if (pay_craft_cost)
                {
                    PayCraftingCost(construct);
                }

                Vector3      pos        = transform.position + transform.forward * 1f;
                Construction aconstruct = Construction.Create(construct, pos);

                character.Data.AddCraftCount(construct.id);

                if (onCraft != null)
                {
                    onCraft.Invoke(construct);
                }

                return(aconstruct);
            }
            return(null);
        }