コード例 #1
0
ファイル: PriorityQueue.cs プロジェクト: Ruthq/OpenCircuit
    public void Enqueue(Prioritizable p)
    {
        if (p == null)
        {
            throw new NullReferenceException("PriorityQueue does not accept null objects");
        }
        float min = 0;

        if (list.Count == 0)
        {
            list.Add(p);
        }
        else
        {
            min = p.getPriority();
            for (int j = 0; j < list.Count; j++)
            {
                float dist = list[j].getPriority();
                if (dist < min)
                {
                    list.Insert(j, p);
                    break;
                }
                else if (j == list.Count - 1)
                {
                    list.Add(p);
                    break;
                }
            }
        }
    }
コード例 #2
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            var energyGenerator = go.AddOrGet <EnergyGenerator>();

            energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(SimHashes.RefinedCarbon.CreateTag(), 1f, 600f,
                                                                          SimHashes.CarbonDioxide, 0.25f, true, CellOffset.none, 700f);
            energyGenerator.meterOffset = Meter.Offset.Behind;
            energyGenerator.SetSliderValue(50f, 0);
            energyGenerator.powerDistributionOrder = 9;
            var storage = go.AddOrGet <Storage>();

            storage.capacityKg = 600f;
            go.AddOrGet <LoopingSounds>();
            Prioritizable.AddRef(go);
            var manualDeliveryKg = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKg.SetStorage(storage);
            manualDeliveryKg.requestedItemTag = SimHashes.RefinedCarbon.CreateTag();
            manualDeliveryKg.capacity         = storage.capacityKg;
            manualDeliveryKg.refillMass       = 100f;
            manualDeliveryKg.choreTypeIDHash  = Db.Get().ChoreTypes.PowerFetch.IdHash;
            Tinkerable.MakePowerTinkerable(go);

            ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

            conduitDispenser.conduitType         = ConduitType.Gas;
            conduitDispenser.invertElementFilter = false;
            conduitDispenser.elementFilter       = new []
            {
                SimHashes.CarbonDioxide
            };
        }
コード例 #3
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        Prioritizable.AddRef(go);
        Storage storage = go.AddOrGet <Storage>();

        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
        storage.showDescriptor   = true;
        storage.storageFilters   = STORAGEFILTERS.LIQUIDS;
        storage.capacityKg       = 350f;
        storage.allowItemRemoval = true;
        storage.showInUI         = true;
        go.AddOrGet <DropAllWorkable>();
        LiquidBottler liquidBottler = go.AddOrGet <LiquidBottler>();

        liquidBottler.storage  = storage;
        liquidBottler.workTime = 9f;
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.storage            = storage;
        conduitConsumer.conduitType        = ConduitType.Liquid;
        conduitConsumer.ignoreMinMassCheck = true;
        //conduitConsumer.forceAlwaysSatisfied = true;
        //conduitConsumer.alwaysConsume = true;
        conduitConsumer.capacityKG         = storage.capacityKg;
        conduitConsumer.keepZeroMassObject = false;
    }
コード例 #4
0
        // Big copy paste of the game code
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>();

            electrolyzer.maxMass  = 1.8f;
            electrolyzer.hasMeter = true;
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType        = ConduitType.Liquid;
            conduitConsumer.consumptionRate    = 1f;
            conduitConsumer.capacityTag        = ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag;
            conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump;
            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg = 2f;
            storage.showInUI   = true;
            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
            {
                new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 1f)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[]
            {
                new ElementConverter.OutputElement(0.888f, SimHashes.ContaminatedOxygen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0),
                new ElementConverter.OutputElement(0.111999989f, SimHashes.Hydrogen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0)
            };
            Prioritizable.AddRef(go);
        }
