void bgm_play() { int i; if (bgm_state==0) { for (i=0;i<BGM_MAX;i++) { if (CheckSoundMem(bgm_handle[i])==1) StopSoundMem(bgm_handle[i]) ; } } else if (bgm_state==1) { for (i=0;i<BGM_MAX;i++) { if (CheckSoundMem(bgm_handle[i])==1) StopSoundMem(bgm_handle[i]) ; } PlaySoundMem( bgm_handle[bgm_num] , DX_PLAYTYPE_LOOP ) ; bgm_state++; } else { bgm_state++; } }
//音楽を流さなくてもこの関数を読み込み推奨 void PlayBGM( int Number ){ //処理を一回だけ読み込む(なお指定されたnumberの音楽がなければこの処理は前の音楽が流れ続ける) if(CheckSoundMem(Music[Number].Music)==0){ for(int i=0; i<AllBGM; i++ )StopSoundMem( Music[i].Music ) ; PlaySoundMem( Music[Number].Music, DX_PLAYTYPE_LOOP ) ; } }
void music_play(){ int i; for(i=0;i<SE_MAX;i++){ if(se_flag[i]==1){ if(CheckSoundMem(sound_se[i])!=0){ if(i==8)continue; StopSoundMem(sound_se[i]); } PlaySoundMem(sound_se[i],DX_PLAYTYPE_BACK); } } }
/* ================================================ */ void SoundManager::PlayBGM( const char *tagBGM, const uint32_t &volume ) { uint32_t handle = GetHandleId(tagBGM); if(handle == INVALID_VALUE){ DEBUG_PRINT("【再生しようとしたBGMはロードされていない?】\n"); return; } //! 再生中でないか確認 if(!CheckSoundMem(handle)){ for(uint32_t i = 0; i < m_vBGM.size(); ++i){ //! 他のBGMはすべて止める StopSoundMem(m_vBGM.at(i).m_soundId); } SetVolumeSoundMem( volume, handle); PlaySoundMem(handle, DX_PLAYTYPE_LOOP); m_fadeTag = INVALID_VALUE; } }
void SoundManager::StopBGM(bool isFade) { uint32_t playBGMId = INVALID_VALUE; for(uint32_t i = 0; i < m_vBGM.size(); ++i){ if(CheckSoundMem(m_vBGM.at(i).m_soundId)){ //! BGMは一曲しかならない前提なので再生曲を見つけたら抜ける playBGMId = m_vBGM.at(i).m_soundId; break; } } if(isFade){ //! フェードがありならUpdateで処理を行う m_fadeTag = playBGMId; } else{ StopSoundMem(playBGMId); } }
void Player::update(double *shotX, double *shotY, int *weaponNum, int *status , bool *_wasAttacked){ //キーのチェック frame++; if (!wasAttackedFlag){ //ダメージ判定中は動けないようにしておく。 if (CheckHitKey(KEY_INPUT_LEFT) == 1 && _x > 0){ direction = Left; _x -= 4; _gCount++; if (_gCount >= 10){ if (_gNum == 3) _gNum = 4; else _gNum = 3; _gCount = 0; } } if (CheckHitKey(KEY_INPUT_RIGHT) == 1 && _x < 421){ direction = Right; _x += 4; _gCount++; if (_gCount >= 10){ if (_gNum == 0) _gNum = 1; else _gNum = 0; _gCount = 0; } } int i = 0; //一応一発まで設置可能にしておく。 changing_weapon(i); *weaponNum = weapon_n; if (CheckHitKey(KEY_INPUT_Z) == 1 && _weapon[i].sf_p == false && GetNowCount() - T_weapons > 300){//設置! if (_gNum <= 2) _gNum = 2; else _gNum = 5; placing(i, weapon); T_weapons = GetNowCount(); } if (CheckHitKey(KEY_INPUT_UP) == 1 && GetNowCount() - T_changing > 500){ if (weapon_n == 2){ weapon_n = 0; } else{ weapon_n++; } flag_changed = true; T_changing = GetNowCount(); } _weapon[i].weapon_B->setWeaponStatus(*status); if (_weapon[i].sf_p == true){ _weapon[i].weapon_B->update(); *shotX = _weapon[i].weapon_B->getX(); *shotY = _weapon[i].weapon_B->getY(); _weapon[i].weapon_B->checkForPlayer(_weapon[i].sf_p); //お試し程度で実装 _pipe[i].pipe->checkForPlayer(_weapon[i].sf_p); } *status = _weapon[i].weapon_B->getWeaponStatus(); } if (*_wasAttacked){ if (!CheckSoundMem(DamegeSound)){ PlaySoundMem(DamegeSound, DX_PLAYTYPE_BACK); } *_wasAttacked = false; wasAttackedFlag = true; } if (wasAttackedFlag){ if (wasAttackedFrame >= 50){ wasAttackedFrame = 0; wasAttackedFlag = false; _live--; _x = 0; _y = 518; } else{ ++wasAttackedFrame; } } }
GameResult * GameRoad::update(void) { int c = 0; //該当ブロックカウント int i; RO_LEVEL *lv = &levels[now_level]; GetHitKeyStateAll( Key ) ; switch(cond) { case RO_GAMEOVER: // キー待ち後遷移 if(Key[KEY_INPUT_Y] == 1) { init(rd_g_res); } if(Key[KEY_INPUT_N] == 1) { // 終了 ro_g_res.end_status(0); return &ro_g_res; } break; case RO_END: ro_g_res.end_status(1); return &ro_g_res; // 平常終了 // 初期化 case RO_INI: { DataLoad(); cond = RO_GAME_S; for(i=0; i<RO_Y_CNT; i++) { for(int j=0; j<RO_X_CNT; j++) { roads[i][j] = 0; roads_se[i][j] = 0; } } PlaySoundMem(se_num[RO_SE_START] , DX_PLAYTYPE_BACK); break; } // ゲーム開始 case RO_GAME_S: if(CheckSoundMem(se_num[RO_SE_START]) != 1) { cond = RO_GAME; PlaySoundMem(se_num[bgms[stage]] , DX_PLAYTYPE_LOOP); } break; // ゲーム中 case RO_GAME: if(clearCheck() > -1) { cond = RO_CLEAR; BGMStop(); break; } time++; // レベルチェック lv++; if(lv->road != -1 && lv->road <= all_road) { now_level++; lv++; } else { lv--; } move_time++; if(move_time >= 6) { move_time = 0; // 落下 c = 0; if(block.ok == 1) { block.x -= lv->speed; } } // 新規ブロック生成 newBlock(); // 方向キー // 先へ if(Key[KEY_INPUT_LEFT] > 0) { move_time++; } // 停滞 if(Key[KEY_INPUT_RIGHT] > 0) { move_time--; } // 位置移動(上) if(Key[KEY_INPUT_UP] == 1) { if(!(once_btn & 1)) { block.k--; if(block.k < 0) { block.k = 0; } once_btn |= 1; } } else { once_btn &= ~1; } // 位置移動(下) if(Key[KEY_INPUT_DOWN] == 1) { if(!(once_btn & 2)) { block.k++; if(block.k > RO_Y_CNT-1) { block.k = RO_Y_CNT-1; } once_btn |= 2; } } else { once_btn &= ~2; } // 向き変更キー if(Key[KEY_INPUT_RETURN] == 1 || Key[KEY_INPUT_Z] == 1) { if(!(once_btn & 4)) { block.col++; if(block.col > 2) { block.col = 0; } } once_btn |= 4; } else { once_btn &= ~4; } roadSetCheck(); break; // game clear case RO_CLEAR: if(ch_mode == 1) { chMoveSet(); chMove(); } else { PlaySoundMem(se_num[RO_SE_CLEAR] , DX_PLAYTYPE_BACK); } ch_mode = 1; break; } return 0; }
void Enemy::PlaySE(int dist){ if(CheckSoundMem(dist)==1){StopSoundMem(dist);} PlaySoundMem(dist,DX_PLAYTYPE_BACK); }
void Select() { DrawBox(0, 0, Screen_X, Screen_Y, Status.White, TRUE); DrawGraph(Gp.Select_X, Gp.Select_Y, Graph.Select, TRUE); DrawExtendGraph(Gp.CentrJacket_X, Gp.CentrJacket_Y, Gp.CentrJacket_X + 500, Gp.CentrJacket_Y + 500, Music[Global.TargetMusic].Jacket, TRUE); if (CheckSoundMem(Music[Global.TargetMusic].MusicData) != 1){ PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } if (Global.TargetMusic > 0){ DrawExtendGraph(Gp.LeftJacket_X, Gp.LeftJacket_Y, Gp.LeftJacket_X + 350, Gp.LeftJacket_Y + 350, Music[Global.TargetMusic - 1].Jacket, TRUE); } else{ DrawExtendGraph(Gp.LeftJacket_X, Gp.LeftJacket_Y, Gp.LeftJacket_X + 350, Gp.LeftJacket_Y + 350, Music[Global.MusicCnt - 1].Jacket, TRUE); } if (Global.TargetMusic < Global.MusicCnt - 1){ DrawExtendGraph(Gp.RightJacket_X, Gp.RightJacket_Y, Gp.RightJacket_X + 350, Gp.RightJacket_Y + 350, Music[Global.TargetMusic + 1].Jacket, TRUE); } else{ DrawExtendGraph(Gp.RightJacket_X, Gp.RightJacket_Y, Gp.RightJacket_X + 350, Gp.RightJacket_Y + 350, Music[0].Jacket, TRUE); } if (Global.Key[KEY_INPUT_V] == 1 || Global.Key[KEY_INPUT_F] == 1 || Global.Key[KEY_INPUT_R] == 1 || Global.Key[KEY_INPUT_4] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); StopSoundMem(Music[Global.TargetMusic].MusicData); if (Global.TargetMusic > 0){ Global.TargetMusic--; } else{ Global.TargetMusic = Global.MusicCnt - 1; } PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } if (Global.Key[KEY_INPUT_N] == 1 || Global.Key[KEY_INPUT_J] == 1 || Global.Key[KEY_INPUT_I] == 1 || Global.Key[KEY_INPUT_9] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_BACK); StopSoundMem(Music[Global.TargetMusic].MusicData); if (Global.TargetMusic < Global.MusicCnt - 1){ Global.TargetMusic++; } else{ Global.TargetMusic = 0; } PlaySoundMem(Music[Global.TargetMusic].MusicData, DX_PLAYTYPE_LOOP); } Global.SelectCounter++; if (Global.Key[KEY_INPUT_F1] == 1 || Global.Key[KEY_INPUT_B] == 1){ PlaySoundMem(Sound.Push, DX_PLAYTYPE_NORMAL); Flag.Select = 2; Global.SelectCounter = 0; Global.TargetDiff = 1; Global.Key[KEY_INPUT_F1] = 0; Global.Key[KEY_INPUT_B] = 0; } }
void StageDig::Update(void) { // モグルのドリルで敵にダメージ UnitManager &unitManager = UnitManager::GetInstance(); VECTOR position; position.x = 7.5f; position.y = 5.0f; UnitBase* unit = unitManager.GetNearUnit( position, 1.0f, true ); if( unit != NULL ) { VECTOR damageType; unit->AddDamage(1000, UnitBase::DAMAGETYPE_NORMAL, damageType, NULL ); } // ブロック削り判定 BlockManager &blockManager = BlockManager::GetInstance(); BlockBase* base = blockManager.GetBlock( position.x, position.y ); // 指定地点が空なら if( base == NULL || base->m_ID == BLOCK_WATER || base->m_ID == BLOCK_FIRE) { float speed = 0.06f; if( base ) { if(base->m_ID == BLOCK_WATER ) { speed = 0.03f; } else if( base->m_ID == BLOCK_FIRE && GameInput::GetInstance().GetFrame() % 10 == 0) { DataManager::GetInstance().m_MogllStatus.life -= EquipmentFunction_05(1); } } float fallValue = EquipmentFunction_40( speed ); blockManager.AddDepth( fallValue ); DataManager &data = DataManager::GetInstance(); // 記録更新したら代入 int depth = static_cast<int>(blockManager.GetDepth() + data.m_MogllStatus.position.y * 600.0f / 40.0f); if( data.m_SaveData.stageDepth[ data.m_SceneInt["StageNo"] ] < depth ) { data.m_SaveData.stageDepth[ data.m_SceneInt["StageNo"] ] = depth; } //UnitManager::GetInstance().MoveUp( fallValue ); } else if( EquipmentFunction_35( GameInput::GetInstance().GetFrame() ) ) { DataManager &data = DataManager::GetInstance(); // ブロックの削りダメージ int damage = 1; int mogllDamage = EquipmentFunction_11( data.m_SystemData.block[ base->m_ID - 1 ].damage ); m_DigPoint += mogllDamage; if( m_DigPoint >= 100 ) { data.m_MogllStatus.life -= m_DigPoint / 100; m_DigPoint = m_DigPoint % 100; } base->m_Life -= damage; } //-------------------------------------------------------------- 笹井 //今いるブロックをチェック base = blockManager.GetBlock( position.x, position.y ); if(base) { if(base->m_ID == BLOCK_WATER ) { m_SEWaterCnt--; if( m_SEWaterCnt <= 0 && CheckSoundMem(DataManager::GetInstance().Get( DataManager::SoundSE57 )) == 0) { PlaySoundMem( DataManager::GetInstance().Get( DataManager::SoundSE57 ), DX_PLAYTYPE_BACK); m_SEWaterCnt = 90; } } else if( base->m_ID == BLOCK_FIRE) { if(CheckSoundMem(DataManager::GetInstance().Get( DataManager::SoundSE56 )) == 0) PlaySoundMem( DataManager::GetInstance().Get( DataManager::SoundSE56 ), DX_PLAYTYPE_BACK); } if(base->m_ID != BLOCK_WATER ) m_SEWaterCnt = 0; } }