|
| 1 | +using Mafi.Base; |
| 2 | +using Mafi.Core; |
| 3 | +using Mafi.Core.Mods; |
| 4 | +using Mafi.Core.Ports.Io; |
| 5 | +using Mafi.Core.Entities.Static.Layout; |
| 6 | +using Mafi.Core.Prototypes; |
| 7 | +using Mafi.Core.Factory.Zippers; |
| 8 | +using Mafi.Core.Factory.Machines; |
| 9 | + |
| 10 | +namespace UnpoweredBalancers.Machines; |
| 11 | + |
| 12 | +internal class UnpoweredBalancersData : IModData |
| 13 | +{ |
| 14 | + public void RegisterData(ProtoRegistrator registrator) |
| 15 | + { |
| 16 | + ZipperProto flatZipperProto = registrator.PrototypesDb.GetZipperProto(Ids.IoPortShapes.FlatConveyor); |
| 17 | + ZipperProto moltenZipperProto = registrator.PrototypesDb.GetZipperProto(Ids.IoPortShapes.MoltenMetalChannel); |
| 18 | + ZipperProto uShapeZipperProto = registrator.PrototypesDb.GetZipperProto(Ids.IoPortShapes.LooseMaterialConveyor); |
| 19 | + ZipperProto pipeZipperProto = registrator.PrototypesDb.GetZipperProto(Ids.IoPortShapes.Pipe); |
| 20 | + |
| 21 | + register( |
| 22 | + registrator, |
| 23 | + Ids.IoPortShapes.FlatConveyor, |
| 24 | + UnpoweredBalancersIds.Machines.UnpoweredFlatBalancer, |
| 25 | + "Flat", |
| 26 | + Assets.Base.Zippers.BalancerFlat_prefab, |
| 27 | + flatZipperProto.Graphics.IconPath, |
| 28 | + Costs.Build.CP3(6) |
| 29 | + ); |
| 30 | + register( |
| 31 | + registrator, |
| 32 | + Ids.IoPortShapes.MoltenMetalChannel, |
| 33 | + UnpoweredBalancersIds.Machines.UnpoweredMoltenBalancer, |
| 34 | + "Molten", |
| 35 | + Assets.Base.Zippers.BalancerMolten_prefab, |
| 36 | + moltenZipperProto.Graphics.IconPath, |
| 37 | + Costs.Build.CP3(9) |
| 38 | + ); |
| 39 | + register( |
| 40 | + registrator, |
| 41 | + Ids.IoPortShapes.LooseMaterialConveyor, |
| 42 | + UnpoweredBalancersIds.Machines.UnpoweredUShapeBalancer, |
| 43 | + "U-shape", |
| 44 | + Assets.Base.Zippers.BalancerUShape_prefab, |
| 45 | + uShapeZipperProto.Graphics.IconPath, |
| 46 | + Costs.Build.CP3(9) |
| 47 | + ); |
| 48 | + register( |
| 49 | + registrator, |
| 50 | + Ids.IoPortShapes.Pipe, |
| 51 | + UnpoweredBalancersIds.Machines.UnpoweredPipeBalancer, |
| 52 | + "Pipe", |
| 53 | + Assets.Base.Zippers.BalancerFluid_prefab, |
| 54 | + pipeZipperProto.Graphics.IconPath, |
| 55 | + Costs.Build.CP3(6) |
| 56 | + ); |
| 57 | + } |
| 58 | + |
| 59 | + private void register( |
| 60 | + ProtoRegistrator registrator, |
| 61 | + IoPortShapeProto.ID portShape, |
| 62 | + MachineProto.ID id, |
| 63 | + string name, |
| 64 | + string prefab, |
| 65 | + string icon, |
| 66 | + EntityCostsTpl costs |
| 67 | + ) => registrator.ZipperProtoBuilder() |
| 68 | + .Start($"Unpowered {name} balancer", id) |
| 69 | + .Description($"Allows distributing and prioritizing products using any of its two input and output ports.") |
| 70 | + .SetCost(costs) |
| 71 | + .SetElectricityConsumption(Mafi.Electricity.Zero) |
| 72 | + .SetLayout( |
| 73 | + new EntityLayoutParams(null, useNewLayoutSyntax: true, null, portsCanOnlyConnectToTransports: true), |
| 74 | + Ports.SetLayout(registrator.PrototypesDb.GetOrThrow<IoPortShapeProto>(portShape).LayoutChar, " D?+C?+ ", "E?+[1][1]+?B", "F?+[1][1]+?A", " G?+H?+ ") |
| 75 | + ) |
| 76 | + .SetCategories(Ids.ToolbarCategories.Transports) |
| 77 | + .SetPrefabPath(prefab) |
| 78 | + .SetCustomIconPath(icon) |
| 79 | + .BuildAndAdd(); |
| 80 | +} |
0 commit comments