コード例 #5
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            GeneratedBuildings.MakeBuildingAlwaysOperational(go);
            BuildingConfigManager.Instance.IgnoreDefaultKComponent(typeof(RequiresFoundation), prefab_tag);
            var simCellOccupier = go.AddOrGet <SimCellOccupier>();

            simCellOccupier.doReplaceElement = true;
            simCellOccupier.notifyOnMelt     = true;
            go.AddOrGet <TileTemperature>();
            var storage = BuildingTemplates.CreateDefaultStorage(go, false);

            storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
            var plantablePlot = go.AddOrGet <PlantablePlot>();

            plantablePlot.occupyingObjectRelativePosition = new Vector3(0f, 1f);
            plantablePlot.AddDepositTag(GameTags.CropSeed);
            plantablePlot.AddDepositTag(GameTags.WaterSeed);
            plantablePlot.SetFertilizationFlags(true, true);
            var copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>();

            copyBuildingSettings.copyGroupTag = GameTags.Farm;
            go.AddOrGet <AnimTileable>();
            go.AddOrGet <DropAllWorkable>();
            Prioritizable.AddRef(go);

            go.AddOrGet <AquaticFarm>();
            AddPassiveElementConsumer(go, new Vector3(0f, 1f));
            AddPassiveElementConsumer(go, new Vector3(0f, -1f));
            AddPassiveElementConsumer(go, new Vector3(1f, 0f));
            AddPassiveElementConsumer(go, new Vector3(-1f, 0f));
        }
コード例 #6
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        Storage storage = go.AddOrGet <Storage>();

        storage.SetDefaultStoredItemModifiers(Storage.StandardInsulatedStorage);
        storage.showInUI   = true;
        storage.capacityKg = 30f;
        Storage storage2 = go.AddComponent <Storage>();

        storage2.SetDefaultStoredItemModifiers(Storage.StandardInsulatedStorage);
        storage2.showInUI             = true;
        storage2.capacityKg           = 150f;
        storage2.allowItemRemoval     = true;
        storage2.ignoreSourcePriority = true;
        storage2.allowUIItemRemoval   = true;
        go.AddOrGet <LoopingSounds>();
        Prioritizable.AddRef(go);
        IceMachine iceMachine = go.AddOrGet <IceMachine>();

        iceMachine.SetStorages(storage, storage2);
        iceMachine.targetTemperature = 253.15f;
        iceMachine.heatRemovalRate   = 20f;
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = GameTags.Water;
        manualDeliveryKG.capacity         = 30f;
        manualDeliveryKG.refillMass       = 6f;
        manualDeliveryKG.minimumMass      = 10f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.MachineFetch.IdHash;
    }
コード例 #7
0
ファイル: gate.cs プロジェクト: Mazrob/MM-ONI-Rainbow
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <LoreBearer>();
            go.AddOrGet <Telepad>();
            Light2D light2D = go.AddOrGet <Light2D>();

            light2D.Color         = LIGHT2D.HEADQUARTERS_COLOR;
            light2D.Range         = 5f;
            light2D.Offset        = LIGHT2D.HEADQUARTERS_OFFSET;
            light2D.overlayColour = LIGHT2D.HEADQUARTERS_OVERLAYCOLOR;
            light2D.shape         = LightShape.Circle;
            light2D.drawOverlay   = true;


            go.AddOrGet <DropAllWorkable>();
            Prioritizable.AddRef(go);
            go.AddOrGet <BuildingComplete>().isManuallyOperated = false;
            ComplexFabricator fabricator = go.AddOrGet <ComplexFabricator>();

            BuildingTemplates.CreateComplexFabricatorStorage(go, fabricator);


            Storage storage = go.AddOrGet <Storage>();

            storage.showInUI          = true;
            storage.allowItemRemoval  = false;
            storage.showDescriptor    = false;
            storage.storageFilters    = STORAGEFILTERS.NOT_EDIBLE_SOLIDS;
            storage.storageFullMargin = STORAGE.STORAGE_LOCKER_FILLED_MARGIN;
            storage.fetchCategory     = Storage.FetchCategory.GeneralStorage;
            // todo storage.Serialize
        }
