これまではabstractであるMenuScreenを継承してMainManuScreenを実装していた。
実装を変えれば、別のメニューが作れるということは想像できる。
別の実装のOptionsMenuScreenを作って、MainManuScreen内のOptionのMenuEntryを選択したイベント内で、ScreenManagerにaddScreen()した。
このままでは二つのGameScreenが重なって表示されてしまう。
GameScreenにIsPopupプロパティーを設けて、ポップアップタイプのGameScreenでないときは重なって表示されないように、 ScreenManagerのUpdate()を変更した。
while(screensToUpdate.Count > 0) {
//GameScreenを後ろから順番に参照する
GameScreen screen = screensToUpdate[screensToUpdate.Count - 1];
screensToUpdate.RemoveAt(screensToUpdate.Count - 1);
screen.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen);
if(!otherScreenHasFocus) {
screen.HandleInput(input);
otherScreenHasFocus = true;
}
//もしGameScreenがポップアップタイプでなかったら、次のスクリーンは coveredByOthierScreen=trueになる。(覆い隠されている)
if(!screen.IsPopup) {
coveredByOtherScreen = true;
}
}ここまでのプロジェクト(133KB)


0 コメント :: MenuScreenの継承
コメントを投稿