図0115a
画像が点滅してますので、コントローラの左スティック上下で移動させて、選択し、Aボタンを押します。すると、ゲームステージが出てきます。
図0115b
Bボタンでセレクト画面に戻ります。
class Scene : public SceneBase {
//中略
//現在セレクトされているステージナンバー
int m_SrageNum;
public:
//中略
//ステージナンバーのアクセサ
int GetStageNum() const {
return m_SrageNum;
}
void SetStageNum(int i) {
m_SrageNum = i;
}
};
void SelectStage::OnUpdate() {
//シーンの取得
auto PtrScene = App::GetApp()->GetScene<Scene>();
int StageNum = PtrScene->GetStageNum();
//コントローラの取得
auto CntlVec = App::GetApp()->GetInputDevice().GetControlerVec();
if (CntlVec[0].bConnected) {
//ゲームステージへ
//Aボタン
if (CntlVec[0].wPressedButtons & XINPUT_GAMEPAD_A) {
PostEvent(0.0f, GetThis<SelectStage>(), PtrScene, L"ToGameStage");
return;
}
if (!m_CntrolLock) {
if (CntlVec[0].fThumbLY >= 0.8f) {
StageNum--;
if (StageNum < 1) {
StageNum = 3;
}
m_CntrolLock = true;
PtrScene->SetStageNum(StageNum);
ChangeSelect(StageNum);
}
else if (CntlVec[0].fThumbLY <= -0.8f) {
StageNum++;
if (StageNum > 3) {
StageNum = 1;
}
m_CntrolLock = true;
PtrScene->SetStageNum(StageNum);
ChangeSelect(StageNum);
}
}
else {
if (CntlVec[0].fThumbLY == 0.0f) {
m_CntrolLock = false;
}
}
}
}
void GameStage::OnCreate() {
try {
//シーンの取得
auto PtrScene = App::GetApp()->GetScene<Scene>();
wstring DataDir;
App::GetApp()->GetDataDirectory(DataDir);
switch (PtrScene->GetStageNum()) {
case 1:
//CSVファイルの確定
m_GameStageCsv.SetFileName(DataDir + L"GameStage1.csv");
break;
case 2:
//CSVファイルの確定
m_GameStageCsv.SetFileName(DataDir + L"GameStage2.csv");
break;
case 3:
//CSVファイルの確定
m_GameStageCsv.SetFileName(DataDir + L"GameStage3.csv");
break;
default:
//それ以外はステージ1
//CSVファイルの確定
m_GameStageCsv.SetFileName(DataDir + L"GameStage1.csv");
break;
}
m_GameStageCsv.ReadCsv();
////CSVファイルそのBの読み込み
m_GameStageCsvB.SetFileName(DataDir + L"GameStageB.csv");
m_GameStageCsvB.ReadCsv();
//中略
}
catch (...) {
throw;
}
}