Esempio n. 1
0
        public void Dispense()
        {
            Point3 coordinates = m_componentBlockEntity.Coordinates;
            int    data        = Terrain.ExtractData(Utils.Terrain.GetCellValue(coordinates.X, coordinates.Y, coordinates.Z));
            int    direction   = FourDirectionalBlock.GetDirection(Utils.Terrain.GetCellValue(coordinates.X, coordinates.Y, coordinates.Z));

            Driller(coordinates, direction);
            int num = 0;
            int slotValue;

            while (true)
            {
                if (num >= SlotsCount - 1)
                {
                    return;
                }
                slotValue = GetSlotValue(num);
                int slotCount = GetSlotCount(num);
                if (slotValue != 0 && slotCount > 0)
                {
                    break;
                }
                num++;
            }
            MachineMode mode = DrillerBlock.GetMode(data);

            if (mode == MachineMode.Shoot)
            {
                int num2 = RemoveSlotItems(num, 1);
                for (int i = 0; i < num2; i++)
                {
                    DispenseItem(coordinates, direction, slotValue, mode);
                }
            }
        }
Esempio n. 2
0
        protected void DispenseItem(Point3 point, int face, int value, MachineMode mode)
        {
            Vector3 vector  = CellFace.FaceToVector3(face);
            var     vector2 = new Vector3(point) + new Vector3(0.5f) + 0.6f * vector;

            if (mode != 0)
            {
                if (Utils.SubsystemProjectiles.FireProjectile(value, vector2, 1f * m_random.UniformFloat(39f, 41f) * (vector + m_random.Vector3(0.025f, false) + new Vector3(0f, 0.05f, 0f)), Vector3.Zero, null) != null)
                {
                    Utils.SubsystemAudio.PlaySound("Audio/DispenserShoot", 1f, 0f, vector2, 4f, true);
                }
                else
                {
                    DispenseItem(point, face, value, MachineMode.Dispense);
                }
            }
        }
Esempio n. 3
0
 public static int SetMode(int data, MachineMode mode)
 {
     return((data & -9) | ((mode != 0) ? 8 : 0));
 }
Esempio n. 4
0
 public static extern ZyanStatus Init(ref Decoder decoder, MachineMode machineMode, AddressWidth addressWidth);