コード例 #8
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            SoundEventVolumeCache.instance.AddVolume("storagelocker_kanim", "StorageLocker_Hit_metallic_low", TUNING.NOISE_POLLUTION.NOISY.TIER1);
            Prioritizable.AddRef(go);
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
            go.GetComponent <KPrefabID>().AddTag(GameTags.OverlayBehindConduits, false);
            go.AddOrGet <EnergyConsumer>();
            go.AddOrGet <Reservoir>();

            Storage defaultStorage = BuildingTemplates.CreateDefaultStorage(go, false);

            defaultStorage.showDescriptor   = true;
            defaultStorage.allowItemRemoval = false;
            defaultStorage.storageFilters   = STORAGEFILTERS.LIQUIDS;
            defaultStorage.capacityKg       = TrashcansConfigChecker.LiquidTrashCapicityKG;
            defaultStorage.showInUI         = true;
            defaultStorage.SetDefaultStoredItemModifiers(GasReservoirConfig.ReservoirStoredItemModifiers);

            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Liquid;
            conduitConsumer.ignoreMinMassCheck   = true;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.alwaysConsume        = false;
            conduitConsumer.capacityKG           = defaultStorage.capacityKg;

            go.AddOrGet <Trashcan>();
            go.AddOrGet <UserNameable>();
            go.AddOrGet <ReservoirTrashcanAnim>();
        }
コード例 #9
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            var def = go.AddOrGetDef <RanchStation.Def>();

            def.isCreatureEligibleToBeRanchedCb = delegate(GameObject creature_go, RanchStation.Instance ranch_station_smi)
            {
                var butcherStation = ranch_station_smi.GetComponent <ButcherStation>();
                return(butcherStation?.IsCreatureEligibleToBeButched(creature_go) ?? false);
            };
            def.onRanchCompleteCb = delegate(GameObject creature_go)
            {
                ButcherStation.ButchCreature(creature_go, true);
            };
            def.getTargetRanchCell = delegate(RanchStation.Instance smi)
            {
                if (!smi.IsNullOrStopped())
                {
                    int cell = Grid.CellBelow(Grid.PosToCell(smi.transform.GetPosition()));
                    cell = Grid.OffsetCell(cell, 0, -FishingStationGuide.GetDepthAvailable(smi.gameObject, out _));
                    if (Grid.IsValidCell(cell))
                    {
                        return(cell);
                    }
                }
                return(Grid.InvalidCell);
            };
            def.interactLoopCount   = 1;
            def.rancherInteractAnim = "anim_interacts_fishingstation_kanim";
            def.ranchedPreAnim      = "bitehook";
            def.ranchedLoopAnim     = "caught_loop";
            def.ranchedPstAnim      = "trapped_pre";
            def.synchronizeBuilding = true;
            Prioritizable.AddRef(go);
            go.AddOrGet <FishingStationGuide>().type = FishingStationGuide.GuideType.Complete;
        }
コード例 #10
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <Filterable>().filterElementState = Filterable.ElementState.Solid;

            go.AddOrGet <InfiniteSourceFlowControl>();
            go.AddOrGet <InfiniteSource>().Type = ConduitType.Solid;

            SoundEventVolumeCache.instance.AddVolume("conveyorin_kanim", "StorageLocker_Hit_metallic_low", NOISE_POLLUTION.NOISY.TIER1);
            Prioritizable.AddRef(go);
            Storage storage = go.AddOrGet <Storage>();

            storage.showInUI         = true;
            storage.allowItemRemoval = false;
            storage.showDescriptor   = true;
            storage.fetchCategory    = Storage.FetchCategory.GeneralStorage;
            List <Tag> tagList = new List <Tag>();

            tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS);
            tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.FOOD);
            storage.storageFilters = tagList;
            CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>();

            copyBuildingSettings.copyGroupTag = GameTags.StorageLocker;
            go.AddOrGet <SolidConduitDispenser>();
        }
