Commit 052d5ee1 authored by mercury233's avatar mercury233

Merge branch 'sound' into link

parents 58cb4744 a7cdd846
...@@ -72,11 +72,15 @@ void DeckBuilder::Initialize() { ...@@ -72,11 +72,15 @@ void DeckBuilder::Initialize() {
filterList = deckManager._lfList[0].content; filterList = deckManager._lfList[0].content;
mainGame->cbDBLFList->setSelected(0); mainGame->cbDBLFList->setSelected(0);
ClearSearch(); ClearSearch();
mouse_pos.set(0, 0);
hovered_code = 0;
hovered_pos = 0;
hovered_seq = -1;
is_draging = false; is_draging = false;
prev_deck = mainGame->cbDBDecks->getSelected(); prev_deck = mainGame->cbDBDecks->getSelected();
prev_operation = 0; prev_operation = 0;
is_modified = false; is_modified = false;
mainGame->device->setEventReceiver(&mainGame->deckBuilder); mainGame->device->setEventReceiver(this);
} }
void DeckBuilder::Terminate() { void DeckBuilder::Terminate() {
mainGame->is_building = false; mainGame->is_building = false;
...@@ -915,6 +919,9 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl ...@@ -915,6 +919,9 @@ bool DeckBuilder::CardNameContains(const wchar_t *haystack, const wchar_t *needl
if (!needle[0]) { if (!needle[0]) {
return true; return true;
} }
if (!haystack) {
return false;
}
int i = 0; int i = 0;
int j = 0; int j = 0;
while (haystack[i]) { while (haystack[i]) {
......
...@@ -935,6 +935,11 @@ void Game::DrawSpec() { ...@@ -935,6 +935,11 @@ void Game::DrawSpec() {
} }
} }
} }
void Game::DrawBackImage(irr::video::ITexture* texture) {
if(!texture)
return;
driver->draw2DImage(texture, recti(0, 0, 1024, 640), recti(0, 0, texture->getOriginalSize().Width, texture->getOriginalSize().Height));
}
void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) { void Game::ShowElement(irr::gui::IGUIElement * win, int autoframe) {
FadingUnit fu; FadingUnit fu;
fu.fadingSize = win->getRelativePosition(); fu.fadingSize = win->getRelativePosition();
......
...@@ -2426,6 +2426,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2426,6 +2426,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return true; return true;
} }
case MSG_CHAIN_END: { case MSG_CHAIN_END: {
for(auto chit = mainGame->dField.chains.begin(); chit != mainGame->dField.chains.end(); ++chit) {
for(auto tgit = chit->target.begin(); tgit != chit->target.end(); ++tgit)
(*tgit)->is_showchaintarget = false;
chit->chain_card->is_showchaintarget = false;
}
mainGame->dField.chains.clear(); mainGame->dField.chains.clear();
return true; return true;
} }
......
...@@ -2012,10 +2012,10 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) { ...@@ -2012,10 +2012,10 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
break; break;
} }
case SCROLL_VOLUME: { case SCROLL_VOLUME: {
mainGame->gameConf.soundvolume = (double)mainGame->srcSoundVolume->getPos() / 100; mainGame->gameConf.sound_volume = (double)mainGame->scrSoundVolume->getPos() / 100;
mainGame->gameConf.musicvolume = (double)mainGame->srcMusicVolume->getPos() / 100; mainGame->gameConf.music_volume = (double)mainGame->scrMusicVolume->getPos() / 100;
mainGame->engineSound->setSoundVolume(mainGame->gameConf.soundvolume); mainGame->engineSound->setSoundVolume(mainGame->gameConf.sound_volume);
mainGame->engineMusic->setSoundVolume(mainGame->gameConf.musicvolume); mainGame->engineMusic->setSoundVolume(mainGame->gameConf.music_volume);
break; break;
} }
} }
......
...@@ -292,26 +292,29 @@ No.41 ...@@ -292,26 +292,29 @@ No.41
chkIgnoreDeckChanges = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1357)); chkIgnoreDeckChanges = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1357));
chkIgnoreDeckChanges->setChecked(gameConf.chkIgnoreDeckChanges != 0); chkIgnoreDeckChanges->setChecked(gameConf.chkIgnoreDeckChanges != 0);
posY += 30; posY += 30;
chkAutoSearch = env->addCheckBox(false, rect<s32>(posX, posY, posX + 225, posY + 25), tabSystem, CHECKBOX_AUTO_SEARCH, dataManager.GetSysString(1358)); chkAutoSearch = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, CHECKBOX_AUTO_SEARCH, dataManager.GetSysString(1358));
chkAutoSearch->setChecked(gameConf.auto_search_limit >= 0); chkAutoSearch->setChecked(gameConf.auto_search_limit >= 0);
posY += 30; posY += 30;
chkEnableSound = env->addCheckBox(gameConf.enablesound, rect<s32>(posX, posY, posX + 100, posY + 25), tabSystem, -1, dataManager.GetSysString(1380)); chkEnableSound = env->addCheckBox(gameConf.enable_sound, rect<s32>(posX, posY, posX + 120, posY + 25), tabSystem, -1, dataManager.GetSysString(1380));
chkEnableSound->setChecked(gameConf.enablesound); chkEnableSound->setChecked(gameConf.enable_sound);
srcSoundVolume = env->addScrollBar(true, rect<s32>(posX+105, posY, posX + 260, posY + 25), tabSystem, SCROLL_VOLUME); scrSoundVolume = env->addScrollBar(true, rect<s32>(posX + 126, posY + 4, posX + 260, posY + 21), tabSystem, SCROLL_VOLUME);
srcSoundVolume->setMax(100); scrSoundVolume->setMax(100);
srcSoundVolume->setMin(0); scrSoundVolume->setMin(0);
srcSoundVolume->setPos(gameConf.soundvolume * 100); scrSoundVolume->setPos(gameConf.sound_volume * 100);
srcSoundVolume->setLargeStep(1); scrSoundVolume->setLargeStep(1);
srcSoundVolume->setSmallStep(1); scrSoundVolume->setSmallStep(1);
posY += 30; posY += 30;
chkEnableMusic = env->addCheckBox(gameConf.enablemusic, rect<s32>(posX, posY, posX + 100, posY + 25), tabSystem, CHECKBOX_ENABLE_MUSIC, dataManager.GetSysString(1381)); chkEnableMusic = env->addCheckBox(gameConf.enable_music, rect<s32>(posX, posY, posX + 120, posY + 25), tabSystem, CHECKBOX_ENABLE_MUSIC, dataManager.GetSysString(1381));
chkEnableMusic->setChecked(gameConf.enablemusic); chkEnableMusic->setChecked(gameConf.enable_music);
srcMusicVolume = env->addScrollBar(true, rect<s32>(posX+105, posY, posX + 260, posY + 25), tabSystem, SCROLL_VOLUME); scrMusicVolume = env->addScrollBar(true, rect<s32>(posX + 126, posY + 4, posX + 260, posY + 21), tabSystem, SCROLL_VOLUME);
srcMusicVolume->setMax(100); scrMusicVolume->setMax(100);
srcMusicVolume->setMin(0); scrMusicVolume->setMin(0);
srcMusicVolume->setPos(gameConf.musicvolume * 100); scrMusicVolume->setPos(gameConf.music_volume * 100);
srcMusicVolume->setLargeStep(1); scrMusicVolume->setLargeStep(1);
srcMusicVolume->setSmallStep(1); scrMusicVolume->setSmallStep(1);
posY += 30;
chkMusicMode = env->addCheckBox(false, rect<s32>(posX, posY, posX + 260, posY + 25), tabSystem, -1, dataManager.GetSysString(1382));
chkMusicMode->setChecked(gameConf.music_mode != 0);
// //
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L""); wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand->getCloseButton()->setVisible(false); wHand->getCloseButton()->setVisible(false);
...@@ -679,8 +682,6 @@ void Game::MainLoop() { ...@@ -679,8 +682,6 @@ void Game::MainLoop() {
atkframe += 0.1f; atkframe += 0.1f;
atkdy = (float)sin(atkframe); atkdy = (float)sin(atkframe);
driver->beginScene(true, true, SColor(0, 0, 0, 0)); driver->beginScene(true, true, SColor(0, 0, 0, 0));
if(imageManager.tBackGround)
driver->draw2DImage(imageManager.tBackGround, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
gMutex.Lock(); gMutex.Lock();
if(dInfo.isStarted) { if(dInfo.isStarted) {
if(mainGame->showcardcode == 1 || mainGame->showcardcode == 3) if(mainGame->showcardcode == 1 || mainGame->showcardcode == 3)
...@@ -693,6 +694,7 @@ void Game::MainLoop() { ...@@ -693,6 +694,7 @@ void Game::MainLoop() {
PlayMusic("./sound/song-advantage.mp3", true); PlayMusic("./sound/song-advantage.mp3", true);
else else
PlayBGM(); PlayBGM();
DrawBackImage(imageManager.tBackGround);
DrawBackGround(); DrawBackGround();
DrawCards(); DrawCards();
DrawMisc(); DrawMisc();
...@@ -700,14 +702,12 @@ void Game::MainLoop() { ...@@ -700,14 +702,12 @@ void Game::MainLoop() {
driver->setMaterial(irr::video::IdentityMaterial); driver->setMaterial(irr::video::IdentityMaterial);
driver->clearZBuffer(); driver->clearZBuffer();
} else if(is_building) { } else if(is_building) {
if(imageManager.tBackGround_deck)
driver->draw2DImage(imageManager.tBackGround_deck, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawDeckBd();
PlayMusic("./sound/deck.mp3", true); PlayMusic("./sound/deck.mp3", true);
DrawBackImage(imageManager.tBackGround_deck);
DrawDeckBd();
} else { } else {
if(imageManager.tBackGround_menu)
driver->draw2DImage(imageManager.tBackGround_menu, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
PlayMusic("./sound/menu.mp3", true); PlayMusic("./sound/menu.mp3", true);
DrawBackImage(imageManager.tBackGround_menu);
} }
DrawGUI(); DrawGUI();
DrawSpec(); DrawSpec();
...@@ -1012,11 +1012,11 @@ void Game::LoadConfig() { ...@@ -1012,11 +1012,11 @@ void Game::LoadConfig() {
gameConf.separate_clear_button = 1; gameConf.separate_clear_button = 1;
gameConf.auto_search_limit = 0; gameConf.auto_search_limit = 0;
gameConf.chkIgnoreDeckChanges = 0; gameConf.chkIgnoreDeckChanges = 0;
gameConf.enablesound = true; gameConf.enable_sound = true;
gameConf.soundvolume = 1.0; gameConf.sound_volume = 0.5;
gameConf.enablemusic = true; gameConf.enable_music = true;
gameConf.musicvolume = 1.0; gameConf.music_volume = 0.5;
gameConf.BGM_index = -1; gameConf.music_mode = 1;
fseek(fp, 0, SEEK_END); fseek(fp, 0, SEEK_END);
int fsize = ftell(fp); int fsize = ftell(fp);
fseek(fp, 0, SEEK_SET); fseek(fp, 0, SEEK_SET);
...@@ -1078,13 +1078,15 @@ void Game::LoadConfig() { ...@@ -1078,13 +1078,15 @@ void Game::LoadConfig() {
} else if(!strcmp(strbuf, "ignore_deck_changes")) { } else if(!strcmp(strbuf, "ignore_deck_changes")) {
gameConf.chkIgnoreDeckChanges = atoi(valbuf); gameConf.chkIgnoreDeckChanges = atoi(valbuf);
} else if(!strcmp(strbuf, "enable_sound")) { } else if(!strcmp(strbuf, "enable_sound")) {
gameConf.enablesound = atoi(valbuf) > 0; gameConf.enable_sound = atoi(valbuf) > 0;
} else if(!strcmp(strbuf, "soundvolume")) { } else if(!strcmp(strbuf, "sound_volume")) {
gameConf.soundvolume = atof(valbuf) / 100; gameConf.sound_volume = atof(valbuf) / 100;
} else if(!strcmp(strbuf, "enable_music")) { } else if(!strcmp(strbuf, "enable_music")) {
gameConf.enablemusic = atoi(valbuf) > 0; gameConf.enable_music = atoi(valbuf) > 0;
} else if(!strcmp(strbuf, "musicvolume")) { } else if(!strcmp(strbuf, "music_volume")) {
gameConf.musicvolume = atof(valbuf) / 100; gameConf.music_volume = atof(valbuf) / 100;
} else if(!strcmp(strbuf, "music_mode")) {
gameConf.music_mode = atoi(valbuf);
} else { } else {
// options allowing multiple words // options allowing multiple words
sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf); sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf);
...@@ -1145,20 +1147,19 @@ void Game::SaveConfig() { ...@@ -1145,20 +1147,19 @@ void Game::SaveConfig() {
fprintf(fp, "enable_sound = %d\n", ((mainGame->chkEnableSound->isChecked()) ? 1 : 0)); fprintf(fp, "enable_sound = %d\n", ((mainGame->chkEnableSound->isChecked()) ? 1 : 0));
fprintf(fp, "enable_music = %d\n", ((mainGame->chkEnableMusic->isChecked()) ? 1 : 0)); fprintf(fp, "enable_music = %d\n", ((mainGame->chkEnableMusic->isChecked()) ? 1 : 0));
fprintf(fp, "#Volume of sound and music, between 0 and 100\n"); fprintf(fp, "#Volume of sound and music, between 0 and 100\n");
int vol = gameConf.soundvolume * 100; int vol = gameConf.sound_volume * 100;
if(vol < 0) vol = 0; else if(vol > 100) vol = 100; if(vol < 0) vol = 0; else if(vol > 100) vol = 100;
fprintf(fp, "soundvolume = %d\n", vol); fprintf(fp, "sound_volume = %d\n", vol);
vol = gameConf.musicvolume * 100; vol = gameConf.music_volume * 100;
if(vol < 0) vol = 0; else if(vol > 100) vol = 100; if(vol < 0) vol = 0; else if(vol > 100) vol = 100;
fprintf(fp, "musicvolume = %d\n", vol); fprintf(fp, "music_volume = %d\n", vol);
fprintf(fp, "#playing the music corresponding to the sequence(start from 0) under folder /BGM\n#-1 means playing one of them randomly\n"); fprintf(fp, "music_mode = %d\n", ((mainGame->chkMusicMode->isChecked()) ? 1 : 0));
fprintf(fp, "BGM_index = %d\n", gameConf.BGM_index);
fclose(fp); fclose(fp);
} }
void Game::PlaySoundEffect(char* sound) { void Game::PlaySoundEffect(char* sound) {
if(mainGame->chkEnableSound->isChecked()) { if(mainGame->chkEnableSound->isChecked()) {
engineSound->play2D(sound); engineSound->play2D(sound);
engineSound->setSoundVolume(gameConf.soundvolume); engineSound->setSoundVolume(gameConf.sound_volume);
} }
} }
void Game::PlayMusic(char* song, bool loop) { void Game::PlayMusic(char* song, bool loop) {
...@@ -1166,7 +1167,7 @@ void Game::PlayMusic(char* song, bool loop) { ...@@ -1166,7 +1167,7 @@ void Game::PlayMusic(char* song, bool loop) {
if(!engineMusic->isCurrentlyPlaying(song)) { if(!engineMusic->isCurrentlyPlaying(song)) {
engineMusic->stopAllSounds(); engineMusic->stopAllSounds();
engineMusic->play2D(song, loop); engineMusic->play2D(song, loop);
engineMusic->setSoundVolume(gameConf.musicvolume); engineMusic->setSoundVolume(gameConf.music_volume);
} }
} }
} }
...@@ -1180,7 +1181,7 @@ void Game::PlayBGM() { ...@@ -1180,7 +1181,7 @@ void Game::PlayBGM() {
int count = BGMList.size(); int count = BGMList.size();
if(count <= 0) if(count <= 0)
return; return;
int bgm = (gameConf.BGM_index >= 0) ? gameConf.BGM_index : rand() % count; int bgm = (gameConf.music_mode >= 0) ? 0 : rand() % count;
auto name = BGMList[bgm].c_str(); auto name = BGMList[bgm].c_str();
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./sound/BGM/%ls", name); myswprintf(fname, L"./sound/BGM/%ls", name);
...@@ -1189,7 +1190,7 @@ void Game::PlayBGM() { ...@@ -1189,7 +1190,7 @@ void Game::PlayBGM() {
if(!engineMusic->isCurrentlyPlaying(strBuffer)) { if(!engineMusic->isCurrentlyPlaying(strBuffer)) {
engineMusic->stopAllSounds(); engineMusic->stopAllSounds();
engineMusic->play2D(strBuffer, true); engineMusic->play2D(strBuffer, true);
engineMusic->setSoundVolume(gameConf.musicvolume); engineMusic->setSoundVolume(gameConf.music_volume);
is_playing = true; is_playing = true;
} }
} }
......
...@@ -39,11 +39,11 @@ struct Config { ...@@ -39,11 +39,11 @@ struct Config {
int separate_clear_button; int separate_clear_button;
int auto_search_limit; int auto_search_limit;
int chkIgnoreDeckChanges; int chkIgnoreDeckChanges;
bool enablesound; bool enable_sound;
bool enablemusic; bool enable_music;
double soundvolume; double sound_volume;
double musicvolume; double music_volume;
int BGM_index; int music_mode;
}; };
struct DuelInfo { struct DuelInfo {
...@@ -106,6 +106,7 @@ public: ...@@ -106,6 +106,7 @@ public:
void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2); void DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2);
void DrawGUI(); void DrawGUI();
void DrawSpec(); void DrawSpec();
void DrawBackImage(irr::video::ITexture* texture);
void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0); void ShowElement(irr::gui::IGUIElement* element, int autoframe = 0);
void HideElement(irr::gui::IGUIElement* element, bool set_action = false); void HideElement(irr::gui::IGUIElement* element, bool set_action = false);
void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0); void PopupElement(irr::gui::IGUIElement* element, int hideframe = 0);
...@@ -214,6 +215,9 @@ public: ...@@ -214,6 +215,9 @@ public:
irr::gui::IGUIStaticText* stSetName; irr::gui::IGUIStaticText* stSetName;
irr::gui::IGUIStaticText* stText; irr::gui::IGUIStaticText* stText;
irr::gui::IGUIScrollBar* scrCardText; irr::gui::IGUIScrollBar* scrCardText;
irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnSaveLog;
irr::gui::IGUICheckBox* chkMAutoPos; irr::gui::IGUICheckBox* chkMAutoPos;
irr::gui::IGUICheckBox* chkSTAutoPos; irr::gui::IGUICheckBox* chkSTAutoPos;
irr::gui::IGUICheckBox* chkRandomPos; irr::gui::IGUICheckBox* chkRandomPos;
...@@ -225,11 +229,9 @@ public: ...@@ -225,11 +229,9 @@ public:
irr::gui::IGUICheckBox* chkAutoSearch; irr::gui::IGUICheckBox* chkAutoSearch;
irr::gui::IGUICheckBox* chkEnableSound; irr::gui::IGUICheckBox* chkEnableSound;
irr::gui::IGUICheckBox* chkEnableMusic; irr::gui::IGUICheckBox* chkEnableMusic;
irr::gui::IGUIListBox* lstLog; irr::gui::IGUIScrollBar* scrSoundVolume;
irr::gui::IGUIButton* btnClearLog; irr::gui::IGUIScrollBar* scrMusicVolume;
irr::gui::IGUIButton* btnSaveLog; irr::gui::IGUICheckBox* chkMusicMode;
irr::gui::IGUIScrollBar* srcSoundVolume;
irr::gui::IGUIScrollBar* srcMusicVolume;
//main menu //main menu
irr::gui::IGUIWindow* wMainMenu; irr::gui::IGUIWindow* wMainMenu;
irr::gui::IGUIButton* btnLanMode; irr::gui::IGUIButton* btnLanMode;
......
...@@ -28,7 +28,11 @@ bool ImageManager::Initial() { ...@@ -28,7 +28,11 @@ bool ImageManager::Initial() {
tHand[2] = driver->getTexture("textures/f3.jpg"); tHand[2] = driver->getTexture("textures/f3.jpg");
tBackGround = driver->getTexture("textures/bg.jpg"); tBackGround = driver->getTexture("textures/bg.jpg");
tBackGround_menu = driver->getTexture("textures/bg_menu.jpg"); tBackGround_menu = driver->getTexture("textures/bg_menu.jpg");
if(!tBackGround_menu)
tBackGround_menu = tBackGround;
tBackGround_deck = driver->getTexture("textures/bg_deck.jpg"); tBackGround_deck = driver->getTexture("textures/bg_deck.jpg");
if(!tBackGround_deck)
tBackGround_deck = tBackGround;
tField[0] = driver->getTexture("textures/field2.png"); tField[0] = driver->getTexture("textures/field2.png");
tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png"); tFieldTransparent[0] = driver->getTexture("textures/field-transparent2.png");
tField[1] = driver->getTexture("textures/field3.png"); tField[1] = driver->getTexture("textures/field3.png");
......
...@@ -31,8 +31,6 @@ prompt_to_discard_deck_changes = 1 ...@@ -31,8 +31,6 @@ prompt_to_discard_deck_changes = 1
enable_sound = 1 enable_sound = 1
enable_music = 1 enable_music = 1
#Volume of sound and music, between 0 and 100 #Volume of sound and music, between 0 and 100
soundvolume = 50 sound_volume = 50
musicvolume = 50 music_volume = 50
#playing the music corresponding to the sequence(start from 0) under folder /BGM music_mode = 1
#-1 means playing one of them randomly
BGM_index = -1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment