SDXFrameWork 0.09 SDXFrameWork

- Main Page
- Related Pages
- Classes

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