示例#1
0
        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);
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
 public static void ChangeDrawScreen(SubScreen screen)
 {
     ChangeDrawScreen(screen.GetHandle());
 }