コード例 #11
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            BuildingTemplates.DoPostConfigure(go);
            go.AddOrGet <EnergyConsumer>();
            Prioritizable.AddRef(go);
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);

            List <Tag> tagList = new List <Tag>();

            tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS);
            tagList.AddRange((IEnumerable <Tag>)STORAGEFILTERS.FOOD);

            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg       = 0f;
            storage.showInUI         = true;
            storage.showDescriptor   = true;
            storage.storageFilters   = tagList;
            storage.allowItemRemoval = false;
            storage.onlyTransferFromLowerPriority = false;

            go.AddOrGet <Automatable>();
            go.AddOrGet <TreeFilterable>();

            SolidConduitFilter filterLogic = go.AddOrGet <SolidConduitFilter>();

            filterLogic.SecondaryPort = secondaryPort;

            go.GetComponent <KPrefabID>().prefabInitFn += (KPrefabID.PrefabFn)(game_object => new PoweredActiveController.Instance((IStateMachineTarget)game_object.GetComponent <KPrefabID>())
            {
                ShowWorkingStatus = true
            }.StartSM());
        }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        SimCellOccupier simCellOccupier = go.AddOrGet <SimCellOccupier>();

        simCellOccupier.doReplaceElement = true;
        go.AddOrGet <TileTemperature>();
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType        = ConduitType.Liquid;
        conduitConsumer.consumptionRate    = 1f;
        conduitConsumer.capacityKG         = 5f;
        conduitConsumer.capacityTag        = GameTags.Liquid;
        conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump;
        go.AddOrGet <Storage>();
        PlantablePlot plantablePlot = go.AddOrGet <PlantablePlot>();

        plantablePlot.AddDepositTag(GameTags.CropSeed);
        plantablePlot.AddDepositTag(GameTags.WaterSeed);
        plantablePlot.occupyingObjectRelativePosition.y = 1f;
        plantablePlot.SetFertilizationFlags(true, true);
        CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>();

        copyBuildingSettings.copyGroupTag = GameTags.Farm;
        Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);

        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
        go.AddOrGet <PlanterBox>();
        go.AddOrGet <AnimTileable>();
        go.AddOrGet <DropAllWorkable>();
        Prioritizable.AddRef(go);
    }
コード例 #13
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            Prioritizable.AddRef(go);
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
            var storage = go.AddOrGet <Storage>();

            storage.capacityKg       = float.PositiveInfinity;
            storage.allowItemRemoval = true;
            storage.SetDefaultStoredItemModifiers(
                new List <Storage.StoredItemModifier>
            {
                Storage.StoredItemModifier.Insulate,
                Storage.StoredItemModifier.Hide,
                Storage.StoredItemModifier.Seal,
            }
                );

            storage.storageFilters = STORAGEFILTERS.NOT_EDIBLE_SOLIDS;
            storage.fetchCategory  = Storage.FetchCategory.GeneralStorage;
            storage.showInUI       = false;
            go.AddOrGet <CopyBuildingSettings>().copyGroupTag = GameTags.StorageLocker;
            go.AddOrGet <InfiniteStorage>();
            go.AddOrGet <ShowHideContentsButton>();
            go.AddOrGet <UserNameable>();
        }
コード例 #14
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            Prioritizable.AddRef(go);
            Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>();

            electrolyzer.maxMass  = 3.0f;
            electrolyzer.hasMeter = true;
            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg = 80f;
            storage.showInUI   = true;
            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
            {
                new ElementConverter.ConsumedElement(new Tag("SwampLilyFlower"), 1.0f)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[]
            {
                new ElementConverter.OutputElement(0.25f, SimHashes.ChlorineGas, 348.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0),
                new ElementConverter.OutputElement(0.66f, SimHashes.Algae, 323.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0)
            };
            ElementDropper elementDropper = go.AddComponent <ElementDropper>();

            elementDropper.emitMass   = 10f;
            elementDropper.emitTag    = SimHashes.Algae.CreateTag();
            elementDropper.emitOffset = new Vector3(0.5f, 0.5f, 0f);
            ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag = new Tag("SwampLilyFlower");
            manualDeliveryKG.capacity         = 80f;
            manualDeliveryKG.refillMass       = 32f;
            manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.MachineFetch.IdHash;
        }
コード例 #15
0
 public override void DoPostConfigureComplete(GameObject prefab)
 {
     BuildingTemplates.DoPostConfigure(prefab);
     SymbolOverrideControllerUtil.AddToPrefab(prefab);
     GeneratedBuildings.RegisterLogicPorts(prefab, LogicOperationalController.INPUT_PORTS_0_0);
     prefab.AddOrGet <LogicOperationalController>();
     Lure.Def def = prefab.AddOrGetDef <Lure.Def>();
     def.lurePoints = new CellOffset[13]
     {
         new CellOffset(0, 0),
         new CellOffset(-1, 4),
         new CellOffset(0, 4),
         new CellOffset(1, 4),
         new CellOffset(-2, 3),
         new CellOffset(-1, 3),
         new CellOffset(0, 3),
         new CellOffset(1, 3),
         new CellOffset(2, 3),
         new CellOffset(-1, 2),
         new CellOffset(0, 2),
         new CellOffset(1, 2),
         new CellOffset(0, 1)
     };
     def.radius = 32;
     Prioritizable.AddRef(prefab);
 }
