Exemplo n.º 1
0
        public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload)
        {
            var existingBlock = World.GetBlock(posDir.FirstPos) as EmptyBlock;

            if (existingBlock != null)
            {
                var target = World.FindPyramidPos(posDir.FirstPos);
                World.SetBlock(this.OriginType, target);
                return(1);
            }
            return(0);
        }
Exemplo n.º 2
0
        public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload)
        {
            var pos           = posDir.FirstPos + Vector3i.Down;
            var existingBlock = World.GetBlock(pos);
            var waterOuput    = Mathf.Min(payload.Amount / payload.Time, .999f);

            switch (existingBlock)
            {
            // Set the existing block if it's there, or add a new block.
            case EmptyBlock _:
                World.SetBlock(typeof(WaterBlock), pos, waterOuput, true);
                break;

            case WaterBlock waterBlock:
                waterBlock.Water        = waterOuput;
                waterBlock.PipeSupplied = true;
                break;
            }

            return(payload.Amount);
        }
Exemplo n.º 3
0
 public float OnPipeExit(WireOutput wire, Ray posDir, PipePayload payload)
 {
     WorldLayerManager.Obj.ClimateSim.AddGroundPollution(posDir.FirstPos.XZ, payload.Amount / SewageItemsPerPollution / TimeUtil.SecondsPerHour);
     return(payload.Amount);
 }