diff options
author | Jamieson Christian | 2002-12-18 13:22:40 +0000 |
---|---|---|
committer | Jamieson Christian | 2002-12-18 13:22:40 +0000 |
commit | 65ee19610c5e050ac00078739ac4ffae3e443b7c (patch) | |
tree | 6bee2eddb32c67c76acd076c7b8ee0b64c5835fc /scumm/instrument.h | |
parent | 3427e29e4671fe9aaa499148633406811e96594a (diff) | |
download | scummvm-rg350-65ee19610c5e050ac00078739ac4ffae3e443b7c.tar.gz scummvm-rg350-65ee19610c5e050ac00078739ac4ffae3e443b7c.tar.bz2 scummvm-rg350-65ee19610c5e050ac00078739ac4ffae3e443b7c.zip |
Instrument definition revamp.
IMuseDriver abstract class removed.
IMuseGM is now IMuseDriver.
Miscellaneous cleanup.
svn-id: r6017
Diffstat (limited to 'scumm/instrument.h')
-rw-r--r-- | scumm/instrument.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/scumm/instrument.h b/scumm/instrument.h new file mode 100644 index 0000000000..065bff0f4a --- /dev/null +++ b/scumm/instrument.h @@ -0,0 +1,62 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001 Ludvig Strigeus + * Copyright (C) 2001/2002 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Header$ + */ + +#ifndef INSTRUMENT_H +#define INSTRUMENT_H + +#include "stdafx.h" +#include "common/scummsys.h" + +class Serializer; +class MidiChannel; + +class InstrumentInternal { +public: + virtual void saveOrLoad (Serializer *s) = 0; + virtual void send (MidiChannel *mc) = 0; +}; + +class Instrument { +private: + byte _type; + InstrumentInternal *_instrument; + +public: + enum { + itNone = 0, + itProgram = 1, + itAdlib = 2, + itRoland = 3 + }; + + Instrument() : _type (0), _instrument (0) { } + + void clear(); + void program (byte program, bool mt32); + void adlib (byte *instrument); + void roland (byte *instrument); + + byte getType() { return _type; } + void saveOrLoad (Serializer *s); + void send (MidiChannel *mc) { if (_instrument) _instrument->send (mc); } +}; + +#endif |