SDXFrameWork  0.04
SDXFrameWork
 全て クラス ネームスペース 関数 変数 ページ
System.h
1 #pragma once
2 #include<Multimedia/SDX.h>
3 #include<Multimedia/Window.h>
4 #include<Multimedia/Screen.h>
5 #include<Multimedia/Input.h>
6 
7 namespace SDX
8 {
10 class System
12 {
13 private:
14  System();
15  ~System();
16 public:
17 
19  static void Initialise( const char* ウィンドウ名 , int 幅 , int 高さ )
22  {
23  #ifdef DXLIB
24  Window::SetTitle(const_cast<char*>(ウィンドウ名));
25  DxLib::SetGraphMode(幅, 高さ, 32);
26  #ifndef DEBUG
27  SetUseDirectInputFlag(FALSE);//DebugビルドではDirectInputが重い。
28  #endif
29 
30  if( !Window::Single().isFullScreen )
31  {
32  DxLib::ChangeWindowMode( true );
33  }
34 
35  if( DxLib::DxLib_Init() == -1 ) exit(1);
36 
37  DxLib::SetDrawScreen( DX_SCREEN_BACK );
38  #elif defined(SDL)
39  if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) < 0)
40  {
41  fprintf(stderr, "SDLの初期化に失敗しました:%s\n", SDL_GetError());
42  exit(1);
43  return;
44  }
45 
46  setlocale(LC_CTYPE, "jpn");//文字コードを日本語に
47 
48  TTF_Init();
49 
50  int flag = 0;
51  if (Window::Single().isFullScreen)
52  {
53  flag = SDL_WINDOW_FULLSCREEN;
54  }
55 
56  Window::Single().handle = SDL_CreateWindow( ウィンドウ名 ,SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 幅 , 高さ , flag);
57  Screen::SetRenderer(SDL_CreateRenderer(Window::Single().handle, 0, SDL_RENDERER_ACCELERATED));
58 
59  //音声関連の初期化
60  Mix_OpenAudio(44100, AUDIO_S16, 2, 4096);
61  Mix_AllocateChannels(16);
62  #endif
63  }
64 
66  static bool End()
68  {
69  #ifdef DXLIB
70  return !DxLib::DxLib_End();
71  #elif defined(SDL)
72  TTF_Quit();
73  Mix_CloseAudio();
74  SDL_Quit();
75  return true;
76  #endif
77  }
78 
80  static bool Update(bool 描画更新フラグ = true)
81  {
82  if (描画更新フラグ)
83  {
84  Screen::Flip();
85  Screen::Clear();
86  }
87  bool result = System::ProcessMessage();
88  Input::Update();
89  return result;
90  }
91 
93  static bool ProcessMessage()
96  {
97  #ifdef DXLIB
98  return !DxLib::ProcessMessage();
99  #elif defined(SDL)
100  SDL_Event event;
101 
102  while (SDL_PollEvent(&event))
103  {
104  /* QUIT イベントが発生したら終了する*/
105  if (event.type == SDL_QUIT) return false;
106  else Input::GetState(event);
107  }
108 
109  return true;
110  #endif
111  }
112 
114  static bool SetOutputLog( bool 出力フラグ)
117  {
118  #ifdef DXLIB
119  return !DxLib::SetOutApplicationLogValidFlag(出力フラグ);
120  #elif defined(SDL)
121  return false;
122  #endif
123  }
124 
126  static bool SetMemToVram( bool VRAM使用フラグ)
128  {
129  #ifdef DXLIB
130  return !SetScreenMemToVramFlag(VRAM使用フラグ);
131  #elif defined(SDL)
132  return false;
133  #endif
134  }
135 
137  static bool SetAlwaysRun( bool 常時処理フラグ )
139  {
140  #ifdef DXLIB
141  return !DxLib::SetAlwaysRunFlag(常時処理フラグ);
142  #elif defined(SDL)
143  return false;
144  #endif
145  }
146 };
147 }
148 
static void Update()
状態を更新.
Definition: Input.h:33
static bool Flip()
描画内容を反映.
Definition: Screen.h:126
static bool SetTitle(const char *タイトル名)
ウィンドウタイトルを設定.
Definition: Window.h:42
static void Initialise(const char *ウィンドウ名, int 幅, int 高さ)
ライブラリの初期化.
Definition: System.h:21
static bool SetAlwaysRun(bool 常時処理フラグ)
非アクティブ時も処理を続行するか設定.
Definition: System.h:138
static bool Update(bool 描画更新フラグ=true)
各種更新処理をまとめて行う.
Definition: System.h:80
static bool Clear()
画面を消去する.
Definition: Screen.h:160
static bool SetMemToVram(bool VRAM使用フラグ)
ビデオRAM使用を設定.
Definition: System.h:127
static bool End()
ライブラリの終了処理.
Definition: System.h:67
static bool ProcessMessage()
OSのメッセージ処理を行う.
Definition: System.h:95
static bool SetOutputLog(bool 出力フラグ)
ログ出力の有無を設定.
Definition: System.h:116