Minor refactoring of MAKO

- Move select_sound() from NACT to MAKO
- Make cd_track private
This commit is contained in:
kichikuou
2020-10-24 17:53:07 +09:00
parent 4c5ee008cb
commit 9ddbf01d23
6 changed files with 30 additions and 22 deletions
+10 -1
View File
@@ -14,6 +14,11 @@
#include "../common.h"
#include "nact.h"
enum BGMDevice {
BGM_FM,
BGM_CD
};
class MAKO
{
public:
@@ -29,7 +34,11 @@ public:
void stop_pcm();
bool check_pcm();
void set_cd_track(int num, int track) { cd_track[num] = track; }
#ifdef _WIN32
void select_sound(BGMDevice dev);
void on_mci_notify(SDL_SysWMmsg* msg);
#endif
@@ -39,10 +48,10 @@ public:
int current_music;
int next_loop; // Y19
int cd_track[100]; // Z
private:
NACT* nact;
int cd_track[100]; // Z
#if !defined(__EMSCRIPTEN__) && !defined(__ANDROID__)
bool load_playlist(const char* path);
-17
View File
@@ -420,23 +420,6 @@ void NACT::select_cursor()
ags->select_cursor();
}
void NACT::select_sound(int dev)
{
// 強制的に音源を変更する
int page = mako->current_music;
int old_dev = (1 <= page && page <= 99 && mako->cd_track[page]) ? 1 : 0;
for(int i = 1; i <= 99; i++) {
mako->cd_track[i] = dev ? i : 0;
}
// デバイスが変更された場合は再演奏する
if(dev != old_dev && page) {
mako->stop_music();
mako->play_music(page);
}
}
void NACT::fatal(const char* format, ...) {
char buf[512];
va_list args;
-1
View File
@@ -241,7 +241,6 @@ public:
int get_screen_height();
void select_cursor();
void select_sound(int dev);
const char* get_game_id();
static const int get_sys_ver(uint32 crc32_a, uint32 crc32_b);
+1 -1
View File
@@ -1526,7 +1526,7 @@ void NACT_Sys3::cmd_z()
} else if(cmd == 7) {
ags->cursor_color = (uint8)(param & 0xff);
} else if(101 <= cmd && cmd <= 199) {
mako->cd_track[cmd - 100] = param;
mako->set_cd_track(cmd - 100, param);
}
}
+17
View File
@@ -304,6 +304,23 @@ bool MAKO::check_music()
return music && music->is_playing();
}
void MAKO::select_sound(BGMDevice dev)
{
// 強制的に音源を変更する
int page = current_music;
int old_dev = (1 <= page && page <= 99 && cd_track[page]) ? BGM_CD : BGM_FM;
for (int i = 1; i <= 99; i++) {
cd_track[i] = (dev == BGM_CD) ? i : 0;
}
// デバイスが変更された場合は再演奏する
if (dev != old_dev && page) {
stop_music();
play_music(page);
}
}
void MAKO::get_mark(int* mark, int* loop)
{
// TODO: fix
+2 -2
View File
@@ -150,10 +150,10 @@ void NACT::on_syswmevent(SDL_SysWMmsg* msg)
ags->flush_screen(true);
break;
case ID_SOUND_FM:
select_sound(0);
mako->select_sound(BGM_FM);
break;
case ID_SOUND_CD:
select_sound(1);
mako->select_sound(BGM_CD);
break;
case ID_TEXT_SKIP:
text_skip_enb = !text_skip_enb;