/* Memonix ver 1.6 Copyright (c) 2003-2006 Michael Kurinnoy, Viewizard Games All Rights Reserved. Memonix game source codes available under "dual licensing" model. The licensing options available are: * Commercial Licensing. This is the appropriate option if you are creating proprietary applications and you are not prepared to distribute and share the source code of your application. Contact us for pricing at viewizard@viewizard.com * Open Source Licensing. This is the appropriate option if you want to share the source code of your application with everyone you distribute it to, and you also want to give them the right to share who uses it. You should have received a copy of the GNU General Public License version 3 with this source codes. If not, see . */ #include "memonix_var.h" //------------------------------------------------------------------------------------ // переменные... глобальные //------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ // переменные... локальные //------------------------------------------------------------------------------------ //защелки...для авто + или - Countdown bool plus = false; bool minus = false; // float счетчик для правильного (плавного) счета Countdown float fCountdown1; int CountAddonReposMAF; char AddonReposMAF[100][MAX_PATH]; int CountAddonReposBAF; char AddonReposBAF[100][MAX_PATH]; int CountAddonReposPAF; char AddonReposPAF[100][MAX_PATH]; int CountAddonReposJAF; char AddonReposJAF[100][MAX_PATH]; int CountAddonRepos; void SetCountAddonRepos() { CountAddonRepos = -2; switch (Setup.Type) { case 0: if (CountAddonReposMAF >0 ) { if (Setup.UseUserMosaicAddon) { // нет в репозитории, но он установлен CountAddonRepos = -1; for (int i=0; i0 ) { if (Setup.UseUserBuilderAddon) { // нет в репозитории, но он установлен CountAddonRepos = -1; for (int i=0; i0 ) { if (Setup.UseUserThePairAddon) { // нет в репозитории, но он установлен CountAddonRepos = -1; for (int i=0; i0 ) { if (Setup.UseUserJigSawAddon) { // нет в репозитории, но он установлен CountAddonRepos = -1; for (int i=0; i #include #include #endif // unix #ifdef WIN32 #include // нужно для _findfirst/_findnext #endif // WIN32 void SeekAddons() { #ifdef __unix // ищем аддоны MAF CountAddonReposMAF = 0; // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserMosaicAddon) if (strncmp(ProgrammDir, Setup.UserMosaicAddon, strlen(ProgrammDir))) { strcpy(AddonReposMAF[CountAddonReposMAF], Setup.UserMosaicAddon); CountAddonReposMAF++; } DIR *pdir1; struct dirent *pfile1; // открываем директорию игры if (pdir1 = opendir(ProgrammDir)) { errno=0; /*reset before calling readdir*/ while(pfile1=readdir(pdir1)) { //printf("%s\n",pfile1->d_name); if (strcmp(pfile1->d_name,".") && strcmp(pfile1->d_name,"..")) if (!strcmp(pfile1->d_name+strlen(pfile1->d_name)-3,"maf")) { strcpy(AddonReposMAF[CountAddonReposMAF], ProgrammDir); strcat(AddonReposMAF[CountAddonReposMAF], pfile1->d_name); CountAddonReposMAF++; } } if (errno==0) closedir(pdir1); } // ищем аддоны BAF CountAddonReposBAF = 0; // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserBuilderAddon) if (strncmp(ProgrammDir, Setup.UserBuilderAddon, strlen(ProgrammDir))) { strcpy(AddonReposBAF[CountAddonReposBAF], Setup.UserBuilderAddon); CountAddonReposBAF++; } DIR *pdir2; struct dirent *pfile2; // открываем директорию игры if (pdir2 = opendir(ProgrammDir)) { errno=0; /*reset before calling readdir*/ while(pfile2=readdir(pdir2)) { // printf("%s\n",pfile->d_name); if (strcmp(pfile2->d_name,".") && strcmp(pfile2->d_name,"..")) if (!strcmp(pfile2->d_name+strlen(pfile2->d_name)-3,"baf")) { strcpy(AddonReposBAF[CountAddonReposBAF], ProgrammDir); strcat(AddonReposBAF[CountAddonReposBAF], pfile2->d_name); CountAddonReposBAF++; } } if (errno==0) closedir(pdir2); } // ищем аддоны PAF CountAddonReposPAF = 0; // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserThePairAddon) if (strncmp(ProgrammDir, Setup.UserThePairAddon, strlen(ProgrammDir))) { strcpy(AddonReposPAF[CountAddonReposPAF], Setup.UserThePairAddon); CountAddonReposPAF++; } DIR *pdir3; struct dirent *pfile3; // открываем директорию игры if (pdir3 = opendir(ProgrammDir)) { errno=0; /*reset before calling readdir*/ while(pfile3=readdir(pdir3)) { //printf("%s\n",pfile->d_name); if (strcmp(pfile3->d_name,".") && strcmp(pfile3->d_name,"..")) if (!strcmp(pfile3->d_name+strlen(pfile3->d_name)-3,"paf")) { strcpy(AddonReposPAF[CountAddonReposPAF], ProgrammDir); strcat(AddonReposPAF[CountAddonReposPAF], pfile3->d_name); CountAddonReposPAF++; } } if (errno==0) closedir(pdir3); } // ищем аддоны JAF CountAddonReposJAF = 0; // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserJigSawAddon) if (strncmp(ProgrammDir, Setup.UserJigSawAddon, strlen(ProgrammDir))) { strcpy(AddonReposJAF[CountAddonReposJAF], Setup.UserJigSawAddon); CountAddonReposJAF++; } DIR *pdir4; struct dirent *pfile4; // открываем директорию игры if (pdir4 = opendir(ProgrammDir)) { errno=0; /*reset before calling readdir*/ while(pfile4=readdir(pdir4)) { //printf("%s\n",pfile->d_name); if (strcmp(pfile4->d_name,".") && strcmp(pfile4->d_name,"..")) if (!strcmp(pfile4->d_name+strlen(pfile4->d_name)-3,"jaf")) { strcpy(AddonReposJAF[CountAddonReposJAF], ProgrammDir); strcat(AddonReposJAF[CountAddonReposJAF], pfile4->d_name); CountAddonReposJAF++; } } if (errno==0) closedir(pdir4); } #endif // unix #ifdef WIN32 // ищем аддоны MAF CountAddonReposMAF = 0; for (int i=0; i<100; i++) { ZeroMemory(AddonReposMAF[i], MAX_PATH); } // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserMosaicAddon) if (strncmp(ProgrammDir, Setup.UserMosaicAddon, strlen(ProgrammDir))) { strcpy(AddonReposMAF[CountAddonReposMAF], Setup.UserMosaicAddon); CountAddonReposMAF++; } char pszReadPath[MAX_PATH]; ZeroMemory(pszReadPath, sizeof(pszReadPath)); strcpy(pszReadPath,ProgrammDir); strcat(pszReadPath,"\\*.maf"); struct _finddata_t c_file; intptr_t h_file = _findfirst(pszReadPath, &c_file); if(h_file != -1L ) { do{ if ( !((c_file.attrib & _A_HIDDEN) == _A_HIDDEN) && !((c_file.attrib & _A_SYSTEM) == _A_SYSTEM) && strcmp(c_file.name,".") && strcmp(c_file.name,"..") ) { if (((c_file.attrib & _A_SUBDIR) != _A_SUBDIR)) { strcpy(AddonReposMAF[CountAddonReposMAF], ProgrammDir); strcat(AddonReposMAF[CountAddonReposMAF], c_file.name); CountAddonReposMAF++; } } }while(_findnext(h_file, &c_file) != -1); _findclose( h_file ); } // ищем аддоны BAF CountAddonReposBAF = 0; for (int i=0; i<100; i++) { ZeroMemory(AddonReposBAF[i], MAX_PATH); } // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserBuilderAddon) if (strncmp(ProgrammDir, Setup.UserBuilderAddon, strlen(ProgrammDir))) { strcpy(AddonReposBAF[CountAddonReposBAF], Setup.UserBuilderAddon); CountAddonReposBAF++; } ZeroMemory(pszReadPath, sizeof(pszReadPath)); strcpy(pszReadPath,ProgrammDir); strcat(pszReadPath,"\\*.baf"); h_file = _findfirst(pszReadPath, &c_file); if(h_file != -1L ) { do{ if ( !((c_file.attrib & _A_HIDDEN) == _A_HIDDEN) && !((c_file.attrib & _A_SYSTEM) == _A_SYSTEM) && strcmp(c_file.name,".") && strcmp(c_file.name,"..") ) { if (((c_file.attrib & _A_SUBDIR) != _A_SUBDIR)) { strcpy(AddonReposBAF[CountAddonReposBAF], ProgrammDir); strcat(AddonReposBAF[CountAddonReposBAF], c_file.name); CountAddonReposBAF++; } } }while(_findnext(h_file, &c_file) != -1); _findclose( h_file ); } // ищем аддоны PAF CountAddonReposPAF = 0; for (int i=0; i<100; i++) { ZeroMemory(AddonReposPAF[i], MAX_PATH); } // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserThePairAddon) if (strncmp(ProgrammDir, Setup.UserThePairAddon, strlen(ProgrammDir))) { strcpy(AddonReposPAF[CountAddonReposPAF], Setup.UserThePairAddon); CountAddonReposPAF++; } ZeroMemory(pszReadPath, sizeof(pszReadPath)); strcpy(pszReadPath,ProgrammDir); strcat(pszReadPath,"\\*.paf"); h_file = _findfirst(pszReadPath, &c_file); if(h_file != -1L ) { do{ if ( !((c_file.attrib & _A_HIDDEN) == _A_HIDDEN) && !((c_file.attrib & _A_SYSTEM) == _A_SYSTEM) && strcmp(c_file.name,".") && strcmp(c_file.name,"..") ) { if (((c_file.attrib & _A_SUBDIR) != _A_SUBDIR)) { strcpy(AddonReposPAF[CountAddonReposPAF], ProgrammDir); strcat(AddonReposPAF[CountAddonReposPAF], c_file.name); CountAddonReposPAF++; } } }while(_findnext(h_file, &c_file) != -1); _findclose( h_file ); } // ищем аддоны JAF CountAddonReposJAF = 0; for (int i=0; i<100; i++) { ZeroMemory(AddonReposJAF[i], MAX_PATH); } // проверяем, если аддон есть, но не в репозитории, его ставим первым if (Setup.UseUserJigSawAddon) if (strncmp(ProgrammDir, Setup.UserJigSawAddon, strlen(ProgrammDir))) { strcpy(AddonReposJAF[CountAddonReposJAF], Setup.UserJigSawAddon); CountAddonReposJAF++; } ZeroMemory(pszReadPath, sizeof(pszReadPath)); strcpy(pszReadPath,ProgrammDir); strcat(pszReadPath,"\\*.jaf"); h_file = _findfirst(pszReadPath, &c_file); if(h_file != -1L ) { do{ if ( !((c_file.attrib & _A_HIDDEN) == _A_HIDDEN) && !((c_file.attrib & _A_SYSTEM) == _A_SYSTEM) && strcmp(c_file.name,".") && strcmp(c_file.name,"..") ) { if (((c_file.attrib & _A_SUBDIR) != _A_SUBDIR)) { strcpy(AddonReposJAF[CountAddonReposJAF], ProgrammDir); strcat(AddonReposJAF[CountAddonReposJAF], c_file.name); CountAddonReposJAF++; } } }while(_findnext(h_file, &c_file) != -1); _findclose( h_file ); } #endif // WIN32 SetCountAddonRepos(); } // если нужно - переделываем меню preset void LoadMosaicPreset() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка надписи Loading... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_SetClearColor(0.0f, 0.0f, 0.0f, 0.0f); vw_BeginRendering(); vw_Start2DMode(-1,1); RECT SrcRest; SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); vw_BeginRendering(); vw_Start2DMode(-1,1); SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick; gettick = SDL_GetTicks(); if (Setup.UseUserMosaicAddon) { vw_CloseVFS(); if (0 != vw_OpenVFS(Setup.UserMosaicAddon, "1")) { vw_OpenVFS(VFSFileNamePath, "1"); Setup.UseUserMosaicAddon = false; } } vw_SetTextureProp(RI_TEXTURE_NONE, RI_CLAMP, false); if (vw_FindTextureByName("DATA\\MOSAIC\\1_1.bmp") != 0) { ReleaseGameDate(0); lastgame = -1; } vw_LoadTexture("DATA\\MOSAIC\\1_1.bmp", BMP_FILE); vw_LoadTexture("DATA\\MOSAIC\\1_2.bmp", BMP_FILE); vw_LoadTexture("DATA\\MOSAIC\\1_7.bmp", BMP_FILE); vw_LoadTexture("DATA\\MOSAIC\\1_8.bmp", BMP_FILE); RECT SrcRect; SetRect(&SrcRect, 0, 0, 64, 64); vw_AddToTexture("DATA\\pr_m.bmp", "DATA\\MOSAIC\\1_1.bmp", 0, 0, &SrcRect); vw_AddToTexture("DATA\\pr_m.bmp", "DATA\\MOSAIC\\1_2.bmp", 64, 0, &SrcRect); vw_AddToTexture("DATA\\pr_m.bmp", "DATA\\MOSAIC\\1_8.bmp", 0, 64, &SrcRect); vw_AddToTexture("DATA\\pr_m.bmp", "DATA\\MOSAIC\\1_7.bmp", 64, 64, &SrcRect); vw_ReleaseTexture(vw_FindTextureByName("DATA\\MOSAIC\\1_1.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\MOSAIC\\1_2.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\MOSAIC\\1_7.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\MOSAIC\\1_8.bmp")); if (Setup.UseUserMosaicAddon) { vw_CloseVFS(); vw_OpenVFS(VFSFileNamePath, "1"); } // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick2 = SDL_GetTicks(); if (gettick+500 > gettick2) SDL_Delay(gettick+500-gettick2); } // если нужно - переделываем меню preset void LoadBuilderPreset() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка надписи Loading... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_SetClearColor(0.0f, 0.0f, 0.0f, 0.0f); vw_BeginRendering(); vw_Start2DMode(-1,1); RECT SrcRest; SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); vw_BeginRendering(); vw_Start2DMode(-1,1); SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick; gettick = SDL_GetTicks(); if (Setup.UseUserBuilderAddon) { vw_CloseVFS(); if (0 != vw_OpenVFS(Setup.UserBuilderAddon, "1")) { vw_OpenVFS(VFSFileNamePath, "1"); Setup.UseUserBuilderAddon = false; } } vw_SetTextureProp(RI_TEXTURE_NONE, RI_CLAMP, false); if (vw_FindTextureByName("DATA\\BUILDER\\1_03\\17.bmp") != 0) { ReleaseGameDate(1); lastgame = -1; } vw_LoadTexture("DATA\\BUILDER\\1_03\\17.bmp", BMP_FILE); vw_LoadTexture("DATA\\BUILDER\\1_05_50\\a-06.bmp", BMP_FILE); vw_LoadTexture("DATA\\BUILDER\\12_03\\68.bmp", BMP_FILE); vw_LoadTexture("DATA\\BUILDER\\2_05_50\\a-07.bmp", BMP_FILE); RECT SrcRect; SetRect(&SrcRect, 0, 0, 64, 64); vw_AddToTexture("DATA\\pr_b.bmp", "DATA\\BUILDER\\12_03\\68.bmp", 0, 0, &SrcRect); vw_AddToTexture("DATA\\pr_b.bmp", "DATA\\BUILDER\\2_05_50\\a-07.bmp", 64, 0, &SrcRect); vw_AddToTexture("DATA\\pr_b.bmp", "DATA\\BUILDER\\1_03\\17.bmp", 0, 64, &SrcRect); vw_AddToTexture("DATA\\pr_b.bmp", "DATA\\BUILDER\\1_05_50\\a-06.bmp", 64, 64, &SrcRect); vw_ReleaseTexture(vw_FindTextureByName("DATA\\BUILDER\\1_03\\17.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\BUILDER\\1_05_50\\a-06.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\BUILDER\\12_03\\68.bmp")); vw_ReleaseTexture(vw_FindTextureByName("DATA\\BUILDER\\2_05_50\\a-07.bmp")); if (Setup.UseUserBuilderAddon) { vw_CloseVFS(); vw_OpenVFS(VFSFileNamePath, "1"); } // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick2 = SDL_GetTicks(); if (gettick+500 > gettick2) SDL_Delay(gettick+500-gettick2); } // если нужно - переделываем меню preset void LoadThePairPreset() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка надписи Loading... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_SetClearColor(0.0f, 0.0f, 0.0f, 0.0f); vw_BeginRendering(); vw_Start2DMode(-1,1); RECT SrcRest; SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); vw_BeginRendering(); vw_Start2DMode(-1,1); SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick; gettick = SDL_GetTicks(); if (Setup.UseUserThePairAddon) { vw_CloseVFS(); if (0 != vw_OpenVFS(Setup.UserThePairAddon, "1")) { vw_OpenVFS(VFSFileNamePath, "1"); Setup.UseUserThePairAddon = false; } } vw_SetTextureProp(RI_TEXTURE_NONE, RI_CLAMP, false); if (vw_FindTextureByName("DATA\\PAIR\\toys-067.bmp") != 0) { ReleaseGameDate(2); lastgame = -1; } vw_LoadTexture("DATA\\PAIR\\toys-067.bmp", BMP_FILE); RECT SrcRect; SetRect(&SrcRect, 0, 0, 64, 64); vw_AddToTexture("DATA\\pr_p.bmp", "DATA\\PAIR\\toys-067.bmp", 0, 0, &SrcRect); vw_AddToTexture("DATA\\pr_p.bmp", "DATA\\PAIR\\toys-067.bmp", 64, 64, &SrcRect); vw_ReleaseTexture(vw_FindTextureByName("DATA\\PAIR\\toys-067.bmp")); if (Setup.UseUserThePairAddon) { vw_CloseVFS(); vw_OpenVFS(VFSFileNamePath, "1"); } // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick2 = SDL_GetTicks(); if (gettick+500 > gettick2) SDL_Delay(gettick+500-gettick2); } // если нужно - переделываем меню preset void LoadJigSawPreset() { //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка надписи Loading... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_SetClearColor(0.0f, 0.0f, 0.0f, 0.0f); vw_BeginRendering(); vw_Start2DMode(-1,1); RECT SrcRest; SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); vw_BeginRendering(); vw_Start2DMode(-1,1); SetRect(&SrcRest, 0, 0, 226, 120); vw_Draw(287,236,&SrcRest, vw_FindTextureByName("DATA\\LoadingPanel.bmp"), false); vw_End2DMode(); vw_EndRendering(); // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick; gettick = SDL_GetTicks(); if (Setup.UseUserJigSawAddon) { vw_CloseVFS(); if (0 != vw_OpenVFS(Setup.UserJigSawAddon, "1")) { vw_OpenVFS(VFSFileNamePath, "1"); Setup.UseUserJigSawAddon = false; } } vw_SetTextureProp(RI_TEXTURE_NONE, RI_CLAMP, false); if (vw_FindTextureByName("DATA\\JIGSAW\\pic12.jpg") != 0) { ReleaseGameDate(3); lastgame = -1; } vw_LoadTexture("DATA\\JIGSAW\\pic12.jpg", JPG_FILE, 128, 128); RECT SrcRect; SetRect(&SrcRect, 0, 0, 128, 128); vw_AddToTexture("DATA\\pr_j.bmp", "DATA\\JIGSAW\\pic12.jpg", 0, 0, &SrcRect); vw_ReleaseTexture(vw_FindTextureByName("DATA\\JIGSAW\\pic12.jpg")); if (Setup.UseUserJigSawAddon) { vw_CloseVFS(); vw_OpenVFS(VFSFileNamePath, "1"); } // для задержки, чтобы рисовать не менее 0.5 секунды Uint32 gettick2 = SDL_GetTicks(); if (gettick+500 > gettick2) SDL_Delay(gettick+500-gettick2); } //------------------------------------------------------------------------------------ // Options //------------------------------------------------------------------------------------ void Options() { RECT MDetect; RECT DrawON; RECT DrawOFF; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка подложки меню... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_DrawRect(0,0,0,0,800,600,"DATA\\options.jpg"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // прорисовка превью для каждой игры... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vw_DrawRect(45,56,0,0,128,128,"DATA\\pr_m.bmp"); vw_DrawRect(239,56,0,0,128,128,"DATA\\pr_b.bmp"); vw_DrawRect(433,56,0,0,128,128,"DATA\\pr_p.bmp"); vw_DrawRect(627,56,0,0,128,128,"DATA\\pr_j.bmp"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // кнопка back... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SetRect(&MDetect, 703, 524, 784, 565); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 1, 602, 80, 641); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(704, 525, &MDetect, &DrawON, &DrawOFF, "DATA\\options.jpg")) { if (Setup.SoundSw) Audio_PlaySound(1); ComBuffer = GAME_START; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // кнопка download... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SetRect(&MDetect, 15, 524, 191, 565); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 247, 602, 421, 641); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(16, 525, &MDetect, &DrawON, &DrawOFF, "DATA\\options.jpg")) { if (Setup.SoundSw) Audio_PlaySound(1); SDL_WM_IconifyWindow(); vw_OpenBrouser("http://www.viewizard.com/memonix/addons.php"); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // выводим надпись что делать, чтобы добавить аддон //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DrawManualText(210, 522, "Copy addons files into the game folder:", 0, 0); DrawManualText(210, 544, ProgrammDir, 0, 450); // mosaic SetRect(&MDetect, 45, 56, 172, 183); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 0, 0, 140, 140); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(45-6, 56-6, &MDetect, &DrawON, &DrawOFF, "DATA\\main_game.bmp", true, true)) { if (Setup.SoundSw) Audio_PlaySound(1); if (Setup.Type != 0 && lastgame != -1) { //сбрасываем, чтобы перегрузить текстуры... lastgame=-1; ReleaseGameDate(Setup.Type); } Setup.Type = 0; SetCountAddonRepos(); } if (Setup.Type == 0) vw_DrawRect(45-6,56-6,0,0,140,140,"DATA\\main_game.bmp", true); // builder SetRect(&MDetect, 239, 56, 366, 183); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 0, 0, 140, 140); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(239-6, 56-6, &MDetect, &DrawON, &DrawOFF, "DATA\\main_game.bmp", true, true)) { if (Setup.SoundSw) Audio_PlaySound(1); if (Setup.Type != 1 && lastgame != -1) { //сбрасываем, чтобы перегрузить текстуры... lastgame=-1; ReleaseGameDate(Setup.Type); } Setup.Type = 1; SetCountAddonRepos(); } if (Setup.Type == 1) vw_DrawRect(239-6, 56-6,0,0,140,140,"DATA\\main_game.bmp", true); // the pair SetRect(&MDetect, 433, 56, 560, 183); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 0, 0, 140, 140); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(433-6, 56-6, &MDetect, &DrawON, &DrawOFF, "DATA\\main_game.bmp", true, true)) { if (Setup.SoundSw) Audio_PlaySound(1); if (Setup.Type != 2 && lastgame != -1) { //сбрасываем, чтобы перегрузить текстуры... lastgame=-1; ReleaseGameDate(Setup.Type); } Setup.Type = 2; SetCountAddonRepos(); } if (Setup.Type == 2) vw_DrawRect(433-6, 56-6,0,0,140,140,"DATA\\main_game.bmp", true); // jig-saw SetRect(&MDetect, 627, 56, 754, 183); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); SetRect(&DrawOFF, 0, 0, 0, 0); SetRect(&DrawON, 0, 0, 140, 140); if (vw_OnRect(&MDetect)) GameCursor.Current=1; if (vw_Button2D(627-6, 56-6, &MDetect, &DrawON, &DrawOFF, "DATA\\main_game.bmp", true, true)) { if (Setup.SoundSw) Audio_PlaySound(1); if (Setup.Type != 3 && lastgame != -1) { //сбрасываем, чтобы перегрузить текстуры... lastgame=-1; ReleaseGameDate(Setup.Type); } Setup.Type = 3; SetCountAddonRepos(); } if (Setup.Type == 3) vw_DrawRect(627-6, 56-6,0,0,140,140,"DATA\\main_game.bmp", true); bool AddonsPresent = false; switch (Setup.Type) { case 0: if (CountAddonReposMAF > 0) AddonsPresent = true; if (Setup.UseUserMosaicAddon) AddonsPresent = true; break; case 1: if (CountAddonReposBAF > 0) AddonsPresent = true; if (Setup.UseUserBuilderAddon) AddonsPresent = true; break; case 2: if (CountAddonReposPAF > 0) AddonsPresent = true; if (Setup.UseUserThePairAddon) AddonsPresent = true; break; case 3: if (CountAddonReposJAF > 0) AddonsPresent = true; if (Setup.UseUserJigSawAddon) AddonsPresent = true; break; } // вывод имени аддона if (AddonsPresent) { if (CountAddonRepos != -2) { char* s = NULL; char bn[30]; strcpy(bn," "); switch (Setup.Type) { case 0: s = NULL; s = strrchr(Setup.UserMosaicAddon,'\\'); if (s == NULL) s = strrchr(Setup.UserMosaicAddon,'/'); break; case 1: s = NULL; s = strrchr(Setup.UserBuilderAddon,'\\'); if (s == NULL) s = strrchr(Setup.UserBuilderAddon,'/'); break; case 2: s = NULL; s = strrchr(Setup.UserThePairAddon,'\\'); if (s == NULL) s = strrchr(Setup.UserThePairAddon,'/'); break; case 3: s = NULL; s = strrchr(Setup.UserJigSawAddon,'\\'); if (s == NULL) s = strrchr(Setup.UserJigSawAddon,'/'); break; } strcat(bn, s+1); strcat(bn, " "); DrawManualText(490, 464, bn, 200,200); } else DrawManualText(530, 464, "Not in use",0,0); } else DrawManualText(505, 464, "Not connected",0,0); // аддон, стрелка < SetRect(&MDetect, 450, 461, 481, 490); if (isDialogBoxDrawing() || !AddonsPresent) SetRect(&MDetect, 0, 0, 0, 0); if (!AddonsPresent) SetRect(&DrawON, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; vw_DrawRect(453,462,127,104,153,132,"DATA\\options2.bmp"); if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); switch (Setup.Type) { case 0: if (CountAddonReposMAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = CountAddonReposMAF-1; Setup.UseUserMosaicAddon = true; strcpy(Setup.UserMosaicAddon, AddonReposMAF[CountAddonRepos]); } else if (CountAddonRepos == -1) { CountAddonRepos = -2; Setup.UseUserMosaicAddon = false; } else if (CountAddonRepos == 0) { CountAddonRepos = -2; Setup.UseUserMosaicAddon = false; } else if (CountAddonRepos > 0) { CountAddonRepos --; Setup.UseUserMosaicAddon = true; strcpy(Setup.UserMosaicAddon, AddonReposMAF[CountAddonRepos]); } ComBuffer = 201; } break; case 1: if (CountAddonReposBAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = CountAddonReposBAF-1; Setup.UseUserBuilderAddon = true; strcpy(Setup.UserBuilderAddon, AddonReposBAF[CountAddonRepos]); } else if (CountAddonRepos == -1) { CountAddonRepos = -2; Setup.UseUserBuilderAddon = false; } else if (CountAddonRepos == 0) { CountAddonRepos = -2; Setup.UseUserBuilderAddon = false; } else if (CountAddonRepos > 0) { CountAddonRepos --; Setup.UseUserBuilderAddon = true; strcpy(Setup.UserBuilderAddon, AddonReposBAF[CountAddonRepos]); } ComBuffer = 202; } break; case 2: if (CountAddonReposPAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = CountAddonReposPAF-1; Setup.UseUserThePairAddon = true; strcpy(Setup.UserThePairAddon, AddonReposPAF[CountAddonRepos]); } else if (CountAddonRepos == -1) { CountAddonRepos = -2; Setup.UseUserThePairAddon = false; } else if (CountAddonRepos == 0) { CountAddonRepos = -2; Setup.UseUserThePairAddon = false; } else if (CountAddonRepos > 0) { CountAddonRepos --; Setup.UseUserThePairAddon = true; strcpy(Setup.UserThePairAddon, AddonReposPAF[CountAddonRepos]); } ComBuffer = 203; } break; case 3: if (CountAddonReposJAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = CountAddonReposJAF-1; Setup.UseUserJigSawAddon = true; strcpy(Setup.UserJigSawAddon, AddonReposJAF[CountAddonRepos]); } else if (CountAddonRepos == -1) { CountAddonRepos = -2; Setup.UseUserJigSawAddon = false; } else if (CountAddonRepos == 0) { CountAddonRepos = -2; Setup.UseUserJigSawAddon = false; } else if (CountAddonRepos > 0) { CountAddonRepos --; Setup.UseUserJigSawAddon = true; strcpy(Setup.UserJigSawAddon, AddonReposJAF[CountAddonRepos]); } ComBuffer = 204; } break; } } } // аддон, стрелка > SetRect(&MDetect, 702, 461, 733, 490); if (isDialogBoxDrawing() || !AddonsPresent) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; vw_DrawRect(704,463,155,105,181,130,"DATA\\options2.bmp"); if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); switch (Setup.Type) { case 0: if (CountAddonReposMAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = 0; Setup.UseUserMosaicAddon = true; strcpy(Setup.UserMosaicAddon, AddonReposMAF[CountAddonRepos]); } else if (CountAddonRepos == CountAddonReposMAF-1) { CountAddonRepos = -2; Setup.UseUserMosaicAddon = false; } else if (CountAddonRepos >= -1) { CountAddonRepos ++; Setup.UseUserMosaicAddon = true; strcpy(Setup.UserMosaicAddon, AddonReposMAF[CountAddonRepos]); } ComBuffer = 201; } break; case 1: if (CountAddonReposBAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = 0; Setup.UseUserBuilderAddon = true; strcpy(Setup.UserBuilderAddon, AddonReposBAF[CountAddonRepos]); } else if (CountAddonRepos == CountAddonReposBAF-1) { CountAddonRepos = -2; Setup.UseUserBuilderAddon = false; } else if (CountAddonRepos >= -1) { CountAddonRepos ++; Setup.UseUserBuilderAddon = true; strcpy(Setup.UserBuilderAddon, AddonReposBAF[CountAddonRepos]); } ComBuffer = 202; } break; case 2: if (CountAddonReposPAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = 0; Setup.UseUserThePairAddon = true; strcpy(Setup.UserThePairAddon, AddonReposPAF[CountAddonRepos]); } else if (CountAddonRepos == CountAddonReposPAF-1) { CountAddonRepos = -2; Setup.UseUserThePairAddon = false; } else if (CountAddonRepos >= -1) { CountAddonRepos ++; Setup.UseUserThePairAddon = true; strcpy(Setup.UserThePairAddon, AddonReposPAF[CountAddonRepos]); } ComBuffer = 203; } break; case 3: if (CountAddonReposJAF > 0) { if (CountAddonRepos == -2) { CountAddonRepos = 0; Setup.UseUserJigSawAddon = true; strcpy(Setup.UserJigSawAddon, AddonReposJAF[CountAddonRepos]); } else if (CountAddonRepos == CountAddonReposJAF-1) { CountAddonRepos = -2; Setup.UseUserJigSawAddon = false; } else if (CountAddonRepos >= -1) { CountAddonRepos ++; Setup.UseUserJigSawAddon = true; strcpy(Setup.UserJigSawAddon, AddonReposJAF[CountAddonRepos]); } ComBuffer = 204; } break; } } } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // опция Difficulty... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (Setup.Type == 2 || Setup.Type == 3) { // на тот случай, если где-то ставили большую сложность if (Setup.Difficult == 4) Setup.Difficult = 2; if (Setup.Difficult == 3) Setup.Difficult = 2; } SetRect(&MDetect, 284,61+160, 284+93, 61+160+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if ((Setup.Type == 0) || (Setup.Type == 1)) if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Difficult=0; } vw_DrawRect(284,225,0,0,93,22,"DATA\\options2.bmp"); } SetRect(&MDetect, 380,61+160, 380+72, 61+160+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Difficult=1; if (Setup.Type == 2 || Setup.Type == 3) Setup.Difficult=0; } vw_DrawRect(380,225,95,0,166,22,"DATA\\options2.bmp"); } SetRect(&MDetect, 455,61+160, 455+102, 61+160+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Difficult=2; if (Setup.Type == 2 || Setup.Type == 3) Setup.Difficult=1; } vw_DrawRect(453,225,0,24,108,46,"DATA\\options2.bmp"); } SetRect(&MDetect, 560,61+160, 561+77, 61+160+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Difficult=3; if (Setup.Type == 2 || Setup.Type == 3) Setup.Difficult=2; } vw_DrawRect(563,225,0,48,72,70,"DATA\\options2.bmp"); } SetRect(&MDetect, 640,61+160, 640+93, 61+160+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if ((Setup.Type == 0) || (Setup.Type == 1)) if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Difficult=4; } vw_DrawRect(637,225,74,48,172,70,"DATA\\options2.bmp"); } if (Setup.Type == 2 || Setup.Type == 3) { vw_DrawRect(304,61+2+160,0,0,56,25,"DATA\\setup_off.bmp", true); vw_DrawRect(660,61+2+160,0,0,56,25,"DATA\\setup_off.bmp", true); if (Setup.Difficult==0) vw_DrawRect(380,225,95,0,166,22,"DATA\\options2.bmp"); if (Setup.Difficult==1) vw_DrawRect(453,225,0,24,108,46,"DATA\\options2.bmp"); if (Setup.Difficult==2) vw_DrawRect(563,225,0,48,72,70,"DATA\\options2.bmp"); } else { if (Setup.Difficult==0) vw_DrawRect(284,225,0,0,93,22,"DATA\\options2.bmp"); if (Setup.Difficult==1) vw_DrawRect(380,225,95,0,166,22,"DATA\\options2.bmp"); if (Setup.Difficult==2) vw_DrawRect(453,225,0,24,108,46,"DATA\\options2.bmp"); if (Setup.Difficult==3) vw_DrawRect(563,225,0,48,72,70,"DATA\\options2.bmp"); if (Setup.Difficult==4) vw_DrawRect(637,225,74,48,172,70,"DATA\\options2.bmp"); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // опция Size... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SetRect(&MDetect, 394,61+240, 394+61, 61+240+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Size=2; } vw_DrawRect(393,301,0,72,61,101,"DATA\\options2.bmp"); } SetRect(&MDetect, 487,61+240, 487+61, 61+240+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Size=4; } vw_DrawRect(486,301,63,72,125,101,"DATA\\options2.bmp"); } SetRect(&MDetect, 579,61+240, 579+61, 61+240+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Size=6; } vw_DrawRect(579,301,0,103,61,132,"DATA\\options2.bmp"); } SetRect(&MDetect, 672,61+240, 672+61, 61+240+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Size=8; } vw_DrawRect(672,301,63,103,125,132,"DATA\\options2.bmp"); } if (Setup.Size==2) vw_DrawRect(393,301,0,72,61,101,"DATA\\options2.bmp"); if (Setup.Size==4) vw_DrawRect(486,301,63,72,125,101,"DATA\\options2.bmp"); if (Setup.Size==6) vw_DrawRect(579,301,0,103,61,132,"DATA\\options2.bmp"); if (Setup.Size==8) vw_DrawRect(672,301,63,103,125,132,"DATA\\options2.bmp"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // опция Countdown... //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ char buffer[20]; char buffer2[20]; strcpy(buffer2, " "); itoa10(Setup.Countdown, buffer); strcat(buffer2, buffer); strcat(buffer2, " "); DrawManualText(530, 384, buffer2, 631-531, 0); // Countdown, стрелка < SetRect(&MDetect, 526, 381, 557, 410); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Countdown--; if (Setup.Countdown<1) Setup.Countdown = 99; } vw_DrawRect(530,381,56,134,81,164,"DATA\\options2.bmp"); } // Countdown, стрелка > SetRect(&MDetect, 606, 381, 637, 410); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.Countdown++; if (Setup.Countdown>99) Setup.Countdown = 1; } vw_DrawRect(612,381,83,134,107,164,"DATA\\options2.bmp"); } SetRect(&MDetect, 432,61+320, 432+70, 61+320+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.CountdownSw = true; } vw_DrawRect(439,381,0,134,54,164,"DATA\\options2.bmp"); } SetRect(&MDetect, 663,61+320, 663+70, 61+320+30); if (isDialogBoxDrawing()) SetRect(&MDetect, 0, 0, 0, 0); if (vw_OnRect(&MDetect)) { GameCursor.Current=1; if (vw_GetWindowLBMouse(true)) { if (Setup.SoundSw) Audio_PlaySound(1); Setup.CountdownSw = false; } vw_DrawRect(661,381,109,134,181,164,"DATA\\options2.bmp"); } if (Setup.CountdownSw) vw_DrawRect(439,381,0,134,54,164,"DATA\\options2.bmp"); else vw_DrawRect(661,381,109,134,181,164,"DATA\\options2.bmp"); }