SDXFrameWork  0.07
SDXFrameWork
 全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
System.h
1 #pragma once//☀SDL
2 #include <Multimedia/SDX.h>
3 #include <Multimedia/Window.h>
4 #include <Multimedia/Screen.h>
5 #include <Multimedia/Input.h>
6 #include <Multimedia/Font.h>
7 #include <Multimedia/Music.h>
8 
9 namespace SDX
10 {
13 class System
14 {
15 private:
16  System();
17  ~System();
18  static bool isEnd;
19 public:
20 
24  static void Initialise( const char* ウィンドウ名 , int 幅 , int 高さ )
25  {
26  if (SDL_Init( SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO ) < 0)
27  {
28  fprintf(stderr, "SDLの初期化に失敗しました:%s\n", SDL_GetError());
29  exit(1);
30  return;
31  }
32 
33  setlocale(LC_CTYPE, "jpn");//文字コードを日本語に
34 
35  int flag = 0;
36  if (Window::Single().isFullScreen)
37  {
38  flag = SDL_WINDOW_FULLSCREEN;
39  }
40 
41  Window::Single().width = 幅;
42  Window::Single().height = 高さ;
43 
44  Window::Single().handle = SDL_CreateWindow( ウィンドウ名 ,SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 幅 , 高さ , flag);
45  Screen::SetRenderer(SDL_CreateRenderer(Window::Single().handle, -1, SDL_RENDERER_PRESENTVSYNC));
46 
47  #ifdef TABLET
48  int dpiX;
49  int dpiY;
50  SDL_GetWindowSize( Window::Single().handle, &dpiX, &dpiY);
51  Window::Single().aspect = (double)dpiX / dpiY;
52  SDL_RenderSetLogicalSize( Screen::GetHandle() , 幅, 高さ);
53  #endif
54 
55  TTF_Init();
56 
57  //デフォルトフォントの設定
58  Drawing::SetDefaultFont( SystemFont::Gothic , 16 );
59 
60  SDL_InitSubSystem( SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_EVERYTHING );
61 
62  SDL_JoystickEventState(SDL_ENABLE);
63 
64  if( SDL_NumJoysticks() > 0 )
65  {
66  Input::pad.Open();
67  }
68 
69  //音声関連の初期化
70  Mix_Init(MIX_INIT_MP3);
71  Mix_OpenAudio(44100, AUDIO_S16, 2, 1024);
72  Mix_AllocateChannels(16);
73 
74  isEnd = false;
75  }
76 
79  static bool End()
80  {
81  TTF_Quit();
82  Mix_CloseAudio();
83  Mix_Quit();
84  SDL_Quit();
85  isEnd = true;
86  return true;
87  }
88 
90  static bool Update(bool 描画更新フラグ = true)
91  {
92  if (描画更新フラグ)
93  {
94  Screen::Flip();
95  Screen::Clear();
96  }
97  bool result = System::ProcessMessage();
98  Input::Update();
99  return result;
100  }
101 
105  static bool ProcessMessage()
106  {
107  SDL_Event event;
108 
109  while (SDL_PollEvent(&event))
110  {
111  /* QUIT イベントが発生したら終了する*/
112  if( event.type == SDL_WINDOWEVENT)
113  {
114 #ifdef TABLET
115 switch (event.window.event)
116  {
117  case SDL_WINDOWEVENT_MINIMIZED:
118  Mix_VolumeMusic( 0 );
119  break;
120  case SDL_WINDOWEVENT_RESTORED:
121  Mix_VolumeMusic( Music::nowVolume );
122  break;
123  }
124 #endif
125  }else if (event.type == SDL_QUIT)
126  {
127  isEnd = true;
128  }
129  else
130  {
131  Input::GetState(event);
132  }
133  }
134 
135  return !isEnd;
136  }
137 
141  static bool SetOutputLog( bool 出力フラグ)
142  {
143  return false;
144  }
145 
148  static bool SetMemToVram( bool VRAM使用フラグ)
149  {
150  return false;
151  }
152 
155  static bool SetAlwaysRun( bool 常時処理フラグ )
156  {
157  return false;
158  }
159 };
160 }
161 
static void Update()
状態を更新.
Definition: Input.h:39
static bool Flip()
描画内容を反映.
Definition: Screen.h:101
static void Initialise(const char *ウィンドウ名, int 幅, int 高さ)
ライブラリの初期化.
Definition: System.h:24
ライブラリの初期化やシステム的な処理を行う関数群.
Definition: System.h:13
static bool SetAlwaysRun(bool 常時処理フラグ)
非アクティブ時も処理を続行するか設定[DXLIB].
Definition: System.h:155
static bool Update(bool 描画更新フラグ=true)
各種更新処理をまとめて行う.
Definition: System.h:90
static bool Clear()
画面を消去する.
Definition: Screen.h:115
static void SetDefaultFont(const char *フォント名, int 大きさ)
デフォルトのフォントを設定する.
Definition: Drawing.h:78
static bool SetMemToVram(bool VRAM使用フラグ)
ビデオRAM使用を設定[DXLIB].
Definition: System.h:148
static bool End()
ライブラリの終了処理.
Definition: System.h:79
static void SetRenderer(ScreenHandle handle)
スクリーンハンドルを設定.
Definition: Screen.h:55
static bool ProcessMessage()
OSのメッセージ処理を行う.
Definition: System.h:105
static bool SetOutputLog(bool 出力フラグ)
ログ出力の有無を設定[DXLIB].
Definition: System.h:141
static void GetState(SDL_Event &event)
入力の状態を更新[SDL].
Definition: Input.h:50
static ScreenHandle GetHandle()
スクリーンハンドルを取得.
Definition: Screen.h:49