//-------------------------------------------------------------- void SoundManager::playSound(string name, bool isLoop, float volume, int* speakers,int nbSpeakers) { SoundPlayer* pSoundPlayer = getSoundPlayer(name); if (pSoundPlayer) { if (speakers == 0) pSoundPlayer->play(); else pSoundPlayer->playTo(speakers,nbSpeakers); pSoundPlayer->setLoop(isLoop); pSoundPlayer->setVolume(volume); } }
// 初期化 void FirstSceneController::onInit() { LOGD("FirstSceneController::onInit()"); ApplicationController *ctr = ApplicationController::SharedInstance(); // 音読み込み int bgmid = SoundPlayer::loadBGM("sound/bgm_house.ogg"); SoundPlayer *player = SoundPlayer::SharedInstance(); player->play(bgmid); sid = SoundPlayer::loadSE("sound/se_yay.ogg"); // シーン作成 Scene_ptr sceneMain(new Scene("SceneFirst")); // プレート追加 Figure_ptr fig; fig = Figure_ptr(new Figure("Fig")); fig->mesh = PrimitiveObject::createPlate(Sizef(5, 5)); // マテリアルとシェーダー設定 fig->material = Material_ptr(new Material()); fig->material->texture0 = Texture_ptr(new Texture("model/gclue_logo.png")); fig->material->ambientColor = Colorf(0, 0, 0.5); // fig->shader = ShaderManager::GetShader(ShaderTypeColor); // fig->shader = ShaderManager::GetShader(ShaderTypeFlat); fig->shader = ShaderManager::GetShader(ShaderTypeTex); fig->transform.translate(0, 3, 0); fig->touchEventListener = this; fig->isTouchable = true; // シーン変更 sceneMain->addChildNode(fig); ctr->sceneMap[1] = sceneMain; ctr->changeScene(1); }
void EmulApp::trigSound(int sndtrig) { const bool dostop = sndtrig < 0; const unsigned snd = dostop ? -sndtrig : sndtrig; lastSndEvt = sndtrig; SoundPlayerMap::iterator it = soundPlayerMap.find(snd); SoundPlayer *sp = 0; if (it == soundPlayerMap.end()) { Error() << "Triggered unknown sound " << snd; return; } else sp = it->second; Debug() << "Got sound trig " << sndtrig << " for filename `" << sp->fileName() << "'"; if (dostop) { //Debug() << "sound " << snd << " stop"; sp->stop(); controlwin->untriggeredSound(snd); } else { //Debug() << "sound " << snd << " play"; sp->stop(); sp->play(); controlwin->triggeredSound(snd); } }
// ノードタッチイベント void FirstSceneController::onTouchNode(TouchableNode& node, const TouchEvent &event) { if (event.action == TouchActionDown) { // 音再生 SoundPlayer *player = SoundPlayer::SharedInstance(); player->play(sid); // シーン遷移 ApplicationController *ctr = ApplicationController::SharedInstance(); ctr->changeScene(2); // サブウィンドウ表示 Window_ptr mainWindow = ctr->windowArray[1]; mainWindow->isVisible = true; } }
RootController(ci::JsonTree& params, ci::TimelineRef timeline, Event<std::vector<Touch> >& touch_event) noexcept : params_(params), timeline_(timeline), ui_camera_(createCamera(params["ui_view.camera"])), fov_(ui_camera_.getFov()), near_z_(ui_camera_.getNearClip()), far_z_(ui_camera_.getFarClip()), autolayout_(ui_camera_), touch_event_(touch_event), view_creator_(params, timeline, ui_camera_, autolayout_, event_, touch_event), sound_(params["sounds"]), background_(Json::getColor<float>(params["app.background"])), records_(params["version"].getValue<float>()) { DOUT << "RootController()" << std::endl; event_.connect("begin-progress", [this](const Connection&, EventParam& param) noexcept { addController<ProgressController>(params_, timeline_, event_, view_creator_.create("ui_progress.json")); }); event_.connect("begin-gameover", [this](const Connection&, EventParam& param) noexcept { addController<GameoverController>(params_, timeline_, event_, param, view_creator_.create("ui_gameover.json")); }); event_.connect("begin-stageclear", [this](const Connection&, EventParam& param) noexcept { addController<StageclearController>(params_, timeline_, event_, param, view_creator_.create("ui_stageclear.json")); }); event_.connect("begin-pause", [this](const Connection&, EventParam& param) noexcept { addController<PauseController>(params_, timeline_, event_, view_creator_.create("ui_pause.json")); }); event_.connect("begin-records", [this](const Connection&, EventParam& param) noexcept { EventParam records = { { "total_play", records_.getTotalPlayNum() }, { "total_time", records_.getTotalPlayTime() }, { "high_score", records_.getHighScore() }, { "total_item", records_.getTotalItemNum() }, { "stage_ranks", records_.stageRanks() }, }; addController<RecordsController>(params_, timeline_, event_, records, view_creator_.create("ui_records.json")); }); event_.connect("begin-credits", [this](const Connection&, EventParam& param) noexcept { addController<CreditsController>(params_, timeline_, event_, view_creator_.create("ui_credits.json")); }); event_.connect("begin-title", [this](const Connection&, EventParam& param) noexcept { startTitle(param); }); event_.connect("begin-settings", [this](const Connection&, EventParam& param) noexcept { addController<SettingsController>(params_, timeline_, event_, records_, view_creator_.create("ui_settings.json")); }); event_.connect("begin-regulat-stageclear", [this](const Connection&, EventParam& param) noexcept { addController<AllStageClearController>(params_["regular_stageclear"], timeline_, event_, param, view_creator_.create("ui_regularstageclear.json")); }); event_.connect("begin-all-stageclear", [this](const Connection&, EventParam& param) noexcept { addController<AllStageClearController>(params_["all_stageclear"], timeline_, event_, param, view_creator_.create("ui_allstageclear.json")); }); // GameOver時に色々チェック event_.connect("check-after-gameover", [this](const Connection&, EventParam& param) noexcept { DOUT << "check-after-gameover" << std::endl; Rating::popup([this]() { AppSupport::pauseDraw(true); }, [this]() { AppSupport::pauseDraw(false); }); Achievment::atGameOver(records_); }); // サウンド再生 event_.connect("sound-play", [this](const Connection&, EventParam& param) noexcept { auto& name = boost::any_cast<const std::string&>(param.at("sound")); player_.play(name); // DOUT << "sound:" << name << std::endl; }); event_.connect("se-silent", [this](const Connection&, EventParam& param) noexcept { sound_.setBufferSilent(boost::any_cast<bool>(param["silent"])); }); event_.connect("bgm-silent", [this](const Connection&, EventParam& param) noexcept { sound_.setFileSilent(boost::any_cast<bool>(param["silent"])); }); #ifdef DEBUG event_.connect("force-regular-completed", [this](const Connection&, EventParam& param) noexcept { records_.forceRegularStageComplated(); }); event_.connect("cancel-regular-completed", [this](const Connection&, EventParam& param) noexcept { records_.cancelRegularStageComplated(); }); event_.connect("clear-records", [this](const Connection&, EventParam& param) noexcept { records_ = Records(params_["version"].getValue<float>()); }); event_.connect("do-snapshot", [this](const Connection&, EventParam& param) noexcept { auto surface = ci::app::copyWindowSurface(); auto full_path = getDocumentPath() / std::string("snapshot" + createUniquePath() + ".png"); ci::writeImage(full_path, surface); }); event_.connect("reset-records", [this](const Connection&, EventParam& param) noexcept { records_ = Records(params_["version"].getValue<float>()); }); event_.connect("reset-achievement", [this](const Connection&, EventParam& param) noexcept { DOUT << "reset-achievement" << std::endl; GameCenter::resetAchievement(); }); #endif records_.load(params["game.records"].getValue<std::string>()); sound_.setBufferSilent(!records_.isSeOn()); sound_.setFileSilent(!records_.isBgmOn()); addController<FieldController>(params, touch_event_, event_, records_); addController<IntroController>(params_, timeline_, event_, records_.getTotalPlayNum(), view_creator_.create("ui_intro.json")); // 自動PAUSE // getSignalDidEnterBackground(Backgroundになった直後) // getSignalWillResignActive(アクティブでなくなる直前) resign_active_ = ci::app::App::get()->getSignalWillResignActive().connect([this]() noexcept { DOUT << "SignalWillResignActive" << std::endl; EventParam params = { { "force", true } }; event_.signal("pause-agree", params); GameCenter::writeCachedAchievement(); }); }