OSDN Git Service

Musicの修正
authorangeart <angeart@git.sourceforge.jp>
Sat, 22 Sep 2012 16:20:32 +0000 (01:20 +0900)
committerangeart <angeart@git.sourceforge.jp>
Sat, 22 Sep 2012 16:20:32 +0000 (01:20 +0900)
client/Card.cpp
client/Music.cpp
client/Music.hpp
client/bin/cards/bgmlist/main.js

index 43f96c4..8bb643e 100644 (file)
@@ -241,10 +241,10 @@ Handle<Value> Card::Function_Music_stopBGM(const Arguments& args)
 {\r
 \r
        if (args.Length() == 1 && args[0]->IsBoolean()) {\r
-               auto fade = args[1]->ToBoolean()->BooleanValue();\r
+               auto fade = args[0]->ToBoolean()->BooleanValue();\r
                ResourceManager::music()->Stop(fade);\r
        }else if(args.Length() == 0) {\r
-               ResourceManager::music()->Stop(false);\r
+               ResourceManager::music()->Stop(true);\r
        }\r
 \r
     return Undefined();\r
index 42cc447..617fdd5 100644 (file)
@@ -9,15 +9,16 @@
 
 extern int LoadFile(const TCHAR *FilePath, void **FileImageAddr, int *FileSize);
 
+
 Music::Music() :
 bgm_handle_(),
 se_handle_(),
-prev_bgm_(-1),
-present_bgm_(-1),
-requested_bgm_(-1),
-music_paths_(),
 crossfade_now_(false),
-fade_count_(0)
+fade_out_(false),
+fade_count_(-1),
+present_bgm_(-1),
+prev_bgm_(-1),
+requested_bgm_(-1)
 {
 }
 
@@ -137,8 +138,16 @@ void Music::Stop(bool fadeout)
        {
                StopSoundMem(present_bgm_);
        }
-       crossfade_now_ = fadeout;
+       if(crossfade_now_)
+       {
+               StopSoundMem(present_bgm_);
+               present_bgm_ = requested_bgm_;
+       }
+       crossfade_now_ = false;
+       fade_out_ = fadeout;
+       fadeout_count_ = GetVolumeSoundMem(present_bgm_);
        fade_count_ = 0;
+       requested_bgm_ = -1;
 }
 
 void Music::PlaySE(tstring name)
@@ -176,10 +185,12 @@ void Music::Update()
                        crossfade_now_ = true;
                }
        }
-       if(!crossfade_now_)return;
-       if(CheckHandleASyncLoad(requested_bgm_) == false && requested_bgm_ != -1)
+       if(CheckHandleASyncLoad(requested_bgm_) == false && requested_bgm_ != -1 && crossfade_now_)
        {
                if(fade_count_ == 0)PlaySoundMem(requested_bgm_,DX_PLAYTYPE_LOOP);
+               ChangeVolumeSoundMem((int)((90.0-(double)fade_count_)/0.9),present_bgm_);
+               ChangeVolumeSoundMem((int)((double)fade_count_/0.9),requested_bgm_);
+               ++fade_count_;
                if(fade_count_ >= 90)
                {
                        ChangeVolumeSoundMem(100,requested_bgm_);
@@ -190,9 +201,20 @@ void Music::Update()
                        fade_count_ = 0;
                        crossfade_now_ = false;
                }
-               ChangeVolumeSoundMem((int)((double)fade_count_/0.9),requested_bgm_);
+       }
+       if(fade_out_ == true)
+       {
+               if(fadeout_count_ >= 90)
+               {
+                       StopSoundMem(present_bgm_);
+                       ChangeVolumeSoundMem(100,present_bgm_);
+                       present_bgm_ = -1;
+                       fadeout_count_ = 0;
+                       fade_out_ = false;
+                       requested_bgm_ = -1;
+               }
                ChangeVolumeSoundMem((int)((90.0-(double)fade_count_)/0.9),present_bgm_);
-               ++fade_count_;
+               ++fadeout_count_;
        }
 }
 
index dd7c7b4..3ff482d 100644 (file)
@@ -30,7 +30,9 @@ public:
 \r
 private:\r
        bool crossfade_now_;\r
+       bool fade_out_;\r
        int fade_count_;\r
+       int fadeout_count_;\r
        int present_bgm_;\r
        int prev_bgm_;\r
        int requested_bgm_;\r
index 70444e3..7a27c98 100644 (file)
@@ -2,7 +2,7 @@
 /***MetaData***
 
 {
-       "name": "BGM\83\8a\83X\83g",
+       "name": "BGMリスト",
        "icon": "icon.png",
        "api_version": 1
 }
@@ -17,7 +17,6 @@ list = new UI.List({
 Music.onReload = function () {
 
     list.clearItems();
-
     var even_line = false;
     var music_names = Music.all();
     for (var i = 0; i < music_names.length; i++) {
@@ -33,7 +32,17 @@ Music.onReload = function () {
                                })
                        );
         })(music_names[i])
-    }
+}
+    list.addItem(
+                       new UI.Label({
+                           docking: UI.DOCKING_TOP | UI.DOCKING_LEFT | UI.DOCKING_RIGHT,
+                           text: "再生停止",
+                           bgcolor: ((even_line = !even_line) ? "#EEAFEECC" : "#FFFFFFCC"),
+                           onclick: function () {
+                               Music.stop(true)
+                           }
+                       })
+               );
 }
 
 Music.onReload();