void GameFrame::DelFromeParent() { GameFrame* parentFrame = dynamic_cast<GameFrame*>(getParent()); if(parentFrame) { parentFrame->DelChildFrame(this); } }
// エントリーポイントを作成 INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT){ // コンソールウィンドウが表示される ConsoleWindow::Create(); // このクラスがメインループを持っているクラス GameEntry* entry = new GameEntry(); // 独自に作成したフレームオブジェクトのオブジェクトを作成 GameFrame* frame = new GameFrame(); // 初期化 entry->Initialize(false, L"Palm of God"); frame->Initialize(*entry->GetWindowHandle(), POINT{800,600},false,1000000); // この関数を呼び出すことによって、画面の背景色の変更ができる // デフォルトの設定では黒が設定されている frame->BackgroundColor(Color(0.0f, 0.0f, 0.0f, 1.0f)); // エントリークラスにメインループに使うFrameオブジェクトを設定 entry->SetGameFrame(frame); // 最初のシーンのオブジェクトを作成 GameScene* firstScene = new SceneTitle(); // 最初のシーンの設定 GameSceneManager::SetCurrentScene(firstScene); // 実行するロードオブジェクトの作成 LoadScreen *loadobj = new LoadObj; GameSceneManager::SetLoadScreen(loadobj); // メインループの開始 // この関数の内部で,GameFrameオブジェクトのFrameRunningが呼ばれる。 entry->GameRun(); // フレームオブジェクトの破棄 delete frame; frame = nullptr; // エントリーオブジェクトの破棄 delete entry; entry = nullptr; // コンソールウィンドウを破棄したいときはこの関数を呼ぶ //ConsoleWindow::Close(); return 0; }
bool FrameManager::CreateToScene(string name) { GameFrame* frame = CreateFrame(name); if(!P_VALID(frame)) { return false; } if(!frame->LoadUI()) { return false; } frame->RegisterEvent(); mCurScene->addChild(frame); DWORD dwId = Util::Crc32((LPBYTE)name.data(), name.length()); mFrames[dwId] = frame; frame->retain(); return true; }
GameFrame* GameFrame::AddChildFrame(string className, string name) { DWORD dwId = GT_INVALID; if(name == "") dwId = UtilTool::Crc32((LPBYTE)className.data(), className.length()); else dwId = UtilTool::Crc32((LPBYTE)name.data(), name.length()); if(!GT_VALID(dwId)) return nullptr; FrameMapItor itor = mFrames.find(dwId); if(itor != mFrames.end()) return nullptr; GameFrame* frame = FrameManager::Shared()->CreateFrame(className); if(!P_VALID(frame)) { return nullptr; } if(!frame->LoadUI()) { return nullptr; } frame->RegisterEvent(); if(dwId == FrameManager::Shared()->GetMsgBoxID()) { //todo this->addChild(frame, 9999999); } else this->addChild(frame); mFrames[dwId] = frame; frame->retain(); return frame; }