MenuScreenの継承



これまでは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の継承

コメントを投稿