| 90 | } |
| 91 | |
| 92 | void CInstrumentEditorFDSEnvelope::SetupParser() const // // // |
| 93 | { |
| 94 | const auto MakeParser = [] (sequence_t seqType, seq_setting_t setting) -> std::unique_ptr<CSeqConversionBase> { |
| 95 | switch (seqType) { |
| 96 | case sequence_t::Volume: |
| 97 | return std::make_unique<CSeqConversionDefault>(0, CInstrumentEditorFDSEnvelope::MAX_VOLUME); |
| 98 | case sequence_t::Arpeggio: |
| 99 | switch (setting) { |
| 100 | case SETTING_ARP_SCHEME: // // // |
| 101 | return std::make_unique<CSeqConversionArpScheme>(ARPSCHEME_MIN); |
| 102 | case SETTING_ARP_FIXED: |
| 103 | return std::make_unique<CSeqConversionArpFixed>(); |
| 104 | default: |
| 105 | return std::make_unique<CSeqConversionDefault>(-NOTE_COUNT, NOTE_COUNT); |
| 106 | } |
| 107 | case sequence_t::Pitch: |
| 108 | return std::make_unique<CSeqConversionDefault>(-128, 127); |
| 109 | } |
| 110 | DEBUG_BREAK(); return nullptr; |
| 111 | }; |
| 112 | |
| 113 | auto pConv = MakeParser(m_iSelectedSetting, m_pSequence->GetSetting()); |
| 114 | m_pSequenceEditor->SetConversion(*pConv); // // // |
| 115 | m_pParser->SetSequence(m_pSequence); |
| 116 | m_pParser->SetConversion(std::move(pConv)); |
| 117 | } |
| 118 | |
| 119 | void CInstrumentEditorFDSEnvelope::OnCbnSelchangeType() |
| 120 | { |
nothing calls this directly
no test coverage detected