/// <inheritdoc/>
        public override ISensor[] CreateSensors()
        {
            var board      = GetComponent <AbstractBoard>();
            var cellSensor = Match3Sensor.CellTypeSensor(board, ObservationType, SensorName + " (cells)");
            // This can be null if numSpecialTypes is 0
            var specialSensor = Match3Sensor.SpecialTypeSensor(board, ObservationType, SensorName + " (special)");

            return(specialSensor != null ? new ISensor[] { cellSensor, specialSensor } : new ISensor[] { cellSensor });
        }
        /// <inheritdoc/>
        public override ISensor[] CreateSensors()
        {
            // Clean up any existing sensors
            Dispose();

            var board      = GetComponent <AbstractBoard>();
            var cellSensor = Match3Sensor.CellTypeSensor(board, ObservationType, SensorName + " (cells)");
            // This can be null if numSpecialTypes is 0
            var specialSensor = Match3Sensor.SpecialTypeSensor(board, ObservationType, SensorName + " (special)");

            m_Sensors = specialSensor != null
                ? new ISensor[] { cellSensor, specialSensor }
            : new ISensor[] { cellSensor };
            return(m_Sensors);
        }
        /// <inheritdoc/>
        public override ISensor[] CreateSensors()
        {
            var board      = GetComponent <AbstractBoard>();
            var cellSensor = Match3Sensor.CellTypeSensor(board, ObservationType, SensorName + " (cells)");

            if (board.NumSpecialTypes > 0)
            {
                var specialSensor =
                    Match3Sensor.SpecialTypeSensor(board, ObservationType, SensorName + " (special)");
                return(new ISensor[] { cellSensor, specialSensor });
            }
            else
            {
                return(new ISensor[] { cellSensor });
            }
        }