コード例 #16
0
    public override void DoPostConfigureComplete(GameObject go)
    {
        Door door = go.AddOrGet <Door>();

        door.unpoweredAnimSpeed        = 1f;
        door.doorType                  = Door.DoorType.Internal;
        door.doorOpeningSoundEventName = "Open_DoorInternal";
        door.doorClosingSoundEventName = "Close_DoorInternal";
        AccessControl accessControl = go.AddOrGet <AccessControl>();

        accessControl.controlEnabled = true;
        CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>();

        copyBuildingSettings.copyGroupTag = GameTags.Door;
        Workable workable = go.AddOrGet <Workable>();

        workable.workTime = 3f;
        KBatchedAnimController component = go.GetComponent <KBatchedAnimController>();

        component.initialAnim = "closed";
        go.AddOrGet <ZoneTile>();
        go.AddOrGet <KBoxCollider2D>();
        Prioritizable.AddRef(go);
        GeneratedBuildings.RegisterLogicPorts(go, INPUT_PORTS_0_0);
        Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>());
    }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        Prioritizable.AddRef(go);
        Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>();

        electrolyzer.maxMass  = 1.8f;
        electrolyzer.hasMeter = false;
        Storage storage = go.AddOrGet <Storage>();

        storage.capacityKg = 330f;
        storage.showInUI   = true;
        ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
        {
            new ElementConverter.ConsumedElement(new Tag("Algae"), 0.55f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(0.5f, SimHashes.Oxygen, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0)
        };
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = new Tag("Algae");
        manualDeliveryKG.capacity         = 330f;
        manualDeliveryKG.refillMass       = 132f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
    }
