192 lines
5.4 KiB
C++
192 lines
5.4 KiB
C++
|
|
#include "GameState.h"
|
|||
|
|
#include "SquirrelActor.h"
|
|||
|
|
|
|||
|
|
extern SquirrelClassEx* TObject;
|
|||
|
|
extern NPK_M* npk;
|
|||
|
|
std::map<std::string, Sound*>SoundRecObject;
|
|||
|
|
std::unordered_map<std::string, std::map<int,TexturePtr>>ImageRecObject;
|
|||
|
|
std::map<std::string, FontPtr>FontRecObject;
|
|||
|
|
WThreadPool threadPool;
|
|||
|
|
Cursor* Mouse_Object = new Cursor();
|
|||
|
|
|
|||
|
|
void InitSound(const TCHAR* directory)
|
|||
|
|
{
|
|||
|
|
WIN32_FIND_DATA fileInfo;
|
|||
|
|
TCHAR buffer[MAX_PATH];
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
_tcscpy_s(buffer, directory);
|
|||
|
|
_tcscat_s(buffer, _T("\\*.*"));
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>/Ŀ¼
|
|||
|
|
HANDLE hFind = FindFirstFile(buffer, &fileInfo);
|
|||
|
|
if (hFind != INVALID_HANDLE_VALUE)
|
|||
|
|
{
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
// <20>ų<EFBFBD> "." <20><> ".."
|
|||
|
|
if (_tcscmp(fileInfo.cFileName, _T(".")) != 0 && _tcscmp(fileInfo.cFileName, _T("..")) != 0)
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
|
|||
|
|
if (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
|||
|
|
{
|
|||
|
|
_tcscpy_s(buffer, directory);
|
|||
|
|
_tcscat_s(buffer, _T("\\"));
|
|||
|
|
_tcscat_s(buffer, fileInfo.cFileName);
|
|||
|
|
InitSound(buffer);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
//_tprintf(_T("%s\\%s\n"), directory, fileInfo.cFileName);
|
|||
|
|
|
|||
|
|
char output[1024];
|
|||
|
|
sprintf(output, "%ws\\%ws", directory,fileInfo.cFileName);
|
|||
|
|
std::string path = output;
|
|||
|
|
std::replace(path.begin(), path.end(), '\\', '/');
|
|||
|
|
|
|||
|
|
Sound* sou = new Sound(path);
|
|||
|
|
//sou->Preload(path);
|
|||
|
|
SoundRecObject[path] = sou;
|
|||
|
|
//std::cout << "<22><>Ƶ<EFBFBD><C6B5>Դ___" << path << "____<5F>Ѽ<EFBFBD><D1BC><EFBFBD>" << std::endl;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} while (FindNextFile(hFind, &fileInfo));
|
|||
|
|
|
|||
|
|
FindClose(hFind);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void InitFont(const TCHAR* directory)
|
|||
|
|
{
|
|||
|
|
WIN32_FIND_DATA fileInfo;
|
|||
|
|
TCHAR buffer[MAX_PATH];
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
_tcscpy_s(buffer, directory);
|
|||
|
|
_tcscat_s(buffer, _T("\\*.*"));
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>/Ŀ¼
|
|||
|
|
HANDLE hFind = FindFirstFile(buffer, &fileInfo);
|
|||
|
|
if (hFind != INVALID_HANDLE_VALUE)
|
|||
|
|
{
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
// <20>ų<EFBFBD> "." <20><> ".."
|
|||
|
|
if (_tcscmp(fileInfo.cFileName, _T(".")) != 0 && _tcscmp(fileInfo.cFileName, _T("..")) != 0)
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼
|
|||
|
|
if (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
|||
|
|
{
|
|||
|
|
_tcscpy_s(buffer, directory);
|
|||
|
|
_tcscat_s(buffer, _T("\\"));
|
|||
|
|
_tcscat_s(buffer, fileInfo.cFileName);
|
|||
|
|
InitFont(buffer);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
//_tprintf(_T("%s\\%s\n"), directory, fileInfo.cFileName);
|
|||
|
|
|
|||
|
|
char output[1024];
|
|||
|
|
sprintf(output, "%ws\\%ws", directory, fileInfo.cFileName);
|
|||
|
|
std::string path = output;
|
|||
|
|
std::replace(path.begin(), path.end(), '\\', '/');
|
|||
|
|
|
|||
|
|
FontPtr FontBuf = new Font();
|
|||
|
|
FontBuf->Preload(path);
|
|||
|
|
FontRecObject[path] = FontBuf;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} while (FindNextFile(hFind, &fileInfo));
|
|||
|
|
|
|||
|
|
FindClose(hFind);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void LoadingScene_Success()
|
|||
|
|
{
|
|||
|
|
KGE_DEBUG_LOG("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
Stage* P_Stage = Director::GetInstance().GetCurrentStage().Get();
|
|||
|
|
SquirrelStage* Push_Stage = (SquirrelStage*)P_Stage;
|
|||
|
|
TObject->RunSceneScript("LoadingGame_Stage_Func", Push_Stage);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void InitGameRecFunc() {
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>List
|
|||
|
|
SquirrelClassEx::LoadingListScript();
|
|||
|
|
//Sleep(4000);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>Դ
|
|||
|
|
InitSound(L"SoundPacks2/music");
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|||
|
|
InitFont(L"Font");
|
|||
|
|
|
|||
|
|
//Ԥ<><D4A4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ɫ<EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>е㿨
|
|||
|
|
for (size_t i = 0; i < 17; i++)
|
|||
|
|
{
|
|||
|
|
SquirrelClassEx::GetTexturePtrByImg("sprite/selectcharacter/background.img", i);
|
|||
|
|
}
|
|||
|
|
IMG* img = npk->ReadNpkTable("sprite/selectcharacter/background.img");
|
|||
|
|
npk->ReleaseNpkTable(img);
|
|||
|
|
|
|||
|
|
Application::GetInstance().PerformInMainThread(LoadingScene_Success);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//#include <irrKlang.h>
|
|||
|
|
//KGE_DECLARE_SMART_PTR(ISound);
|
|||
|
|
void Setup()
|
|||
|
|
{
|
|||
|
|
//<2F>̳߳س<CCB3>ʼ<EFBFBD><CABC>
|
|||
|
|
threadPool.setMaxThreadNum(10);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뷨
|
|||
|
|
WindowPtr window = Application::GetInstance().GetWindow();
|
|||
|
|
window->SetImmEnabled(true);
|
|||
|
|
|
|||
|
|
//Newһ<77><D2BB><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|||
|
|
threadPool.concurrentRun(InitGameRecFunc);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦģʽ
|
|||
|
|
Director::GetInstance().SetRenderBorderEnabled(true);
|
|||
|
|
|
|||
|
|
//irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*SoundPtr SP = new Sound();
|
|||
|
|
SP*/
|
|||
|
|
/*loader.Load(fileData.get(), "ogg", memory.buffer);*/
|
|||
|
|
|
|||
|
|
//Renderer::GetInstance().GetContext().SetTextAntialiasMode(TextAntialiasMode::None);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void GameState::Run()
|
|||
|
|
{
|
|||
|
|
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
|
Settings s;
|
|||
|
|
s.window.title = "Yosin - DOF"; // <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
|
|||
|
|
s.window.width = 1600; // <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>
|
|||
|
|
s.window.height = 900; // <20><><EFBFBD>ڸ߶<DAB8>
|
|||
|
|
// ȡ<><C8A1><EFBFBD><EFBFBD>ֱͬ<D6B1><CDAC>
|
|||
|
|
s.vsync_enabled = false;
|
|||
|
|
// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
s.frame_interval = 1_sec / 10000;
|
|||
|
|
s.debug_mode = true;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ϵͳ
|
|||
|
|
//Logger::GetInstance().Enable();
|
|||
|
|
|
|||
|
|
//Application::GetInstance().Use(ImGuiModule::GetInstance());
|
|||
|
|
Application::GetInstance().Use(AudioModule::GetInstance());
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
|
Application::GetInstance().Run(s, Setup);
|
|||
|
|
|
|||
|
|
}
|