private static void DxPrv_SetScreenSize(int w, int h) { bool mdm = GetMouseDispMode(); GamePicture.UnloadAllPicResHandle(); SubScreen.UnloadAllSubScreenHandle(); //ReleaseAllFontHandle(); // TODO if (DX.SetGraphMode(w, h, 32) != DX.DX_CHANGESCREEN_OK) { throw new GameError(); } DX.SetDrawScreen(DX.DX_SCREEN_BACK); DX.SetDrawMode(DX.DX_DRAWMODE_BILINEAR); SetMouseDispMode(mdm); }
public static void UnloadAllSubScreenHandle() { ChangeDrawScreen(DX.DX_SCREEN_BACK); // これから開放するハンドルであるとマズいので... for (int index = 0; index < SubScreenList.Count; index++) { SubScreen i = SubScreenList[index]; if (i.Handle != -1) { if (DX.DeleteGraph(i.Handle) != 0) // ? 失敗 { throw new GameError(); } i.Handle = -1; } } }
public static void EachFrame() { //if (SEEachFrame()) // TODO { GameMusic.MusicEachFrame(); } GameGround.I.EL.ExecuteAllTask(); GameToolkit.CurtainEachFrame(); if (GameGround.I.MainScreen != null && SubScreen.CurrDrawScreenHandle == GameGround.I.MainScreen.GetHandle()) { SubScreen.ChangeDrawScreen(DX.DX_SCREEN_BACK); if (GameGround.I.RealScreenDrawRect.W == -1) { if (DX.DrawExtendGraph(0, 0, GameGround.I.RealScreenSize.W, GameGround.I.RealScreenSize.H, GameGround.I.MainScreen.GetHandle(), 0) != 0) // ? 失敗 { throw new GameError(); } } else { if (DX.DrawBox(0, 0, GameGround.I.RealScreenSize.W, GameGround.I.RealScreenSize.H, DX.GetColor(0, 0, 0), 1) != 0) // ? 失敗 { throw new GameError(); } if (DX.DrawExtendGraph( GameGround.I.RealScreenDrawRect.L, GameGround.I.RealScreenDrawRect.T, GameGround.I.RealScreenDrawRect.L + GameGround.I.RealScreenDrawRect.W, GameGround.I.RealScreenDrawRect.T + GameGround.I.RealScreenDrawRect.H, GameGround.I.MainScreen.GetHandle(), 0) != 0) // ? 失敗 { throw new GameError(); } } } // DxLib > DX.ScreenFlip(); if ((IgnoreEscapeKey == false && DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) == 1) || DX.ProcessMessage() == -1) { throw new GameError.EndProc(); } // < DxLib CheckHz(); ProcFrame++; if (IntTools.IMAX < ProcFrame) // 192.9日程度でカンスト { throw new GameError(); } GameDefine.CountDown(ref FreezeInputFrame); WindowIsActive = GameSystem.IsWindowActive(); GamePad.PadEachFrame(); GameKeyboard.KeyEachFrame(); GameInput.InputEachFrame(); GameMouse.I.MouseEachFrame(); if (GameGround.I.RealScreenSize.W != GameGround.I.ScreenSize.W || GameGround.I.RealScreenSize.H != GameGround.I.ScreenSize.H) { if (GameGround.I.MainScreen == null) { GameGround.I.MainScreen = new SubScreen(GameGround.I.ScreenSize.W, GameGround.I.ScreenSize.H); } SubScreen.ChangeDrawScreen(GameGround.I.MainScreen); } }
public static void ChangeDrawScreen(SubScreen screen) { ChangeDrawScreen(screen.GetHandle()); }