コード例 #18
0
 protected override void OnDragTool(int cell, int distFromOrigin)
 {
     for (int i = 0; i < 39; i++)
     {
         if (IsActiveLayer((ObjectLayer)i))
         {
             GameObject gameObject = Grid.Objects[cell, i];
             if (!((Object)gameObject == (Object)null))
             {
                 EmptyConduitWorkable component = gameObject.GetComponent <EmptyConduitWorkable>();
                 if (!((Object)component == (Object)null))
                 {
                     if (DebugHandler.InstantBuildMode)
                     {
                         component.EmptyPipeContents();
                     }
                     else
                     {
                         component.MarkForEmptying();
                         Prioritizable component2 = gameObject.GetComponent <Prioritizable>();
                         if ((Object)component2 != (Object)null)
                         {
                             component2.SetMasterPriority(ToolMenu.Instance.PriorityScreen.GetLastSelectedPriority());
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #19
0
    public override void DoPostConfigureComplete(GameObject go)
    {
        Door door = go.AddOrGet <Door>();

        door.hasComplexUserControls    = true;
        door.unpoweredAnimSpeed        = 0.65f;
        door.poweredAnimSpeed          = 5f;
        door.doorClosingSoundEventName = "MechanizedAirlock_closing";
        door.doorOpeningSoundEventName = "MechanizedAirlock_opening";
        go.AddOrGet <AccessControl>();
        go.AddOrGet <KBoxCollider2D>();
        Prioritizable.AddRef(go);
        Workable workable = go.AddOrGet <Workable>();

        workable.workTime = 5f;
        GeneratedBuildings.RegisterLogicPorts(go, DoorConfig.INPUT_PORTS);
        Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>());
        BuildingTemplates.DoPostConfigure(go);
        AccessControl component = go.GetComponent <AccessControl>();

        component.controlEnabled = true;
        KBatchedAnimController component2 = go.GetComponent <KBatchedAnimController>();

        component2.initialAnim = "closed";
    }
コード例 #20
0
    protected override void OnDragTool(int cell, int distFromOrigin)
    {
        GameObject gameObject = Grid.Objects[cell, 3];

        if (!((Object)gameObject == (Object)null))
        {
            ObjectLayerListItem objectLayerListItem = gameObject.GetComponent <Pickupable>().objectLayerListItem;
            while (objectLayerListItem != null)
            {
                GameObject gameObject2 = objectLayerListItem.gameObject;
                objectLayerListItem = objectLayerListItem.nextItem;
                if (!((Object)gameObject2 == (Object)null) && !((Object)gameObject2.GetComponent <MinionIdentity>() != (Object)null))
                {
                    Clearable component = gameObject2.GetComponent <Clearable>();
                    if (component.isClearable)
                    {
                        gameObject2.GetComponent <Clearable>().MarkForClear(false);
                        Prioritizable component2 = gameObject2.GetComponent <Prioritizable>();
                        if ((Object)component2 != (Object)null)
                        {
                            component2.SetMasterPriority(ToolMenu.Instance.PriorityScreen.GetLastSelectedPriority());
                        }
                    }
                }
            }
        }
    }
コード例 #21
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.AddOrGet <BuildingComplete>().isManuallyOperated = true;
        Prioritizable.AddRef(go);
        Storage storage = go.AddOrGet <Storage>();

        storage.capacityKg = 1000f;
        storage.showInUI   = true;
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = INPUT_MATERIAL;
        manualDeliveryKG.refillMass       = 150f;
        manualDeliveryKG.capacity         = 750f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.ResearchFetch.IdHash;
        ResearchCenter researchCenter = go.AddOrGet <ResearchCenter>();

        researchCenter.overrideAnims = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_research_center_kanim")
        };
        researchCenter.research_point_type_id = "alpha";
        researchCenter.inputMaterial          = INPUT_MATERIAL;
        researchCenter.mass_per_point         = 50f;
        ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
        {
            new ElementConverter.ConsumedElement(INPUT_MATERIAL, 1.16f)
        };
        elementConverter.showDescriptors = false;
        go.AddOrGetDef <PoweredController.Def>();
    }
コード例 #22
0
ファイル: Supersolar.cs プロジェクト: Mazrob/MM-ONI-Rainbow
 public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
 {
     go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
     go.AddOrGet <LoopingSounds>();
     Prioritizable.AddRef(go);
     Tinkerable.MakePowerTinkerable(go);
 }
コード例 #23
0
        /*   public override void DoPostConfigurePreview(BuildingDef def, GameObject go)
         * {
         *     GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT);
         * }
         *
         * public override void DoPostConfigureUnderConstruction(GameObject go)
         * {
         *     GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT);
         * }*/

        public override void DoPostConfigureComplete(GameObject go)
        {
            List <Tag> mod = new List <Tag>();

            mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.NOT_EDIBLE_SOLIDS);
            mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.LIQUIDS);
            mod.AddRange((IEnumerable <Tag>)STORAGEFILTERS.GASES);

            //  GeneratedBuildings.RegisterLogicPorts(go, UniversalHeaterConfig.OUTPUT_PORT);
            Storage storage = go.AddOrGet <Storage>();

            storage.showInUI          = true;
            storage.showDescriptor    = true;
            storage.storageFilters    = mod;
            storage.allowItemRemoval  = true;
            storage.capacityKg        = 1000000f;
            storage.storageFullMargin = STORAGE.STORAGE_LOCKER_FILLED_MARGIN;
            storage.fetchCategory     = Storage.FetchCategory.GeneralStorage;
            Prioritizable.AddRef(go);
            go.AddOrGet <TreeFilterable>();
            go.AddOrGet <UniversalHeater>().simulatedInternalTemperature  = 373.15f;
            go.AddOrGet <UniversalHeater>().simulatedInternalHeatCapacity = 4000f;
            go.AddOrGet <UniversalHeater>().simulatedThermalConductivity  = 1000f;
            go.AddOrGet <DropAllWorkable>();
            go.AddOrGetDef <StorageController.Def>();
        }
コード例 #24
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
            Storage defaultStorage = BuildingTemplates.CreateDefaultStorage(go, false);

            defaultStorage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
            defaultStorage.storageFilters = new List <Tag>()
            {
                new Tag("BleachStone")
            };
            defaultStorage.capacityKg = 400f + 20f;
            go.AddOrGet <HexiLiquidGermScrubber>();
            Prioritizable.AddRef(go);
            GermScrubConverter elementConverter = go.AddOrGet <GermScrubConverter>();

            elementConverter.SetStorage(defaultStorage);
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Liquid;
            conduitConsumer.consumptionRate      = 10f;
            conduitConsumer.capacityKG           = 20f;
            conduitConsumer.capacityTag          = GameTags.Liquid;
            conduitConsumer.forceAlwaysSatisfied = true;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
            ManualDeliveryKG manualDeliveryKg = go.AddComponent <ManualDeliveryKG>();

            manualDeliveryKg.SetStorage(defaultStorage);
            manualDeliveryKg.requestedItemTag = ElementLoader.FindElementByHash(SimHashes.BleachStone).tag;
            manualDeliveryKg.capacity         = 400f;
            manualDeliveryKg.refillMass       = 100f;
            manualDeliveryKg.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
        }
コード例 #25
0
    public override void DoPostConfigureComplete(GameObject go)
    {
        GeneratedBuildings.RegisterLogicPorts(go, DoorConfig.INPUT_PORTS_N1_0);
        Door door = go.AddOrGet <Door>();

        door.unpoweredAnimSpeed        = 0.01f;
        door.poweredAnimSpeed          = 0.1f;
        door.hasComplexUserControls    = true;
        door.allowAutoControl          = false;
        door.doorOpeningSoundEventName = "BunkerDoor_opening";
        door.doorClosingSoundEventName = "BunkerDoor_closing";
        door.verticalOrientation       = Orientation.R90;
        Workable workable = go.AddOrGet <Workable>();

        workable.workTime = 3f;
        KBatchedAnimController component = go.GetComponent <KBatchedAnimController>();

        component.initialAnim    = "closed";
        component.visibilityType = KAnimControllerBase.VisibilityType.OffscreenUpdate;
        go.AddOrGet <ZoneTile>();
        go.AddOrGet <KBoxCollider2D>();
        Prioritizable.AddRef(go);
        Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>());
        KPrefabID component2 = go.GetComponent <KPrefabID>();

        component2.AddTag(GameTags.Bunker, false);
    }
