Exemple #1
0
 public TunnelBore(long x, long y, long z, ushort cube, byte flags, ushort value, Vector3 position,
                   Segment segment) : base(eSegmentEntity.Mod, SpawnableObjectEnum.BFL9000, x, y, z, cube, flags,
                                           value, position, segment)
 {
     mbNeedsLowFrequencyUpdate = true;
     this.mFlags = flags;
     ResetRotation();
     State      = BoreState.Initializing;
     FlavorText = _flavorTexts[Random.Range(0, _flavorTexts.Length)];
 }
Exemple #2
0
        public override void LowFrequencyUpdate()
        {
            // If we're a network client, we don't need to process anything
            if (!WorldScript.mbIsServer)
            {
                return;
            }

            base.LowFrequencyUpdate();

            if (State == BoreState.Initializing)
            {
                State = BoreState.LowPower;
            }

            if (BoreDistance > MaxBoreDistance)
            {
                State = BoreState.Finished;
                return;
            }

            State = CurrentPower > PowerPerBlock ? BoreState.Boring : BoreState.LowPower;
            if (State == BoreState.LowPower)
            {
                return;
            }

            // We're going to sleep this many ticks between dig attempts
            SleepCount++;
            if (SleepCount < 4)
            {
                return;
            }
            SleepCount = 0;

            switch (mValue)
            {
            case 0:
                WithSegments(BoreTunnelV);
                break;

            case 1:
                WithSegments(BoreTunnelSquare);
                break;
            }
        }
Exemple #3
0
 public override void ReadNetworkUpdate(BinaryReader reader)
 {
     State           = (BoreState)reader.ReadInt32();
     BoreDistance    = reader.ReadInt32();
     MaxBoreDistance = reader.ReadInt32();
 }