return Undefined();\r
}\r
\r
+Handle<Value> Card::Function_Music_Rebuild(const Arguments& args)\r
+{\r
+ ResourceManager::music()->Init();\r
+\r
+ auto self = static_cast<Card*>(args.Holder()->GetPointerFromInternalField(0));\r
+ if (auto card_manager = self->manager_accessor_->card_manager().lock()) {\r
+ card_manager->OnMusicReload();\r
+ }\r
+\r
+ return Undefined();\r
+}\r
+\r
+\r
\r
Handle<Value> Card::Property_global(Local<String> property, const AccessorInfo &info)\r
{\r
}\r
}\r
\r
+Handle<Value> Card::Property_Music_onReload(Local<String> property, const AccessorInfo &info)\r
+{\r
+ assert(info.Holder()->InternalFieldCount() > 0);\r
+ auto self = static_cast<Card*>(info.Holder()->GetPointerFromInternalField(0));\r
+ return self->music.on_reload_;\r
+}\r
+\r
+void Card::Property_set_Music_onReload(Local<String> property, Local<Value> value, const AccessorInfo& info)\r
+{\r
+ if (value->IsFunction()) {\r
+ assert(info.Holder()->InternalFieldCount() > 0);\r
+ auto self = static_cast<Card*>(info.Holder()->GetPointerFromInternalField(0));\r
+ self->music.on_reload_ = Persistent<Function>::New(value.As<Function>());\r
+ }\r
+}\r
+\r
void Card::SetFunctions()\r
{\r
\r
*/\r
script_.SetFunction("Music.all", Function_Music_all);\r
\r
+ /**\r
+ * 音楽の構造を再構築します\r
+ *\r
+ * @method rebuild\r
+ * @static\r
+ */\r
+ script_.SetFunction("Music.rebuild", Function_Music_Rebuild);\r
+\r
+ script_.SetProperty("Music.onReload", Property_Music_onReload, Property_set_Music_onReload);\r
/**\r
* アカウント\r
*\r
}\r
}\r
\r
+void Card::OnMusicReload()\r
+{\r
+ if (!music.on_reload_.IsEmpty() && music.on_reload_->IsFunction()) {\r
+ script_.TimedWith(\r
+ [&](const Handle<Context>& context)\r
+ {\r
+ music.on_reload_->Call(context->Global(), 0, nullptr);\r
+ });\r
+ }\r
+}\r
+\r
void Card::LoadStorage()\r
{\r
std::string storage_path = std::string(STORAGE_DIR) + "/"\r
void OnLogin(const PlayerPtr& player);
void OnLogout(const PlayerPtr& player);
void OnModelReload();
+ void OnMusicReload();
bool IsGUIActive();
void FocusPlayer();
if(CheckHandleASyncLoad(requested_bgm_) == false && requested_bgm_ != -1)
{
if(fade_count_ == 0)PlaySoundMem(requested_bgm_,DX_PLAYTYPE_LOOP);
- if(fade_count_ >= 120)
+ if(fade_count_ >= 90)
{
ChangeVolumeSoundMem(100,requested_bgm_);
StopSoundMem(present_bgm_);
fade_count_ = 0;
crossfade_now_ = false;
}
- ChangeVolumeSoundMem((int)(fade_count_/1.2),requested_bgm_);
- ChangeVolumeSoundMem((int)((120-fade_count_)/1.2),present_bgm_);
+ ChangeVolumeSoundMem((int)((double)fade_count_/0.9),requested_bgm_);
+ ChangeVolumeSoundMem((int)((90.0-(double)fade_count_)/0.9),present_bgm_);
++fade_count_;
}
}
docking: UI.DOCKING_TOP | UI.DOCKING_LEFT | UI.DOCKING_RIGHT | UI.DOCKING_BOTTOM
});
-var even_line = false;
-var music_names = Music.all();
-for (var i = 0; i < music_names.length; i++) {
- (function (music_name) {
- list.addItem(
+Music.onReload = function () {
+
+ list.clearItems();
+
+ var even_line = false;
+ var music_names = Music.all();
+ for (var i = 0; i < music_names.length; i++) {
+ (function (music_name) {
+ list.addItem(
new UI.Label({
docking: UI.DOCKING_TOP | UI.DOCKING_LEFT | UI.DOCKING_RIGHT,
text: music_name,
bgcolor: ((even_line = !even_line) ? "#EEAFEECC" : "#FFFFFFCC"),
onclick: function () {
- Music.play(music_name,true)
+ Music.play(music_name, true)
}
})
);
- })(music_names[i])
+ })(music_names[i])
+ }
}
+Music.onReload();
+
Card.board.width = 240;
Card.board.height = 120;
Card.board.docking = UI.DOCKING_BOTTOM | UI.DOCKING_LEFT
text: model_name,\r
bgcolor: ((even_line = !even_line) ? "#EEAFEECC" : "#FFFFFFCC"),\r
onclick: function() {\r
- Player.stopMotion();\r
Account.updateModelName(model_name)\r
}\r
})\r
// チャットメッセージ送信
InputBox.onEnter = function (text) {
- //サイコロ用
- var dice_parsed_text = text.match(/^\/(\d+)[Dd](\d+)/)
- if (dice_parsed_text) {
- var time = dice_parsed_text[1]
+ //サイコロ用
+ var dice_parsed_text = text.match(/^\/(\d+)[Dd](\d+)/)
+ if (dice_parsed_text) {
+ var time = dice_parsed_text[1]
var size = dice_parsed_text[2]
var msg = "【ダイス /" + time + "D" + size + "】\n "
for (var i = 0; i < time; i++) {
- msg += Number.random(1, size) + ", "
+ msg += Number.random(1, size) + ", "
}
-
+
var msgObject = { body: msg };
Network.sendAll(msgObject);
- return;
- }
+ return;
+ }
// コマンドを解析
- var parsed_text = text.match(/^\/(\w{1,8})\s?(\S*)/)
- if (parsed_text) {
+ var parsed_text = text.split(" "); //.match(/^\/(\w{1,8})\s?(\S*)/)
+ var command = parsed_text[0].match(/^\/(\w*)/);
+ if (command) {
- var command = parsed_text[1]
- var args = parsed_text[2]
+ var args = parsed_text[1]
- switch (command) {
+ switch (command[1]) {
- // ニックネームを変更
+ // ニックネームを変更
case "nick":
Account.updateName(args.trim());
break;
- // モデルを変更
+ // モデルを変更
case "model":
Account.updateModelName("char:" + args.trim());
break;
- // プレイヤー位置をリセット
+ // プレイヤー位置をリセット
case "escape":
Player.escape();
break;
-
- // リロード
+
+ // リロード
case "reload":
Model.rebuild();
+ Music.rebuild();
break;
-
- // システム
+
+ // システム
case "system":
var msgObject = { system: args.trim() };
Network.sendAll(msgObject);
break;
-
- // プライベート
+
+ // プライベート
case "private":
- var tok = args.split(",");
var msgObject = {
private: [
Player.myself().id(),
- Player.getFromName([tok[0]]).id()
+ Player.getFromName([args.trim()]).id()
],
- body: tok[1]
- };
+ body: parsed_text[2].trim()
+ };
Network.sendAll(msgObject);
break;
+
+ case "dance":
+ Music.playME(parsed_text[2].trim());
+ Player.playMotion(args.trim());
+
+ case "bgm":
+ Music.play(args.trim(), true);
}
} else {