コード例 #26
0
ファイル: PriorityQueue.cs プロジェクト: Ruthq/OpenCircuit
    public Prioritizable Dequeue()
    {
        Prioritizable p = list[0];

        list.RemoveAt(0);
        return(p);
    }
コード例 #27
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <KPrefabID>().AddTag(GameTags.NotRocketInteriorBuilding);
            go.AddOrGet <BuildingComplete>().isManuallyOperated = true;
            Prioritizable.AddRef(go);
            go.AddOrGetDef <PoweredController.Def>();
            go.AddOrGet <ClusterLargeTelescopeWorkable>().efficiencyMultiplier = 1f + (LargeTelescopeOptions.Instance.efficiency_multiplier / 100f);
            var def = go.AddOrGetDef <ClusterTelescope.Def>();

            def.clearScanCellRadius   = 6;
            def.analyzeClusterRadius  = LargeTelescopeOptions.Instance.analyze_cluster_radius;
            def.workableOverrideAnims = new KAnimFile[] { Assets.GetAnim("anim_interacts_telescope_kanim") };
            def.providesOxygen        = true;
            var storage = go.AddOrGet <Storage>();

            storage.capacityKg = 1000f;
            storage.showInUI   = true;
            var conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType          = ConduitType.Gas;
            conduitConsumer.consumptionRate      = ConduitFlow.MAX_GAS_MASS;
            conduitConsumer.capacityTag          = GameTags.Oxygen;
            conduitConsumer.wrongElementResult   = ConduitConsumer.WrongElementResult.Dump;
            conduitConsumer.capacityKG           = OXYGEN_CAPACITY;
            conduitConsumer.forceAlwaysSatisfied = true;
        }
