示例#1
0
文件: Logic.cs 项目: senlace/shinkai
        public static void ConstructorCraft(ConstructorInput input, TechType tech)
        {
            if (!CrafterLogic.ConsumeResources(tech))
            {
                return;
            }

            uGUI.main.craftingMenu.Close(input);
            input.cinematicController.DisengageConstructor();

            Transform spawn    = input.constructor.GetItemSpawnPoint(tech);
            var       position = spawn.position;
            var       rotation = spawn.rotation;

            GameObject gameObject;

            if (tech == TechType.Cyclops)
            {
                SubConsoleCommand.main.SpawnSub("cyclops", position, rotation);
                gameObject = SubConsoleCommand.main.GetLastCreatedSub();
            }
            else
            {
                gameObject = CraftData.InstantiateFromPrefab(tech, false);
                Transform component = gameObject.GetComponent <Transform>();
                component.position = position;
                component.rotation = rotation;
            }

            LargeWorldEntity.Register(gameObject);
            gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
            CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject));
            Story.ItemGoalTracker.OnConstruct(tech);

            Commands.SendSpawn(gameObject, tech);
        }