ちょっと暇なときにでもまとめようかと考えております。
まぁフレームワークといってもそこまで本格的なものを作るわけではなく、
要するに「ゲームを作るときにプログラマーと呼ばれる人種は大抵こういうものを最初に用意してるよ」というレベルのお話です。
なのであんまり眉間にシワを寄せない程度に、栗きんとんでも食べながらご覧下さい。
本日は第1回ということで一番簡単なフレームワークを
#include"DxLib\DxLib.h"
#include
#include
#include
#include
#define APP_ASSERT assert
using namespace std;
namespace GameScene{
const int SCENE_NONE = 0;
// フェードイン・アウトリスナー
class FadeListener{
public :
virtual bool FadeIn( bool trigger ) = 0;
virtual bool FadeOut( bool trigger ) = 0;
};
// シーン基底クラス
// ゲームシーンを制御する
class Scene{
private :
string m_name;
int m_sceneid;
int m_nextsceneid;
FadeListener* m_fadein;
FadeListener* m_fadeout;
public :
Scene(){
m_name = "noname";
m_sceneid = SCENE_NONE;
}
string getName(){
return m_name;
}
int getSceneID(){
return m_sceneid;
}
int getNextSceneID(){
return m_nextsceneid;
}
void setNextSceneID( int nextsceneid ){
m_nextsceneid = nextsceneid;
}
void setupScene( string name , int sceneid ){
m_name = name;
m_sceneid = sceneid;
}
FadeListener* getFadeIn() const{
return m_fadein;
}
FadeListener* getFadeOut() const{
return m_fadeout;
}
void OnPreInit(){
m_nextsceneid = SCENE_NONE;
m_fadein = NULL;
m_fadeout = NULL;
}
virtual void OnInit(){
}
virtual void OnUpdateFirst(){
}
virtual void OnUpdate(){
}
virtual void OnRelease(){
}
};
利用すると
OnInit()→OnUpdateFirst()→OnUpdate()→OnRelease()
という順番で処理がコールされる。
この仕組みはゲーム開発すると誰もが最初に覚えるのではないでしょうか。
結構有名かつすぐに実装できますが、これこそゲームフレームワークの原点のような気がする。
シーンとシーンの切り替わり時のフェードイン・フェードアウトの仕組み
シーン全体を管理するマネージャーに関してはまた次回
ではでは
追記
DXライブラリ使うとか書いておいて
関数が一つも入ってないことに気がついた
まぁそのうち入る