コード例 #28
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <DropAllWorkable>();
            go.AddOrGet <BuildingComplete>().isManuallyOperated = true;
            GlassForge inductor = go.AddOrGet <GlassForge>();

            inductor.sideScreenStyle = ComplexFabricatorSideScreen.StyleSetting.ListQueueHybrid;
            go.AddOrGet <CopyBuildingSettings>();
            ComplexFabricatorWorkable complexFabricatorWorkable = go.AddOrGet <ComplexFabricatorWorkable>();

            inductor.duplicantOperated = false;
            BuildingTemplates.CreateComplexFabricatorStorage(go, inductor);
            inductor.outStorage.capacityKg = 2000f;
            inductor.storeProduced         = true;
            inductor.inStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers);
            inductor.buildStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers);
            inductor.outStorage.SetDefaultStoredItemModifiers(InductorConfig.RefineryStoredItemModifiers);
            inductor.outputOffset = new Vector3(1f, 0.5f);

            complexFabricatorWorkable.overrideAnims = new KAnimFile[]
            {
                Assets.GetAnim("anim_interacts_metalrefinery_kanim")
            };

            inductor.resultState = ComplexFabricator.ResultState.Melted;
            ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

            conduitDispenser.storage        = inductor.outStorage;
            conduitDispenser.conduitType    = ConduitType.Liquid;
            conduitDispenser.elementFilter  = null;
            conduitDispenser.alwaysDispense = true;

            this.ConfigureRecipes();
            Prioritizable.AddRef(go);
        }
コード例 #29
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            Door door = go.AddOrGet <Door>();

            door.hasComplexUserControls    = true;
            door.unpoweredAnimSpeed        = 0.9f;
            door.poweredAnimSpeed          = 6f;
            door.doorClosingSoundEventName = "MechanizedAirlock_closing";
            door.doorOpeningSoundEventName = "MechanizedAirlock_opening";
            go.AddOrGet <ZoneTile>();
            go.AddOrGet <AccessControl>();
            go.AddOrGet <KBoxCollider2D>();
            Prioritizable.AddRef(go);
            CopyBuildingSettings copyBuildingSettings = go.AddOrGet <CopyBuildingSettings>();

            copyBuildingSettings.copyGroupTag = GameTags.Door;
            Workable workable = go.AddOrGet <Workable>();

            workable.workTime = 10f;
            UnityEngine.Object.DestroyImmediate(go.GetComponent <BuildingEnabledButton>());
            AccessControl component = go.GetComponent <AccessControl>();

            component.controlEnabled = true;
            KBatchedAnimController component2 = go.GetComponent <KBatchedAnimController>();

            component2.initialAnim = "closed";
        }
コード例 #30
0
        public override void DoPostConfigureComplete(GameObject go)
        {
            BuildingTemplates.DoPostConfigure(go);
            Prioritizable.AddRef(go);

            go.AddOrGet <EnergyConsumer>();
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);

            var tagList = new List <Tag>();

            tagList.AddRange(STORAGEFILTERS.NOT_EDIBLE_SOLIDS);
            tagList.AddRange(STORAGEFILTERS.FOOD);

            var storage = go.AddOrGet <Storage>();

            storage.capacityKg       = 0f;
            storage.showInUI         = true;
            storage.showDescriptor   = true;
            storage.storageFilters   = tagList;
            storage.allowItemRemoval = false;
            storage.onlyTransferFromLowerPriority = false;

            go.AddOrGet <Automatable>();
            go.AddOrGet <TreeFilterable>();

            var filterLogic = go.AddOrGet <ConveyorFilter>();

            filterLogic.SecondaryPort = _secondaryPort;

            go.AddOrGetDef <PoweredActiveController.Def>().showWorkingStatus = true;
        }
コード例 #31
0
ファイル: PriorityQueue.cs プロジェクト: AlyDrake/OpenCircuit
	public void Enqueue (Prioritizable p) {
		if (p == null) {
			throw new NullReferenceException("PriorityQueue does not accept null objects");
		}
		float min = 0;
		if (list.Count == 0) {
				list.Add(p);
		}
		else {
			min = p.getPriority();
			for (int j = 0; j < list.Count; j++) {
				float dist = list[j].getPriority();
				if (dist < min) {
						list.Insert(j, p);
						break;
				}
				else if (j == list.Count - 1) {
					list.Add(p);
						break;
				}
			}
		}
	}