/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #define FORBIDDEN_SYMBOL_EXCEPTION_strcat #define FORBIDDEN_SYMBOL_EXCEPTION_strcpy #define FORBIDDEN_SYMBOL_EXCEPTION_sprintf #include "watchmaker/t2d/t2d.h" #include "watchmaker/globvar.h" #include "watchmaker/message.h" #include "watchmaker/schedule.h" #include "watchmaker/ll/ll_string.h" #include "watchmaker/define.h" #include "watchmaker/t2d/t2d_internal.h" #include "watchmaker/ll/ll_util.h" #include "watchmaker/ll/ll_diary.h" #include "watchmaker/extraLS.h" #include "watchmaker/3d/geometry.h" #include "watchmaker/3d/t3d_body.h" #include "watchmaker/ll/ll_anim.h" #include "watchmaker/ll/ll_mouse.h" #include "watchmaker/windows_hacks.h" #include "watchmaker/classes/do_sound.h" #include "watchmaker/classes/do_string.h" #include "watchmaker/main.h" #include "watchmaker/ll/ll_regen.h" #include "watchmaker/classes/do_player.h" #include "watchmaker/ll/ll_sound.h" #include "watchmaker/ll/ll_system.h" #include "watchmaker/renderer.h" #include "common/system.h" namespace Watchmaker { #define T2D_SCANNER_BUTTON_DELAY FRAME_PER_SECOND/2 #define T2D_SCANNER_SCANNING_STEPS 24 #define T2D_SCANNER_SCANNING_DX 9 #define T2D_SCANNER_SCANNING_DELAY FRAME_PER_SECOND/7 #define T2D_SCANNER_PREVIEWING 1 #define T2D_SCANNER_SCANNING 2 #define T2D_COMPUTER_CONNECTING 3 #define T2D_PDA_TONE_AQUIRING 4 #define T2D_PDA_TONE_PROCESS 5 #define T2D_CURSOR 6 #define T2D_COMPUTER_BUTTON_DELAY FRAME_PER_SECOND/2 #define T2D_DIALUP_BUTTON_DELAY FRAME_PER_SECOND/5 #define T2D_WRITE_DELAY FRAME_PER_SECOND #define T2D_PDA_BUTTON_DELAY FRAME_PER_SECOND/2 #define T2D_KBD_MAX_ENTRIES 10 #define T2D_DOC_SCROLL_ADD 10 #define T2D_COMPUTER_CONNECTING_SPEED 1200 #define T2D_PDA_LOG_DATA_XI 55 #define T2D_PDA_LOG_TEXT_XI 150 #define T2D_PDA_LOG_YI 46 #define T2D_PDA_LOG_DATA_XF 140 #define T2D_PDA_LOG_TEXT_XF 690 #define T2D_PDA_LOG_YF 345 #define T2D_PDA_LOG_LINES 20 #define T2D_PDA_LOG_SB_STARTY 59 #define T2D_PDA_LOG_SB_TOTY 259 #define T2D_PDA_LOG_SB_PIRGY 14 #define T2D_INDENT_COEFF 15 #define REFRESH -12345 #define RESTARTALL 12345 #define T2D_PDA_TONE_XI 2 #define T2D_PDA_TONE_XF 664 #define T2D_PDA_TONE_REDLINE_DX 2 #define T2D_PDA_TONE_BARRA_DX 165 #define T2D_PDA_TONE_SPEED 3 #define T2D_PDA_HELP_TEXT_XI 20 #define T2D_PDA_HELP_TEXT_YI 50 #define T2D_PDA_HELP_TEXT_XF 320 #define T2D_PDA_HELP_TEXT_YF 330 #define T2D_PDA_HELP_WIN_LOWER 330 #define T2D_TEMP_SAVE_FILE_NAME "SaveTemp.tga" #define T2D_OPTIONS_MAX_SAVES 98 #define T2D_OPTIONS_MAX_DESCRIPT 16 #define T2D_CURSOR_SPEED 300 #define PDA_MENU_OPEN 1024 #define STOP_T2D__LAUNCH_LOAD 1 #define STOP_T2D__LAUNCH_NEWGAME 2 #define STOP_T2D__LAUNCH_MAINMENU 3 void delSpaces(Common::String &str) { Common::String result; for (auto it = str.begin(); it != str.end(); ++it) { if (*it != ' ') { result += *it; } } str = Common::move(result); } t2dWINDOW t2dWin[T2D_MAX_WINDOWS]; int16 WinActive[T2D_MAX_WINDOWS]; int32 CurButton, CurButtonWin; int32 CurButtonWin_Override = -1; int32 CurButton_Override = -1; int32 LinkWinToMouse, LinkWinX, LinkWinY; int32 LinkBtToMouse, LinkBmToMouse; int32 ExtraLSId = 0; struct SRect LinkLim; //Gestione scrolling con mouse int32 ScrollWithMouse; int32 ScrollWithMouseX, ScrollWithMouseY; //Gestione Tastiera char t2dKeyTable[T2D_KBD_MAX_ENTRIES]; unsigned int t2dKeyTableH = 0; unsigned int t2dKeyTableT = 0; //Variabili Scanner bool SelectorFlag; //Variabili Computer #define COMPUTER_MAX_NUM_DIALUP 12 char computerNumeroTel[COMPUTER_MAX_NUM_DIALUP]; const char computerNumeroEsatto[] = "231074"; char computerConnectStr[20] = ""; bool AlphaOrCase; uint8 WhatText; #define COMPUTER_SEARCH_MAX_NAME 13 #define COMPUTER_SEARCH_MAX_SURNAME 13 #define COMPUTER_SEARCH_MAX_CASENAME 13 #define COMPUTER_SEARCH_MAX_YEAR 7 Common::String searchName; Common::String searchSurName; Common::String searchCaseName; Common::String searchYear; int32 computerCurrentDocument; int32 computerCurrentEMail; int32 computerDocList[T2D_TEXT_COMPUTER_DOCLIST_LINES_END - T2D_TEXT_COMPUTER_DOCLIST_LINES_START]; //Variabili Diario int32 diarioCurrentPage; //Varabili PDA int32 StartAcquiring; //Funzioni e Variabili PDAHelp void (*HelpFunc)(); //Funzioni e Variabili PDALog extern int32 t3dCurTime; void SetPDALogItem(Init &init, int32 log_item); int32 CurrentLogPos; int32 CurrentLogMenu; struct SPDALog *CurrentPDALogs[20]; PDALogS PDALogSorted[MAX_PDALOGS]; int MenuLinks[10]; bool LogsElaborati = false; int NumPDALogSorted = 0; int NumMenus = 0; int MainTitle = 0; int PDAScrollPos = 0; int PDAScrollLine = 0; int LogTotLines = 0; int LogCurAbsLine = 0; int LogSBPos = 0; double LogSBDy = 0; //Variabili OPTIONS int32 optionsCurrent = -1; int16 optionsCurPos = 0; int16 optionsSlot = 0; int16 optionsWhat = 0; char optionsSaves[9][MAX_PATH]; bool optionsSaveDescriptActive = false; SavesS Saves[100]; int NSaves = 0; //Variabili Cursore bool CursorActive = false; bool CursorVisible = false; char *CursorString; //Variabili GameOver #define GAMEOVER_WINDOW_NUM_MSECONDS 2000 uint32 GameOverWindow_StartTime; uint8 LoadWindow_WhichBkg = 0; // 0->null 1->MainBkg 2->GameOverBkg int16 PiroloGrab = 0; uint8 Settati_PDA_items_durante_t2d = 0; const char *ComputerCIAFileNames[T2D_BM_COMPUTER_DOCUMENT_LAST - T2D_BM_COMPUTER_DOCUMENT_FIRST + 1] = { "t2d\\Computer_Document_AntonioCorona.tga", "t2d\\Computer_Document_JacobKrenn.tga", "t2d\\Computer_Document_PeterDukes.tga", "t2d\\Computer_Document_VictorValencia.tga", "t2d\\Computer_Document_Mercury_1969_1.tga", "t2d\\Computer_Document_Mercury_1969_2.tga", "t2d\\Computer_Document_Mercury_1969_3.tga", "t2d\\Computer_Document_Mercury_1969_4.tga", "t2d\\Computer_Document_Confidence_1942_1.tga", "t2d\\Computer_Document_Confidence_1942_2.tga", "t2d\\Computer_Document_Confidence_1942_3.tga", "t2d\\Computer_Document_Arl_1998_1.tga", "t2d\\Computer_Document_Conv_Confidence.tga", "t2d\\Computer_Document_Conv_Mercury.tga", "t2d\\Computer_Document_GregorMem.tga", "t2d\\noi_benna.tga", "t2d\\noi_andrea.tga", "t2d\\noi_bellonds.tga", "t2d\\noi_daniele.tga", "t2d\\noi_edo.tga", "t2d\\noi_fede.tga", "t2d\\noi_fiabe.tga", "t2d\\noi_fox.tga", "t2d\\noi_giusti.tga", "t2d\\noi_krizia.tga", "t2d\\noi_nonji.tga", "t2d\\noi_sparteco.tga", "t2d\\noi_tag.tga", "t2d\\noi_tiz.tga", "t2d\\noi_walter.tga", "t2d\\noi_vicky.tga", "t2d\\noi_pietro.tga" }; void RefreshUpdate(Init &init) { int i, j, NearMenu; //Aggiornamento degli update for (i = 0; i < MAX_PDALOGS; i++) if (init.PDALog[i].flags & PDA_MENU) init.PDALog[i].flags &= ~PDA_UPDATE; for (i = 0; i < MAX_PDALOGS; i++) { if (init.PDALog[i].text[0] == 0) continue; if ((!(init.PDALog[i].flags & PDA_MENU)) && (init.PDALog[i].flags & PDA_UPDATE)) { NearMenu = i; while (init.PDALog[NearMenu].menu_appartenenza != 0) { for (j = 0; j < MAX_PDALOGS; j++) { if (init.PDALog[j].text[0] == 0) continue; if (init.PDALog[j].menu_creato == init.PDALog[NearMenu].menu_appartenenza) { NearMenu = j; init.PDALog[NearMenu].flags |= PDA_UPDATE | PDA_ON; break; } } } } } } void ScrollLog(Init &init, int Add) { int Sign, i; if (Add == 0) return; Sign = abs(Add) / Add; for (i = 0; i < abs(Add); i++) { switch (Sign) { case +1: if (PDAScrollLine + 1 <= init.PDALog[PDALogSorted[PDAScrollPos].PDALogInd].lines) { PDAScrollLine++; } else { PDAScrollLine = 0; PDAScrollPos++; } break; case -1: if (PDAScrollLine - 1 >= 0) { PDAScrollLine--; } else { if (PDAScrollPos != 0) { PDAScrollPos--; PDAScrollLine = init.PDALog[PDALogSorted[PDAScrollPos].PDALogInd].lines; } } break; } } } void WriteLog(Init &init, int i, int *CurDate, int *CurLine, int *RealLine, int _PDAScrollLine, int IndentX) { t2dWINDOW *w = &t2dWin[T2D_WIN_PDA_LOG]; int j; //Data if ((!(init.PDALog[i].flags & PDA_MENU)) && ((i != CurrentLogPos) || (_PDAScrollLine == 0))) { strcpy(w->text[T2D_TEXT_PDA_LOG_DATA_START + (*CurDate)].text, init.PDALog[i].info.c_str()); w->bm[T2D_BM_PDA_LOG_DATA_START + (*CurDate)].py = T2D_PDA_LOG_YI + (*RealLine) * 15; w->bm[T2D_BM_PDA_LOG_DATA_START + (*CurDate)].tnum &= ~T2D_BM_OFF; } else w->bm[T2D_BM_PDA_LOG_DATA_START + (*CurDate)].tnum |= T2D_BM_OFF; (*CurDate)++; //Testo for (j = 0; j <= init.PDALog[i].lines; j++) { if ((i == CurrentLogPos) && (j < _PDAScrollLine)) continue; if (j == init.PDALog[i].lines) { (*RealLine)++; break; } strcpy(w->text[T2D_TEXT_PDA_LOG_TEXT_START + (*CurLine)].text, init.PDALog[i].formatted[j].c_str()); w->bm[T2D_BM_PDA_LOG_TEXT_START + (*CurLine)].px = T2D_PDA_LOG_TEXT_XI + IndentX; w->bm[T2D_BM_PDA_LOG_TEXT_START + (*CurLine)].py = T2D_PDA_LOG_YI + (*RealLine) * 15; w->bm[T2D_BM_PDA_LOG_TEXT_START + (*CurLine)].tnum &= ~T2D_BM_OFF; //Controlla se la scritta rimanda a un menu, se si la scrive in Verde if (init.PDALog[i].flags & PDA_MENU) { if (init.PDALog[i].flags & PDA_UPDATE) w->text[T2D_TEXT_PDA_LOG_TEXT_START + (*CurLine)].color = RED_FONT; else w->text[T2D_TEXT_PDA_LOG_TEXT_START + (*CurLine)].color = GREEN_FONT; } else { if (init.PDALog[i].flags & PDA_UPDATE) w->text[T2D_TEXT_PDA_LOG_TEXT_START + (*CurLine)].color = BLUE_FONT; else w->text[T2D_TEXT_PDA_LOG_TEXT_START + (*CurLine)].color = GRAY_FONT; } (*CurLine)++; (*RealLine)++; if ((*RealLine) >= T2D_PDA_LOG_LINES) return; } } #define PDA_ERROR 0 #define PDA_PRESTOP 1 #define PDA_LAST_LINE 2 int RefreshLogMenu(Init &init, int *Log, int *NumLog, int _PDAScrollLine) { int i; int CurDate = 0, CurLine = 0, RealLine = 0; t2dWINDOW *w = &t2dWin[T2D_WIN_PDA_LOG]; while (1) { if (*Log >= NumPDALogSorted) break; CurrentPDALogs[(*NumLog)++] = &init.PDALog[PDALogSorted[*Log].PDALogInd]; WriteLog(init, PDALogSorted[*Log].PDALogInd, &CurDate, &CurLine, &RealLine, _PDAScrollLine, PDALogSorted[*Log].IndentX); if (!(init.PDALog[PDALogSorted[*Log].PDALogInd].flags & PDA_MENU)) init.PDALog[PDALogSorted[*Log].PDALogInd].flags &= ~PDA_UPDATE; if (RealLine >= T2D_PDA_LOG_LINES) break; (*Log)++; } CurrentPDALogs[*NumLog] = nullptr; for (; CurDate < T2D_BM_PDA_LOG_DATA_END - T2D_BM_PDA_LOG_DATA_START; CurDate++) w->bm[T2D_BM_PDA_LOG_DATA_START + CurDate].tnum |= T2D_BM_OFF; for (; CurLine < T2D_BM_PDA_LOG_TEXT_END - T2D_BM_PDA_LOG_TEXT_START; CurLine++) w->bm[T2D_BM_PDA_LOG_TEXT_START + CurLine].tnum |= T2D_BM_OFF; for (i = *NumLog; i < 20; i++) CurrentPDALogs[i] = nullptr; if (RealLine >= T2D_PDA_LOG_LINES) return PDA_LAST_LINE; else return PDA_PRESTOP; } void CloseAllLogMenus(Init &init) { int i; for (i = 0; i < MAX_PDALOGS; i++) { if (init.PDALog[i].text[0] == 0) continue; if (init.PDALog[i].flags & PDA_MENU) { init.PDALog[i].flags &= ~PDA_MENU_OPEN; } } } int GetNextPDALog(Init &init, int CurrentLog, int Menu) { int i; int NearMenu = -1, NearTime = -1; for (i = 1; i < MAX_PDALOGS; i++) { if (i == CurrentLog) continue; if ((init.PDALog[i].flags & PDA_ON) == FALSE) continue; if (init.PDALog[i].text[0] == 0) continue; //if ((PDALog[i].menu_appartenenza!=0) && (!IsMenuOpen(PDALog[i].menu_appartenenza))) continue; if (init.PDALog[i].menu_appartenenza != Menu) continue; if (CurrentLog == -1) { if (init.PDALog[i].flags & PDA_MENU) { if (i <= CurrentLog) continue; if ((NearMenu == -1) || (i < NearMenu)) NearMenu = i; } else { if ((NearTime == -1) || (init.PDALog[i].time < init.PDALog[NearTime].time)) NearTime = i; } } else if (init.PDALog[CurrentLog].flags & PDA_MENU) { if (init.PDALog[i].flags & PDA_MENU) { if (i <= CurrentLog) continue; if ((NearMenu == -1) || (i < NearMenu)) NearMenu = i; } else { if ((NearTime == -1) || (init.PDALog[i].time < NearTime)) NearTime = i; } } else { if ((init.PDALog[i].flags & PDA_MENU) == FALSE) { if (init.PDALog[i].time < init.PDALog[CurrentLog].time) continue; if ((init.PDALog[i].time == init.PDALog[CurrentLog].time) && (i <= CurrentLog)) continue; if ((init.PDALog[i].time < init.PDALog[NearTime].time) || (NearTime == -1)) { NearTime = i; } else if (init.PDALog[i].time == init.PDALog[NearTime].time) { if (i >= NearTime) continue; NearTime = i; } } } } if (NearMenu != -1) { if (NearMenu != CurrentLog) return NearMenu; return -1; } else { if (NearTime != CurrentLog) return NearTime; return -1; } } bool UpdateLogList(Init &init, int Menu, int IndentX, int *NLog) { int i = -1; if ((i = GetNextPDALog(init, i, Menu)) == -1) { return TRUE; } while (1) { PDALogSorted[(*NLog)].PDALogInd = i; PDALogSorted[(*NLog)++].IndentX = IndentX; if ((init.PDALog[i].flags & PDA_MENU) && (init.PDALog[i].flags & PDA_MENU_OPEN)) { UpdateLogList(init, init.PDALog[i].menu_creato, IndentX + 20, NLog); } if ((i = GetNextPDALog(init, i, Menu)) == -1) { return TRUE; } } return TRUE; } bool ComputerSearch(WGame &game) { int i; struct SRect t; int OldDoc = computerCurrentDocument; computerCurrentDocument = -1; Init &init = game.init; Renderer &renderer = *game._renderer; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, 0, FALSE, nullptr, nullptr, nullptr); //Elimina spazi finali delSpaces(searchName); delSpaces(searchSurName); delSpaces(searchCaseName); delSpaces(searchYear); if (AlphaOrCase) { //Ricerca tramite nome if (searchName.equalsIgnoreCase("ANTONIO") && searchSurName.equalsIgnoreCase("CORONA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_ANTONIOCORONA; SetPDALogItem(init, lPDA3_MENU11_CORONA_ITEM1); SetPDALogItem(init, lPDA3_MENU11_CORONA_ITEM2); SetPDALogItem(init, lPDA3_MENU11_CORONA_ITEM3); } else if (searchName.equalsIgnoreCase("GREGOR") && searchSurName.equalsIgnoreCase("MOORE")) { //Abilita finestra DOCLIST _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, 0, TRUE, nullptr, nullptr, nullptr); computerCurrentDocument = OldDoc; strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START].text, "Gregor Memorandum"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 1].text, "Conv. Log: Confidence"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 2].text, "Conv. Log: Mercury"); for (i = T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 3; i < T2D_TEXT_COMPUTER_DOCLIST_LINES_END; i++) strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[i].text, ""); computerDocList[0] = T2D_BM_COMPUTER_DOCUMENT_GREGOR_MEM; computerDocList[1] = T2D_BM_COMPUTER_DOCUMENT_CONV_CONFIDENCE; computerDocList[2] = T2D_BM_COMPUTER_DOCUMENT_CONV_MERCURY; computerDocList[3] = -1; return TRUE; } else if (searchName.equalsIgnoreCase("JACOB") && searchSurName.equalsIgnoreCase("KRENN")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_JACOBKRENN; SetPDALogItem(init, lPDA3_MENU13_KRENN_ITEM1); SetPDALogItem(init, lPDA3_MENU13_KRENN_ITEM2); } else if (searchName.equalsIgnoreCase("PETER") && searchSurName.equalsIgnoreCase("DUKES")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_PETERDUKES; SetPDALogItem(init, lPDA3_MENU12_DUKES_ITEM1); SetPDALogItem(init, lPDA3_MENU12_DUKES_ITEM2); } else if (searchName.equalsIgnoreCase("VICTOR") && searchSurName.equalsIgnoreCase("VALENCIA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_VICTORVALENCIA; SetPDALogItem(init, lPDA3_MENU14_VALENCIA_ITEM1); SetPDALogItem(init, lPDA3_MENU14_VALENCIA_ITEM2); } else if (searchName.equalsIgnoreCase("PIER TOMMASO") && searchSurName.equalsIgnoreCase("BENNATI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_BENNA; } else if (searchName.equalsIgnoreCase("ANDREA") && searchSurName.equalsIgnoreCase("CORDELLA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_ANDREA; } else if (searchName.equalsIgnoreCase("ALESSANDRO") && searchSurName.equalsIgnoreCase("BELLONDI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_BELLONDS; } else if (searchName.equalsIgnoreCase("DANIELE") && searchSurName.equalsIgnoreCase("ANTONA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_DANIELE; } else if (searchName.equalsIgnoreCase("EDOARDO") && searchSurName.equalsIgnoreCase("GERVINO")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_EDO; } else if (searchName.equalsIgnoreCase("FEDERICO") && searchSurName.equalsIgnoreCase("FASCE")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_FEDE; } else if (searchName.equalsIgnoreCase("FABIO") && searchSurName.equalsIgnoreCase("CORICA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_FIABE; } else if (searchName.equalsIgnoreCase("MARCO") && searchSurName.equalsIgnoreCase("CASTRUCCI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_FOX; } else if (searchName.equalsIgnoreCase("ALESSANDRO") && searchSurName.equalsIgnoreCase("GIUSTI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_GIUSTI; } else if (searchName.equalsIgnoreCase("CHRISTIAN") && searchSurName.equalsIgnoreCase("CANTAMESSA")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_KRIZIA; } else if (searchName.equalsIgnoreCase("STEFANO") && searchSurName.equalsIgnoreCase("MARIANI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_NONJI; } else if (searchName.equalsIgnoreCase("STEFANO") && searchSurName.equalsIgnoreCase("PROSPERI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_SPARTECO; } else if (searchName.equalsIgnoreCase("FABRIZIO") && searchSurName.equalsIgnoreCase("LAGORIO")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_TAG; } else if (searchName.equalsIgnoreCase("TIZIANO") && searchSurName.equalsIgnoreCase("SARDONE")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_TIZ; } else if (searchName.equalsIgnoreCase("WALTER") && searchSurName.equalsIgnoreCase("BERGAMINO")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_WALTER; } else if (searchName.equalsIgnoreCase("VICTORIA") && searchSurName.equalsIgnoreCase("HEWARD")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_VICKY; } else if (searchName.equalsIgnoreCase("PIETRO") && searchSurName.equalsIgnoreCase("MONTELATICI")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_PIETRO; } } else { //Ricerca tramite caso if (searchCaseName.equalsIgnoreCase("MERCURY") && searchYear.equalsIgnoreCase("1969")) { //Abilita finestra DOCLIST _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, 0, TRUE, nullptr, nullptr, nullptr); computerCurrentDocument = OldDoc; strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START].text, "Mercury 1969-1"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 1].text, "Mercury 1969-2"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 2].text, "Mercury 1969-3"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 3].text, "Mercury 1969-4"); for (i = T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 4; i < T2D_TEXT_COMPUTER_DOCLIST_LINES_END; i++) strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[i].text, ""); computerDocList[0] = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1; computerDocList[1] = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2; computerDocList[2] = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3; computerDocList[3] = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4; computerDocList[4] = -1; return TRUE; } else if (searchCaseName.equalsIgnoreCase("MERCURY") && searchYear.equalsIgnoreCase("1969-1")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1; } else if (searchCaseName.equalsIgnoreCase("MERCURY") && searchYear.equalsIgnoreCase("1969-2")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2; } else if (searchCaseName.equalsIgnoreCase("MERCURY") && searchYear.equalsIgnoreCase("1969-3")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3; } else if (searchCaseName.equalsIgnoreCase("MERCURY") && searchYear.equalsIgnoreCase("1969-4")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4; } else if (searchCaseName.equalsIgnoreCase("CONFIDENCE") && searchYear.equalsIgnoreCase("1942")) { //Abilita finestra DOCLIST _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, 0, TRUE, nullptr, nullptr, nullptr); computerCurrentDocument = OldDoc; strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START].text, "Confidence 1942-1"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 1].text, "Mercury 1942-2"); strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 2].text, "Mercury 1942-3"); for (i = T2D_TEXT_COMPUTER_DOCLIST_LINES_START + 3; i < T2D_TEXT_COMPUTER_DOCLIST_LINES_END; i++) strcpy(t2dWin[T2D_WIN_COMPUTER_DOCLIST].text[i].text, ""); computerDocList[0] = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1; computerDocList[1] = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2; computerDocList[2] = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3; computerDocList[3] = -1; return TRUE; } else if (searchCaseName.equalsIgnoreCase("CONFIDENCE") && searchYear.equalsIgnoreCase("1942-1")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1; } else if (searchCaseName.equalsIgnoreCase("CONFIDENCE") && searchYear.equalsIgnoreCase("1942-2")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2; } else if (searchCaseName.equalsIgnoreCase("CONFIDENCE") && searchYear.equalsIgnoreCase("1942-3")) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3; } else if (searchCaseName.equalsIgnoreCase("ARL") && (searchYear.equalsIgnoreCase("1998") || searchYear.equalsIgnoreCase("1998-1"))) { computerCurrentDocument = T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1; SetPDALogItem(init, lPDA4_MENU17_ITEM1); } } if (computerCurrentDocument >= 0) { if (computerCurrentDocument == OldDoc) return TRUE; //Disattiva Bitmap del documento precedente if (OldDoc >= 0) t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[OldDoc].tnum |= T2D_BM_OFF; //Attiva nuovo documento t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum &= ~T2D_BM_OFF; if (!t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum) t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum = LoadDDBitmap(game, ComputerCIAFileNames[computerCurrentDocument - T2D_BM_COMPUTER_DOCUMENT_FIRST], 0); if (computerCurrentDocument == T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1) game.init.Obj[o25FORNOAP].flags |= EXTRA2; //Setta paramentri del nuovo documento GetDDBitmapExtends(renderer, &t, &t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument]); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].px = game._renderer->rInvFitX(26); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].py = game._renderer->rInvFitY(66); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].ox = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].oy = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dx = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = 0; if (t.y2 - t.y1 > 407) { t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = game._renderer->rInvFitY(407); } else { t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = game._renderer->rInvFitY(t.y2 - t.y1); } //Attiva la finestra Document _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, 0, TRUE, nullptr, nullptr, nullptr); return TRUE; } else if (computerCurrentDocument != -2) { //Search Error t2dWin[T2D_WIN_COMPUTER_ERROR].bm[T2D_BM_COMPUTER_SEARCHERROR_WIN].tnum &= ~T2D_BM_OFF; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_OK].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_SearchError_Win_TGA].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].sy = 3; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_ERROR, 0, TRUE, nullptr, nullptr, nullptr); return FALSE; } return FALSE; } int CalcLogTotLines(Init &init) { int i; LogTotLines = 0; LogCurAbsLine = 0; for (i = 0; i < NumPDALogSorted; i++) { if (i == PDAScrollPos) LogCurAbsLine = LogTotLines + PDAScrollLine; LogTotLines += init.PDALog[PDALogSorted[i].PDALogInd].lines + 1; } return LogTotLines; } void AggiornaLogSB(Init &init, int Flags) { t2dWINDOW *w = &t2dWin[T2D_WIN_PDA_LOG]; CalcLogTotLines(init); if (PiroloGrab != 0) return; switch (Flags) { case RESTARTALL: LogSBPos = 0; LogSBDy = 0; if (LogTotLines <= T2D_PDA_LOG_LINES) { w->bm[T2D_BM_PDA_LOG_SB].tnum |= T2D_BM_OFF; w->bt[T2D_BT_PDA_LOG_SB].on = FALSE; return; } break; case REFRESH: if ((PDAScrollPos == 0) && (PDAScrollLine == 0) && (LogTotLines <= T2D_PDA_LOG_LINES)) { w->bm[T2D_BM_PDA_LOG_SB].tnum |= T2D_BM_OFF; w->bt[T2D_BT_PDA_LOG_SB].on = FALSE; return; } break; } LogSBDy = (double)(T2D_PDA_LOG_SB_TOTY) / (double)(LogTotLines - T2D_PDA_LOG_LINES); LogSBPos = T2D_PDA_LOG_SB_STARTY + (int)(LogCurAbsLine * LogSBDy); w->bm[T2D_BM_PDA_LOG_SB].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_LOG_SB].py = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].on = TRUE; w->bt[T2D_BT_PDA_LOG_SB].lim.y1 = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].lim.y2 = LogSBPos + T2D_PDA_LOG_SB_PIRGY; } void FormattaLogs(WGame &game) { Renderer &renderer = *game._renderer; Init &init = game.init; int i, j, t, CurInit, Dx; for (i = 0; i < NumPDALogSorted; i++) { j = 0; for (t = 0; t < MAX_PDA_INFO; t++) { if (init.PDALog[PDALogSorted[i].PDALogInd].text[t] == 0) break; game._fonts.getTextDim(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]], FontKind::Standard, &init.PDALog[PDALogSorted[i].PDALogInd].dx, &init.PDALog[PDALogSorted[i].PDALogInd].dy); Dx = init.PDALog[PDALogSorted[i].PDALogInd].dx; CurInit = 0; while (Dx + PDALogSorted[i].IndentX > renderer.rFitX(T2D_PDA_LOG_TEXT_XF - T2D_PDA_LOG_TEXT_XI)) { for (Dx = (signed)strlen((char *)(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]])) - 1; Dx >= 0; Dx--) { if ((Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]][CurInit + Dx] == ' ') && (TextLen(game._fonts, (char *)(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]] + CurInit), (int16)Dx) + PDALogSorted[i].IndentX < renderer.rFitX(T2D_PDA_LOG_TEXT_XF - T2D_PDA_LOG_TEXT_XI))) { Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]][CurInit + Dx] = 0; strcpy(init.PDALog[PDALogSorted[i].PDALogInd].formatted[j].c_str(), (char *)(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]] + CurInit)); Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]][CurInit + Dx] = ' '; j++; CurInit += Dx + 1; break; } } game._fonts.getTextDim((char *)(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]] + CurInit), FontKind::Standard, &Dx, &init.PDALog[PDALogSorted[i].PDALogInd].dy); } strcpy(init.PDALog[PDALogSorted[i].PDALogInd].formatted[j].c_str(), (char *)(Sentence[init.PDALog[PDALogSorted[i].PDALogInd].text[t]] + CurInit)); j++; } init.PDALog[PDALogSorted[i].PDALogInd].lines = j; init.PDALog[PDALogSorted[i].PDALogInd].dy = 15 * init.PDALog[PDALogSorted[i].PDALogInd].lines; if (((init.PDALog[PDALogSorted[i].PDALogInd].flags & PDA_MENU) == FALSE) && (init.PDALog[PDALogSorted[i].PDALogInd].time >= 0)) { snprintf(init.PDALog[PDALogSorted[i].PDALogInd].info.c_str(), 6, "%04d", init.PDALog[PDALogSorted[i].PDALogInd].time); init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[5] = 0; init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[4] = init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[3]; init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[3] = init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[2]; init.PDALog[PDALogSorted[i].PDALogInd].info.c_str()[2] = ':'; } } } void RefreshLog(WGame &game, int Add) { int NumLogInWin = 0; int NumLog = 0; int Ris; Init &init = game.init; if (Add == RESTARTALL) { CurrentLogPos = 0; while ((!(init.PDALog[CurrentLogPos].flags & ON)) && (CurrentLogPos < MAX_PDALOGS)) CurrentLogPos++; NumMenus = 0; CurrentLogMenu = 0; PDAScrollLine = 0; NumPDALogSorted = 0; MainTitle = 0; PDAScrollPos = 0; CloseAllLogMenus(init); return; } else if (Add == REFRESH) { RefreshUpdate(init); NumPDALogSorted = 0; UpdateLogList(init, 0, 0, &NumPDALogSorted); CurrentLogPos = PDALogSorted[PDAScrollPos].PDALogInd; } else { ScrollLog(init, Add); CurrentLogPos = PDALogSorted[PDAScrollPos].PDALogInd; } CalcLogTotLines(init); if ((LogCurAbsLine != 0) && (LogTotLines - LogCurAbsLine < T2D_PDA_LOG_LINES)) { RefreshLog(game, -(T2D_PDA_LOG_LINES - (LogTotLines - LogCurAbsLine))); return; } NumLog = PDAScrollPos; FormattaLogs(game); //RefreshLogMenu(0, 0, &NumLog, &NumLogInWin, &CurDate, &CurLine, &RealLine, PDAScrollLine); Ris = RefreshLogMenu(init, &NumLog, &NumLogInWin, PDAScrollLine); AggiornaLogSB(init, REFRESH); switch (Ris) { case PDA_PRESTOP: if (Add == REFRESH) return; if (Add < 0) return; RefreshLog(game, -1); break; case PDA_LAST_LINE: break; } } /* -----------------16/01/99 10.24------------------- * PaintT2D * --------------------------------------------------*/ void PaintT2D(Renderer &renderer) { t2dWINDOW *w; int32 a, i, j; if (!bT2DActive) return; // Ridisegna tutte le bitmaps da visualizzare for (a = 0; a < T2D_MAX_WINDOWS; a++) { if (!WinActive[a]) continue; w = &t2dWin[WinActive[a]]; for (i = 0; i < T2D_MAX_BITMAPS_IN_WIN; i++) { if (!w->bm[i].tnum) continue; if (w->bm[i].tnum & T2D_BM_OFF) continue; if (w->bm[i].tnum & T2D_BM2TEXT_MASK) { j = ((w->bm[i].tnum & T2D_BM2TEXT_MASK) >> T2D_BM2TEXT_SHIFT); renderer._2dStuff.displayDDText(w->text[j].text, w->text[j].font, w->text[j].color, w->bm[i].px + w->px, w->bm[i].py + w->py, w->bm[i].ox, w->bm[i].oy, w->bm[i].dx, w->bm[i].dy); } else renderer._2dStuff.displayDDBitmap(w->bm[i].tnum, w->bm[i].px + w->px, w->bm[i].py + w->py, w->bm[i].ox, w->bm[i].oy, w->bm[i].dx, w->bm[i].dy); } } CheckExtraLocalizationStrings(renderer, ExtraLSId); } //Restituisce il puntatore alla finestra corrente (cioe quella piu vicina) int T2DActualWindow(t2dWINDOW **w) { int i; for (i = T2D_MAX_WINDOWS - 1; i >= 0; i--) if (WinActive[i]) { if (w != NULL) *w = &t2dWin[WinActive[i]]; return WinActive[i]; } return -1; } bool CheckRect2(struct SRect p, int32 cmx, int32 cmy) { return ((cmx >= p.x1) && (cmx < p.x2) && (cmy >= p.y1) && (cmy < p.y2)); } //Gestione Stringhe void AddKeyToString(char Key, char *String, int MaxChars) { int Pos; if (((Key >= '0') & (Key <= '9')) | ((Key >= 'A') & (Key <= 'Z')) | ((Key >= 'a') & (Key <= 'z')) | (Key == '-') | (Key == VK_SPACE)) { if (strcmp(String, "") != 0) Pos = strlen(String); else Pos = 0; if (Pos < MaxChars) { if (CursorVisible) { Pos = Pos - 1; CursorVisible = false; } String[Pos] = Key; String[Pos + 1] = 0; } } else if (Key == VK_BACK) { Pos = strlen(String) - 1; if (CursorVisible) { Pos = Pos - 1; CursorVisible = false; } if (Pos >= 0) String[Pos] = 0; else String[0] = 0; } } //Gestione Tastiera void T2DResetKeyboard() { t2dKeyTableT = 0; t2dKeyTableH = 0; } void T2DAddKeyInput(char key) { if (!bT2DActive) return; t2dKeyTable[t2dKeyTableT] = key; if ((t2dKeyTableT + 1) % T2D_KBD_MAX_ENTRIES == t2dKeyTableH) return; //La testa � stata raggiunta (situazione quasi impossibile) t2dKeyTableT = (t2dKeyTableT + 1) % T2D_KBD_MAX_ENTRIES; } //Gestione delle barre nel menu delle opzioni //Se percent!=-1 il pirolo viene posizionato in base alla percentuale //Il valore restituito � la percentuale int GestioneBarra(struct SDDBitmap *Barra, struct SDDBitmap *Pirolo, int MouseX, int Percent) { #define BARRA_START_X 20 #define BARRA_END_X 175 #define BARRA_CENTRO_Y 13 #define PIROLO_CENTRO_X 3 #define PIROLO_CENTRO_Y 10 int PiroloX; if (Percent == -1) PiroloX = MouseX - Barra->px; else PiroloX = (int)(BARRA_START_X + (float)((BARRA_END_X - BARRA_START_X) / 100.0) * Percent); //PiroloX=(int)(BARRA_START_X+(float)((BARRA_END_X-BARRA_START_X)/100.0)*Percent); if (PiroloX < BARRA_START_X) PiroloX = BARRA_START_X; if (PiroloX > BARRA_END_X) PiroloX = BARRA_END_X; Pirolo->px = Barra->px + PiroloX - PIROLO_CENTRO_X; Pirolo->py = Barra->py + BARRA_CENTRO_Y - PIROLO_CENTRO_Y; if (Percent == -1) return (int)(((float)(PiroloX - BARRA_START_X) * 100.0) / (float)(BARRA_END_X - BARRA_START_X)); else return Percent; } void ActivateCursor(bool Active, char *String) { int Pos; if (Active) { CursorString = String; } else { if (CursorVisible) { Pos = strlen(CursorString) - 1; if (Pos >= 0) CursorString[Pos] = 0; else CursorString[0] = 0; } } CursorVisible = false; CursorActive = Active; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_DEFAULT, 0, 0, T2D_CURSOR, nullptr, nullptr, nullptr); } void doT2DKeyboard(WGame &game) { char Key; int ActualWindow; t2dWINDOW *w; int Pos; int Len; // char Name[MAX_PATH]; Init &init = game.init; if (!bT2DActive) return; while (t2dKeyTableH != t2dKeyTableT) { Key = t2dKeyTable[t2dKeyTableH]; t2dKeyTableH = (t2dKeyTableH + 1) % T2D_KBD_MAX_ENTRIES; switch (bT2DActive) { case tCOMPUTER: ActualWindow = T2DActualWindow(&w); switch (ActualWindow) { case T2D_WIN_COMPUTER_BACKGROUND: break; case T2D_WIN_COMPUTER_DIALUP: if (Key == VK_BACK) { //Suono StartSound(game, wCIAPULSANTE); Len = strlen(computerNumeroTel) - 1; if (Len >= 0) computerNumeroTel[Len] = 0; strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerNumeroTel); } if (Key == VK_DELETE) { //Suono StartSound(game, wCIAPULSANTE); strcpy(computerNumeroTel, ""); strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerNumeroTel); } if ((Key >= '0') & (Key <= '9')) { //Suono StartSound(game, wCIAPULSANTE); Pos = strlen(computerNumeroTel); if (Pos < COMPUTER_MAX_NUM_DIALUP - 1) { computerNumeroTel[Pos] = Key; computerNumeroTel[Pos + 1] = 0; strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerNumeroTel); } } if (Key == VK_RETURN) { //Suono StartSound(game, wCIAPULSANTE); //Riabilita DInput //ResetDIKbd(); //bIngnoreDIKeyboard = FALSE; if (LoaderFlags & T3D_DEBUGMODE) { if (strcmp(computerNumeroTel, "123") == 0) { strcpy(computerNumeroTel, computerNumeroEsatto); init.InvObj[i28WALKMANOK].flags |= EXTRA2; } } /* #ifdef _DEBUG InvObj[i28WALKMANOK].flags|=EXTRA2; #endif*/ if (init.InvObj[i28WALKMANOK].flags & EXTRA2) { //solo se ho sentito il numero if (strcmp(computerNumeroTel, computerNumeroEsatto) == 0) { if (!(init.Obj[o17COMPUTER].flags & EXTRA2)) { IncCurTime(game, 20); init.Obj[o17COMPUTER].flags |= EXTRA2; } //Fa partire sequenza di connessione StartSound(game, wMODEMFULL); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_DEFAULT, 0, 0, T2D_COMPUTER_CONNECTING, nullptr, nullptr, nullptr); /*//Disattiva finestra Dialup Event( EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, FALSE, NULL, NULL, NULL ); t2dWin[T2D_WIN_COMPUTER_BACKGROUND].bt[T2D_BT_COMPUTER_BACKGROUND_EMAIL].on=TRUE; t2dWin[T2D_WIN_COMPUTER_BACKGROUND].bt[T2D_BT_COMPUTER_BACKGROUND_SEARCH].on=TRUE;*/ } else { //Disattiva finestra DialUp _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, FALSE, nullptr, nullptr, nullptr); //Dial Error t2dWin[T2D_WIN_COMPUTER_ERROR].bm[T2D_BM_COMPUTER_DIALERROR_WIN].tnum &= ~T2D_BM_OFF; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_DIALUP].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_DIALQUIT].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_DialError_Win_TGA].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].sy = 2; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_ERROR, 0, TRUE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAERRORE); } } else { //Disattiva finestra DialUp _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, FALSE, nullptr, nullptr, nullptr); //Com Error t2dWin[T2D_WIN_COMPUTER_ERROR].bm[T2D_BM_COMPUTER_COMERROR_WIN].tnum &= ~T2D_BM_OFF; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_COMQUIT].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_ComError_Win_TGA].on = TRUE; t2dWin[T2D_WIN_COMPUTER_ERROR].sy = 1; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_ERROR, 0, TRUE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAERRORE); } } break; case T2D_WIN_COMPUTER_SEARCH: { Common::String *String = nullptr; int Max = 0; switch (WhatText) { case 0: break; case 1: String = &searchName; Max = COMPUTER_SEARCH_MAX_NAME; break; case 2: String = &searchSurName; Max = COMPUTER_SEARCH_MAX_SURNAME; break; case 3: String = &searchCaseName; Max = COMPUTER_SEARCH_MAX_CASENAME; break; case 4: String = &searchYear; Max = COMPUTER_SEARCH_MAX_YEAR; break; } if (Key == VK_TAB) { w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; ActivateCursor(FALSE, NULL); switch (WhatText) { case T2D_TEXT_COMPUTER_SEARCH_NAME: WhatText = T2D_TEXT_COMPUTER_SEARCH_SURNAME; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum &= ~T2D_BM_OFF; strcpy(w->text[WhatText].text, ""); searchSurName = ""; break; case T2D_TEXT_COMPUTER_SEARCH_SURNAME: WhatText = T2D_TEXT_COMPUTER_SEARCH_NAME; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; strcpy(w->text[WhatText].text, ""); searchName = ""; break; case T2D_TEXT_COMPUTER_SEARCH_CASENAME: WhatText = T2D_TEXT_COMPUTER_SEARCH_YEAR; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum &= ~T2D_BM_OFF; strcpy(w->text[WhatText].text, ""); searchYear = ""; break; case T2D_TEXT_COMPUTER_SEARCH_YEAR: WhatText = T2D_TEXT_COMPUTER_SEARCH_CASENAME; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; strcpy(w->text[WhatText].text, ""); searchCaseName = ""; break; } ActivateCursor(TRUE, w->text[WhatText].text); } if (Key == VK_RETURN) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_SEARCH, T2D_BM_COMPUTER_SEARCH_SEARCH_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); ComputerSearch(game); } if (WhatText == 0) break; /*if (Key==VK_BACK) { Pos=strlen(String)-1; if (Pos>=0) String[Pos]=0; strcpy( w->text[WhatText].text, String ); } if (((Key>='0') & (Key<='9')) | ((Key>='A') & (Key<='Z')) | ((Key>='a') & (Key<='z')) | (Key=='-') | (Key==VK_SPACE)) { Pos=strlen(String); if (Postext[WhatText].text, String ); } }*/ if (((Key >= '0') & (Key <= '9')) | ((Key >= 'A') & (Key <= 'Z')) | ((Key >= 'a') & (Key <= 'z')) | (Key == '-') | (Key == VK_SPACE) | (Key == VK_BACK)) { AddKeyToString(Key, w->text[WhatText].text, Max); warning("HACK: AddKeyToString really should work with Common::String, not a hacked iterator"); AddKeyToString(Key, String->begin(), Max); } break; } } break; /*case tOPTIONS: if (optionsSaveDescriptActive) { w = &t2dWin[T2D_WIN_OPTIONS_MAIN]; if (((Key>='0') & (Key<='9')) | ((Key>='A') & (Key<='Z')) | ((Key>='a') & (Key<='z')) | (Key=='-') | (Key==VK_SPACE) | (Key==VK_BACK)) { AddKeyToString(Key, w->text[T2D_TEXT_OPTIONS_SAVE_START+optionsWhat].text, T2D_OPTIONS_MAX_DESCRIPT); } else if (Key==VK_RETURN) { if (strlen(w->text[T2D_TEXT_OPTIONS_SAVE_START+optionsWhat].text)==0) break; if (CursorVisible) { Pos=strlen(w->text[T2D_TEXT_OPTIONS_SAVE_START+optionsWhat].text)-1; w->text[T2D_TEXT_OPTIONS_SAVE_START+optionsWhat].text[Pos]=0; } DataSave(w->text[T2D_TEXT_OPTIONS_SAVE_START+optionsWhat].text, optionsSlot); sprintf(Name, "%sWmSav%02d.tga", WmGameDir, optionsSlot); CopyFile(T2D_TEMP_SAVE_FILE_NAME, Name, FALSE); RefreshSaveImg(optionsCurPos, 0); optionsSaveDescriptActive=false; ActivateCursor(FALSE, NULL); //Esce dalle Opzioni Event( EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, 0, 0, tOPTIONS, NULL, NULL, NULL ); } } break;*/ } } } void doT2DMouseMainMenu(WGame &game, t2dWINDOW *w) { w->bm[T2D_BM_MAINMENU_PLAY_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_LOAD_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_PLAY_OFF].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_LOAD_OFF].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_EXIT_OFF].tnum &= ~T2D_BM_OFF; if (CurButtonWin == T2D_WIN_MAINMENU_MAIN) { if (CurButton == T2D_BT_MAINMENU_PLAY) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[T2D_BM_MAINMENU_PLAY_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_PLAY_OFF].tnum |= T2D_BM_OFF; } else { //Inizia il gioco _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, STOP_T2D__LAUNCH_NEWGAME, 0, tMAINMENU, nullptr, nullptr, nullptr); } } else if (CurButton == T2D_BT_MAINMENU_LOAD) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[T2D_BM_MAINMENU_LOAD_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_LOAD_OFF].tnum |= T2D_BM_OFF; } else { //Va alla schermata di caricamento LoadWindow_WhichBkg = 1; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, STOP_T2D__LAUNCH_LOAD, 0, tMAINMENU, nullptr, nullptr, nullptr); } } else if (CurButton == T2D_BT_MAINMENU_EXIT) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[T2D_BM_MAINMENU_EXIT_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_EXIT_OFF].tnum |= T2D_BM_OFF; } else { //Esce a windows CloseSys(game); } } } } /* -----------------16/01/99 11.16------------------- * doT2DMouse * --------------------------------------------------*/ void doT2DMouse(WGame &game) { struct SRect t; struct SDDBitmap *d, *d1, *d2; t2dWINDOW *w = nullptr; t2dBUTTON *b = nullptr; int32 a = 0, i = 0; char Name[MAX_PATH]; //Variabili per gestione scrolling int32 StartY = 0, DimY = 0; char Text[1000]; int16 mouse_x, mouse_y; Init &init = game.init; Renderer &renderer = *game._renderer; mouse_x = renderer.rInvFitX(TheMessage->wparam1); mouse_y = renderer.rInvFitY(TheMessage->wparam2); if (!bT2DActive) return; if (!bLPressed && !bRPressed) { LinkWinToMouse = 0; LinkBtToMouse = 0; LinkBmToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = FALSE; PiroloGrab = 0; } //if (( LinkWinToMouse ) && (!ScrollWithMouse) && (LinkWinToMouse==T2DActualWindow(NULL))) if ((LinkWinToMouse) && (!ScrollWithMouse)) { w = &t2dWin[LinkWinToMouse]; if (LinkBmToMouse && LinkBtToMouse) { b = &w->bt[LinkBtToMouse]; d = &w->bm[LinkBmToMouse]; d->px += (mouse_x - LinkWinX); d->py += (mouse_y - LinkWinY); if (d->px < LinkLim.x1) d->px = LinkLim.x1; if (d->py < LinkLim.y1) d->py = LinkLim.y1; GetDDBitmapExtends(renderer, &b->lim, &w->bm[LinkBmToMouse]); if (b->lim.x2 >= LinkLim.x2) d->px = LinkLim.x2 - (b->lim.x2 - b->lim.x1); if (b->lim.y2 >= LinkLim.y2) d->py = LinkLim.y2 - (b->lim.y2 - b->lim.y1); GetDDBitmapExtends(renderer, &b->lim, &w->bm[LinkBmToMouse]); } else { w->px += (mouse_x - LinkWinX); w->py += (mouse_y - LinkWinY); } LinkWinX = mouse_x; LinkWinY = mouse_y; } //Gestione dello scrolling dei documenti tramite mouse if (ScrollWithMouse) { if (T2DActualWindow(nullptr) == T2D_WIN_COMPUTER_DOCUMENT) { w = &t2dWin[T2D_WIN_COMPUTER_DOCUMENT]; a = computerCurrentDocument; StartY = renderer.rInvFitY(66); DimY = 407; } else if (T2DActualWindow(nullptr) == T2D_WIN_COMPUTER_EMAIL_VIEWER) { w = &t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER]; a = computerCurrentEMail; StartY = renderer.rInvFitY(59); DimY = 182; } else if (T2DActualWindow(nullptr) == T2D_WIN_PDA_LOG) { w = &t2dWin[T2D_WIN_PDA_LOG]; if (PiroloGrab != 0) { int NewScrollPos; LogSBPos = (mouse_y - w->py) - PiroloGrab; if (LogSBPos < T2D_PDA_LOG_SB_STARTY) LogSBPos = T2D_PDA_LOG_SB_STARTY; if (LogSBPos > T2D_PDA_LOG_SB_STARTY + T2D_PDA_LOG_SB_TOTY) LogSBPos = T2D_PDA_LOG_SB_STARTY + T2D_PDA_LOG_SB_TOTY; NewScrollPos = (int)((double)(LogSBPos - T2D_PDA_LOG_SB_STARTY) / (double)LogSBDy); while (NewScrollPos != LogCurAbsLine) { if (NewScrollPos < LogCurAbsLine) RefreshLog(game, -1); if (NewScrollPos > LogCurAbsLine) RefreshLog(game, +1); } w->bm[T2D_BM_PDA_LOG_SB].py = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].lim.y1 = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].lim.y2 = LogSBPos + T2D_PDA_LOG_SB_PIRGY; } /*else if (-(mouse_y-ScrollWithMouseY)/15!=0) { RefreshLog(-(mouse_y-ScrollWithMouseY)/15); ScrollWithMouseX = mouse_x; ScrollWithMouseY = mouse_y; }*/ } if ((T2DActualWindow(nullptr) == T2D_WIN_COMPUTER_DOCUMENT) || (T2DActualWindow(nullptr) == T2D_WIN_COMPUTER_EMAIL_VIEWER)) { GetDDBitmapExtends(renderer, &t, &w->bm[a]); if (t.y2 - t.y1 > DimY) { if (w->bm[a].oy - renderer.rInvFitY(mouse_y - ScrollWithMouseY) < 0) { w->bm[a].oy = 0; w->bm[a].py = StartY; } else if (w->bm[a].oy + renderer.rInvFitY(DimY) - renderer.rInvFitY(mouse_y - ScrollWithMouseY) >= renderer.rInvFitY(t.y2 - t.y1) - 1) { w->bm[a].oy = renderer.rInvFitY(t.y2 - t.y1) - w->bm[a].dy; while (w->bm[a].oy + w->bm[a].dy >= renderer.rInvFitY(t.y2 - t.y1)) w->bm[a].oy--; w->bm[a].py = StartY - w->bm[a].oy; } else { w->bm[a].oy -= (mouse_y - ScrollWithMouseY); w->bm[a].py += (mouse_y - ScrollWithMouseY); } } ScrollWithMouseX = mouse_x; ScrollWithMouseY = mouse_y; } } switch (TheMessage->event) { case ME_MRIGHT: case ME_MLEFT: case ME_MOUSEUPDATE: // Prima controllo se rimango sulla stessa finestra for (a = 0; a < T2D_MAX_WINDOWS; a++) { w = &t2dWin[WinActive[a]]; if (CurButtonWin && (WinActive[a] == CurButtonWin) && (b = &w->bt[CurButton]) && (b->on)) { memcpy(&t, &b->lim, sizeof(t)); t.x1 += w->px; t.y1 += w->py; t.x2 += w->px; t.y2 += w->py; if (CheckRect2(t, mouse_x, mouse_y)) break; } if ((LinkWinToMouse) && (bLPressed || bRPressed)) break; } // Se non rimango sulla stessa finestra if ((a >= T2D_MAX_WINDOWS) || (!bLPressed && !bRPressed)) { CurButton = 0; CurButtonWin = 0; ExtraLSId = 0; for (a = T2D_MAX_WINDOWS - 1; a >= 0; a--) { if (!WinActive[a] || CurButtonWin) continue; w = &t2dWin[WinActive[a]]; for (i = T2D_MAX_BUTTONS_IN_WIN - 1; i >= 0; i--) { b = &w->bt[i]; if (!b->on || CurButtonWin) continue; memcpy(&t, &b->lim, sizeof(t)); if (w->NOTSTRETCHED == TRUE) { t.x2 = t.x1 + renderer.rInvFitX(t.x2 - t.x1); t.y2 = t.y1 + renderer.rInvFitY(t.y2 - t.y1); } t.x1 += w->px; t.y1 += w->py; t.x2 += w->px; t.y2 += w->py; if (CheckRect2(t, mouse_x, mouse_y)) { CurButton = i; CurButtonWin = WinActive[a]; if (b->tnum > 0) ExtraLSId = b->tnum; break; } } } } //Gestione posizione Z finestre if ((TheMessage->event != ME_MOUSEUPDATE) && (bT2DActive != tPDA)) { for (a = T2D_MAX_WINDOWS - 1; a >= 0; a--) { if (WinActive[a] == 0) continue; if (CurButtonWin != WinActive[a]) { for (i = 1; i < a; i++) if (WinActive[i] == CurButtonWin) break; if (i == a) break; for (; i < a; i++) { int32 temp = WinActive[i]; WinActive[i] = WinActive[i + 1]; WinActive[i + 1] = temp; } ResetScreenBuffer(); return; } break; } } CurMousePointer = MousePointerDefault; //if( !CurButtonWin || ( ( TheMessage->event == ME_MOUSEUPDATE ) && ( !bLPressed && !bRPressed ) ) ) return; //if( !CurButtonWin ) return; if ((CurButtonWin_Override >= 0) || (CurButton_Override >= 0)) { CurButtonWin = CurButtonWin_Override; CurButton = CurButton_Override; CurButtonWin_Override = -1; CurButton_Override = -1; TheMessage->event &= ~ME_MOUSEUPDATE; } switch (bT2DActive) { case tSCANNER: { if (CurButtonWin == T2D_WIN_SCANNER_BACKGROUND) { if ((CurButton == T2D_BT_SCANNER_BACKGROUND_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, 0, 0, tSCANNER, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_SCANNER_BACKGROUND_SELECTOR) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkBtToMouse = T2D_BT_SCANNER_BACKGROUND_SELECTOR; LinkBmToMouse = T2D_BM_SCANNER_BACKGROUND_SELECTOR; LinkWinX = mouse_x; LinkWinY = mouse_y; CurMousePointer = 0; GetDDBitmapExtends(renderer, &LinkLim, &w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW]); } } else if (CurButtonWin == T2D_WIN_SCANNER_TOOLBAR) { if ((CurButton == T2D_BT_SCANNER_TOOLBAR_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_SCANNER_TOOLBAR_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, 0, 0, tSCANNER, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF) && (TheMessage->event != ME_MOUSEUPDATE)) { // Spegne per un attimo bottone di preview w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON].tnum &= ~T2D_BM_OFF; // Aspetta 1 secondo _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_SCANNER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); // Riaccede tasto preview _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON, FALSE, nullptr, nullptr, nullptr); // Spegne pic di preview t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].tnum |= T2D_BM_OFF; // Spegne selzionatoredi area t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].tnum |= T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_BACKGROUND].bt[T2D_BT_SCANNER_BACKGROUND_SELECTOR].on = FALSE; // Spegne bottone per scan w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE].tnum &= ~T2D_BM_OFF; // Accende finestra progress WinActive[2] = T2D_WIN_SCANNER_PROGRESSBAR; // Attiva gestione progress bar _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_WAITA, T2D_SCANNER_SCANNING_DELAY, T2D_SCANNER_SCANNING_STEPS, T2D_SCANNER_PREVIEWING, nullptr, nullptr, nullptr); // Spegne tutta la toolbar w->bt[T2D_BT_SCANNER_TOOLBAR_MOVE].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_EXIT].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_SCAN_OFF].on = FALSE; //Suono StartSound(game, wSCANPULSANTE); } else if ((CurButton == T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF) && (TheMessage->event != ME_MOUSEUPDATE)) { // Spegne per un attimo bottone di select area b->on = FALSE; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON].tnum &= ~T2D_BM_OFF; // Aspetta 1 secondo _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_SCANNER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); // Riaccede tasto di select area _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBUTTON, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON, FALSE, nullptr, nullptr, nullptr); // Accende selezionatore di area t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].tnum &= ~T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_BACKGROUND].bt[T2D_BT_SCANNER_BACKGROUND_SELECTOR].on = TRUE; // Accende tasto di scansione w = &t2dWin[T2D_WIN_SCANNER_TOOLBAR]; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_SCANNER_TOOLBAR_SCAN_OFF].on = TRUE; //Suono StartSound(game, wSCANPULSANTE); } else if ((CurButton == T2D_BT_SCANNER_TOOLBAR_SCAN_OFF) && (TheMessage->event != ME_MOUSEUPDATE)) { w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_SCANNER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_SCANNER_TOOLBAR, T2D_BM_SCANNER_TOOLBAR_SCAN_ON, FALSE, nullptr, nullptr, nullptr); w = &t2dWin[T2D_WIN_SCANNER_BACKGROUND]; d = &w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR]; d1 = &w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW]; d2 = &w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI]; d2->ox = ((d->px - d1->px) * renderer.getBitmapRealDimX(d2->tnum & ~T2D_BM_OFF)) / renderer.getBitmapRealDimX(d1->tnum & ~T2D_BM_OFF); d2->oy = ((d->py - d1->py) * renderer.getBitmapRealDimY(d2->tnum & ~T2D_BM_OFF)) / renderer.getBitmapRealDimY(d1->tnum & ~T2D_BM_OFF); d2->dx = renderer.getBitmapRealDimX(d1->tnum & ~T2D_BM_OFF); d2->px = d1->px - d2->ox; d2->py = d1->py - d2->oy; d1->tnum |= T2D_BM_OFF; WinActive[2] = T2D_WIN_SCANNER_PROGRESSBAR; // Disattiva il select area t2dWin[T2D_WIN_SCANNER_TOOLBAR].bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].tnum |= T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_FREEZE].tnum &= ~T2D_BM_OFF; // Disattiva il selettore t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].tnum |= T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_BACKGROUND].bt[T2D_BT_SCANNER_BACKGROUND_SELECTOR].on = FALSE; // Attiva gestione progress bar _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_DEFAULT, T2D_SCANNER_SCANNING_DELAY, T2D_SCANNER_SCANNING_STEPS, T2D_SCANNER_SCANNING, nullptr, nullptr, nullptr); // Spegne tutta la toolbar w = &t2dWin[T2D_WIN_SCANNER_TOOLBAR]; w->bt[T2D_BT_SCANNER_TOOLBAR_MOVE].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_EXIT].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF].on = FALSE; w->bt[T2D_BT_SCANNER_TOOLBAR_SCAN_OFF].on = FALSE; //Controllo posizione selettore per quest GetDDBitmapExtends(renderer, &t, &t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR]); t.x1 -= 108; t.x2 -= 108; t.y1 -= 118; t.y2 -= 118; if ((t.x1 < 180) && (t.y1 < 70) && (t.x2 > 280) && (t.y2 > 200)) SelectorFlag = TRUE; else SelectorFlag = false; //Suono StartSound(game, wSCANPULSANTE); } } break; } case tCOMPUTER: { if (CurButtonWin == T2D_WIN_COMPUTER_BACKGROUND) { if ((CurButton == T2D_BT_COMPUTER_BACKGROUND_EMAIL) && (TheMessage->event != ME_MOUSEUPDATE)) { if (!(w->bm[T2D_BM_COMPUTER_EMAIL_ON].tnum & T2D_BM_OFF)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_EMAIL_ON].tnum |= T2D_BM_OFF; //Suono StartSound(game, wCIAPULSANTE); //Apre finestra EMail _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_EMAIL, 0, FALSE, nullptr, nullptr, nullptr); //Resetta dati computerCurrentEMail = -1; } else { //Pressione Tasto w->bm[T2D_BM_COMPUTER_EMAIL_ON].tnum &= ~T2D_BM_OFF; //Suono StartSound(game, wCIAPULSANTE); //Chiude finestra EMail _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_EMAIL, 0, TRUE, nullptr, nullptr, nullptr); } } else if ((CurButton == T2D_BT_COMPUTER_BACKGROUND_SEARCH) && (TheMessage->event != ME_MOUSEUPDATE)) { if (!(w->bm[T2D_BM_COMPUTER_SEARCH_ON].tnum & T2D_BM_OFF)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_SEARCH_ON].tnum |= T2D_BM_OFF; //Suono StartSound(game, wCIAPULSANTE); //Apre finestra Search _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_SEARCH, 0, FALSE, nullptr, nullptr, nullptr); //Riattiva DirectInput //ResetDIKbd(); //bIngnoreDIKeyboard = FALSE; //Resetta Dati computerCurrentDocument = -1; AlphaOrCase = 0; WhatText = 0; searchName.clear(); searchSurName.clear(); searchCaseName.clear(); searchYear.clear(); w->text[T2D_TEXT_COMPUTER_SEARCH_NAME].text[0] = 0; w->text[T2D_TEXT_COMPUTER_SEARCH_SURNAME].text[0] = 0; w->text[T2D_TEXT_COMPUTER_SEARCH_CASENAME].text[0] = 0; w->text[T2D_TEXT_COMPUTER_SEARCH_YEAR].text[0] = 0; } else { //Pressione Tasto w->bm[T2D_BM_COMPUTER_SEARCH_ON].tnum &= ~T2D_BM_OFF; //Suono StartSound(game, wCIAPULSANTE); //Chiude finestra Search _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_SEARCH, 0, TRUE, nullptr, nullptr, nullptr); } } else if ((CurButton == T2D_BT_COMPUTER_BACKGROUND_QUIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_QUIT_ON].tnum &= ~T2D_BM_OFF; //Suono StartSound(game, wCIAPULSANTE); //Quitta _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_QUIT_ON, FALSE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tCOMPUTER, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_COMPUTER_ERROR) { if ((CurButton == T2D_BT_COMPUTER_ERROR_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_ERROR_DIALUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_ERROR_DIALUP_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Disattiva finestra errore _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_ERROR, 0, FALSE, nullptr, nullptr, nullptr); //Attiva finestra DialUp _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, TRUE, nullptr, nullptr, nullptr); //Disattiva DirectInput //bIngnoreDIKeyboard = TRUE; //Azzera Numero Telefonico strcpy(computerNumeroTel, ""); strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, ""); //Disattiva bitmap e pulsanti finestra errore _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_DIALERROR_WIN, FALSE, nullptr, nullptr, nullptr); t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_DIALUP].on = FALSE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_DIALQUIT].on = FALSE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_DialError_Win_TGA].on = FALSE; t2dWin[T2D_WIN_COMPUTER_ERROR].sy = 0; } else if ((CurButton == T2D_BT_COMPUTER_ERROR_DIALQUIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_ERROR_DIALQUIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Spenge il computer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tCOMPUTER, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_ERROR_COMQUIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_ERROR_COMQUIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Spenge il computer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tCOMPUTER, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_ERROR_OK) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_ERROR_OK_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_ERROR_OK_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Distattiva finestra errore _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_ERROR, 0, FALSE, nullptr, nullptr, nullptr); //Distattiva bitmap e tasti finestra errore _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_ERROR, T2D_BM_COMPUTER_SEARCHERROR_WIN, FALSE, nullptr, nullptr, nullptr); t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_COMPUTER_ERROR_OK].on = FALSE; t2dWin[T2D_WIN_COMPUTER_ERROR].bt[T2D_BT_SearchError_Win_TGA].on = FALSE; t2dWin[T2D_WIN_COMPUTER_ERROR].sy = 3; } } else if (CurButtonWin == T2D_WIN_COMPUTER_DIALUP) { if ((CurButton == T2D_BT_COMPUTER_DIALUP_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_1) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('1'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_1_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_1_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_2) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('2'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_2_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_2_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_3) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('3'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_3_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_3_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_4) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('4'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_4_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_4_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_5) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('5'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_5_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_5_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_6) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('6'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_6_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_6_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_7) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('7'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_7_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_7_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_8) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('8'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_8_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_8_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_9) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('9'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_9_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_9_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_0) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput('0'); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_0_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_0_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_ENTER) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput(VK_DELETE); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_ENTER_ON, FALSE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_C) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput(VK_BACK); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_C_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_C_ON, FALSE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_OK) && (TheMessage->event != ME_MOUSEUPDATE)) { T2DAddKeyInput(VK_RETURN); //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, T2D_BM_COMPUTER_DIALUP_OK_ON, FALSE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_DIALUP_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tCOMPUTER, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_COMPUTER_SEARCH) { if ((CurButton == T2D_BT_COMPUTER_SEARCH_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_SEARCH) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_SEARCH, T2D_BM_COMPUTER_SEARCH_SEARCH_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); ComputerSearch(game); } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_ALPHABETICAL) && (TheMessage->event != ME_MOUSEUPDATE)) { //Suono StartSound(game, wCIAPULSANTE); //Setta parametri della finestra Search per visualizzare la parte Alphabetical w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_NAME].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_COMPUTER_SEARCH_NAME_TEXT].on = TRUE; w->bt[T2D_BT_COMPUTER_SEARCH_SURNAME_TEXT].on = TRUE; w->bt[T2D_BT_COMPUTER_SEARCH_CASENAME_TEXT].on = FALSE; w->bt[T2D_BT_COMPUTER_SEARCH_YEAR_TEXT].on = FALSE; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; w->bt[T2D_BT_Search_Alphabetical_TGA__name].on = TRUE; w->bt[T2D_BT_Search_Alphabetical_TGA__surname].on = TRUE; w->bt[T2D_BT_Search_Alphabetical_TGA__casename].on = FALSE; w->bt[T2D_BT_Search_Alphabetical_TGA__year].on = FALSE; WhatText = 0; AlphaOrCase = 1; ActivateCursor(FALSE, NULL); } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_CASENAME) && (TheMessage->event != ME_MOUSEUPDATE)) { //Suono StartSound(game, wCIAPULSANTE); //Setta parametri della finestra Search per visualizzare la parte Casename w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_NAME].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME].tnum |= T2D_BM_OFF; w->bt[T2D_BT_COMPUTER_SEARCH_NAME_TEXT].on = FALSE; w->bt[T2D_BT_COMPUTER_SEARCH_SURNAME_TEXT].on = FALSE; w->bt[T2D_BT_COMPUTER_SEARCH_CASENAME_TEXT].on = TRUE; w->bt[T2D_BT_COMPUTER_SEARCH_YEAR_TEXT].on = TRUE; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; w->bt[T2D_BT_Search_Alphabetical_TGA__name].on = FALSE; w->bt[T2D_BT_Search_Alphabetical_TGA__surname].on = FALSE; w->bt[T2D_BT_Search_Alphabetical_TGA__casename].on = TRUE; w->bt[T2D_BT_Search_Alphabetical_TGA__year].on = TRUE; WhatText = 0; AlphaOrCase = 0; ActivateCursor(FALSE, NULL); } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_NAME_TEXT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pone il cursore sulla casella testo Name ActivateCursor(FALSE, NULL); WhatText = T2D_TEXT_COMPUTER_SEARCH_NAME; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; ActivateCursor(TRUE, w->text[WhatText].text); //bIngnoreDIKeyboard = TRUE; strcpy(w->text[WhatText].text, ""); searchName = ""; } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_SURNAME_TEXT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pone il cursore sulla casella testo Surname ActivateCursor(FALSE, NULL); WhatText = T2D_TEXT_COMPUTER_SEARCH_SURNAME; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; ActivateCursor(TRUE, w->text[WhatText].text); ////bIngnoreDIKeyboard = TRUE; strcpy(w->text[WhatText].text, ""); searchSurName = ""; } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_CASENAME_TEXT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pone il cursore sulla casella testo Casename ActivateCursor(FALSE, NULL); WhatText = T2D_TEXT_COMPUTER_SEARCH_CASENAME; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; ActivateCursor(TRUE, w->text[WhatText].text); //bIngnoreDIKeyboard = TRUE; strcpy(w->text[WhatText].text, ""); searchCaseName = ""; } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_YEAR_TEXT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pone il cursore sulla casella testo Year ActivateCursor(FALSE, NULL); WhatText = T2D_TEXT_COMPUTER_SEARCH_YEAR; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum &= ~T2D_BM_OFF; ActivateCursor(TRUE, w->text[WhatText].text); //bIngnoreDIKeyboard = TRUE; strcpy(w->text[WhatText].text, ""); searchYear = ""; } else if ((CurButton == T2D_BT_COMPUTER_SEARCH_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_SEARCH, T2D_BM_COMPUTER_SEARCH_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Elimina finestra search _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_SEARCH, 0, FALSE, nullptr, nullptr, nullptr); //Disattiva tasto search _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SEARCH_ON, FALSE, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_COMPUTER_DOCLIST) { if ((CurButton == T2D_BT_COMPUTER_DOCLIST_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_DOCLIST_SCROLLUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if ((CurButton == T2D_BT_COMPUTER_DOCLIST_SCROLLDOWN) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); } else if (((CurButton >= T2D_BT_COMPUTER_DOCLIST_LINES_START) && (CurButton <= T2D_BT_COMPUTER_DOCLIST_LINES_END)) && (TheMessage->event != ME_MOUSEUPDATE)) { StartY = computerCurrentDocument; computerCurrentDocument = -1; //Controlla se la linea premuta contiene il collegamento a un documento for (i = 0; i < T2D_BT_COMPUTER_DOCLIST_LINES_END - T2D_BT_COMPUTER_DOCLIST_LINES_START; i++) if (computerDocList[i] == -1) break; if (CurButton - T2D_BT_COMPUTER_DOCLIST_LINES_START >= i) break; computerCurrentDocument = computerDocList[CurButton - T2D_BT_COMPUTER_DOCLIST_LINES_START]; if (computerCurrentDocument != -1) { //Disattiva vecchi documento if (StartY >= 0) t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[StartY].tnum |= T2D_BM_OFF; //Attiva nuovo documento t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum &= ~T2D_BM_OFF; if (!t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum) t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].tnum = LoadDDBitmap(game, ComputerCIAFileNames[ computerCurrentDocument - T2D_BM_COMPUTER_DOCUMENT_FIRST], 0); //Setta parametri nuovo documento GetDDBitmapExtends(renderer, &t, &t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument]); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].px = renderer.rInvFitX(26); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].py = renderer.rInvFitY(66); t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].ox = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].oy = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dx = 0; t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = 0; if (t.y2 - t.y1 > 407) { t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = renderer.rInvFitY(407); } else { t2dWin[T2D_WIN_COMPUTER_DOCUMENT].bm[computerCurrentDocument].dy = renderer.rInvFitY( t.y2 - t.y1); } _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_DOCUMENT, 0, TRUE, nullptr, nullptr, nullptr); } } else if ((CurButton == T2D_BT_COMPUTER_DOCLIST_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, T2D_BM_COMPUTER_DOCLIST_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Disattiva finestra doclist _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCLIST, 0, FALSE, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_COMPUTER_EMAIL) { if ((CurButton == T2D_BT_COMPUTER_EMAIL_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_SCROLLUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Scroll UP w->sy -= 10; if (w->sy < 0) w->sy = 0; } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_SCROLLDOWN) && (TheMessage->event != ME_MOUSEUPDATE)) { //Scroll Down w->sy += 10; } else if ( ((CurButton == T2D_BT_COMPUTER_EMAIL_ICON_1) || (CurButton == T2D_BT_COMPUTER_EMAIL_ICON_2)) && (TheMessage->event != ME_MOUSEUPDATE)) { //Disattiva vecchia email if (computerCurrentEMail != -1) t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].tnum |= T2D_BM_OFF; if (CurButton == T2D_BT_COMPUTER_EMAIL_ICON_1) computerCurrentEMail = T2D_BM_COMPUTER_EMAIL_1; else if (CurButton == T2D_BT_COMPUTER_EMAIL_ICON_2) computerCurrentEMail = T2D_BM_COMPUTER_EMAIL_2; //Attiva nuova email t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].tnum &= ~T2D_BM_OFF; //Setta parametri GetDDBitmapExtends(renderer, &t, &t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail]); t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].px = renderer.rInvFitX(35); t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].py = renderer.rInvFitY(59); t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].ox = 0; t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].oy = 0; t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].dx = 0; t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].dy = 0; if (t.y2 - t.y1 > 182) t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].dy = renderer.rInvFitY(182); //else t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].dy = rInvFitY(t.y2-t.y1); else t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER].bm[computerCurrentEMail].dy = 0; //Apre finestra EMail_Viewer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_COMPUTER_EMAIL_VIEWER, 0, TRUE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_EMAIL, T2D_BM_COMPUTER_EMAIL_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Disattiva finestra email _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_EMAIL, 0, FALSE, nullptr, nullptr, nullptr); //Disattiva tasto email _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_EMAIL_ON, FALSE, nullptr, nullptr, nullptr); //ResetDIKbd(); //bIngnoreDIKeyboard = FALSE; } } else if (CurButtonWin == T2D_WIN_COMPUTER_DOCUMENT) { if ((CurButton == T2D_BT_COMPUTER_DOCUMENT_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_DOCUMENT_SCROLL) && (bLPressed || bRPressed)) { //Paramentri per lo scrolling ScrollWithMouse = CurButtonWin; ScrollWithMouseX = mouse_x; ScrollWithMouseY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_DOCUMENT_SCROLLUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); GetDDBitmapExtends(renderer, &t, &w->bm[computerCurrentDocument]); if (t.y2 - t.y1 > 407) { if (w->bm[computerCurrentDocument].oy - T2D_DOC_SCROLL_ADD < 0) { w->bm[computerCurrentDocument].oy = 0; w->bm[computerCurrentDocument].py = 66; } else { w->bm[computerCurrentDocument].oy -= T2D_DOC_SCROLL_ADD; w->bm[computerCurrentDocument].py += T2D_DOC_SCROLL_ADD; } } } else if ((CurButton == T2D_BT_COMPUTER_DOCUMENT_SCROLLDOWN) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); GetDDBitmapExtends(renderer, &t, &w->bm[computerCurrentDocument]); if (t.y2 - t.y1 > 407) { if (w->bm[computerCurrentDocument].oy + w->bm[computerCurrentDocument].dy + T2D_DOC_SCROLL_ADD >= renderer.rInvFitY(t.y2 - t.y1)) { w->bm[computerCurrentDocument].oy = renderer.rInvFitY(t.y2 - t.y1) - w->bm[computerCurrentDocument].dy; while (w->bm[computerCurrentDocument].oy + w->bm[computerCurrentDocument].dy >= renderer.rInvFitY(t.y2 - t.y1)) w->bm[computerCurrentDocument].oy--; w->bm[computerCurrentDocument].py = renderer.rInvFitY(66) - w->bm[computerCurrentDocument].oy; } else { w->bm[computerCurrentDocument].oy += T2D_DOC_SCROLL_ADD; w->bm[computerCurrentDocument].py -= T2D_DOC_SCROLL_ADD; } } } else if ((CurButton == T2D_BT_COMPUTER_DOCUMENT_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, T2D_BM_COMPUTER_DOCUMENT_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Disattiva documento _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, (short)computerCurrentDocument, FALSE, nullptr, nullptr, nullptr); //Disattiva finestra Document _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DOCUMENT, 0, FALSE, nullptr, nullptr, nullptr); computerCurrentDocument = -1; } } else if (CurButtonWin == T2D_WIN_COMPUTER_EMAIL_VIEWER) { if ((CurButton == T2D_BT_COMPUTER_EMAIL_VIEWER_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLL) && (bLPressed || bRPressed)) { //Parametri scrolling ScrollWithMouse = CurButtonWin; ScrollWithMouseX = mouse_x; ScrollWithMouseY = mouse_y; } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLLUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_EMAIL_VIEWER, T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); GetDDBitmapExtends(renderer, &t, &w->bm[computerCurrentEMail]); if (t.y2 - t.y1 > 182) { if (w->bm[computerCurrentEMail].oy - T2D_DOC_SCROLL_ADD < 0) { w->bm[computerCurrentEMail].oy = 0; w->bm[computerCurrentEMail].py = renderer.rInvFitY(59); } else { w->bm[computerCurrentEMail].oy -= T2D_DOC_SCROLL_ADD; w->bm[computerCurrentEMail].py += T2D_DOC_SCROLL_ADD; } } } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLLDOWN) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_EMAIL_VIEWER, T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); GetDDBitmapExtends(renderer, &t, &w->bm[computerCurrentEMail]); if (t.y2 - t.y1 > 182) { if (w->bm[computerCurrentEMail].oy + w->bm[computerCurrentEMail].dy + T2D_DOC_SCROLL_ADD >= renderer.rInvFitY(t.y2 - t.y1)) { w->bm[computerCurrentEMail].oy = renderer.rInvFitY(t.y2 - t.y1) - w->bm[computerCurrentEMail].dy; while (w->bm[computerCurrentEMail].oy + w->bm[computerCurrentEMail].dy >= renderer.rInvFitY(t.y2 - t.y1)) w->bm[computerCurrentEMail].oy--; w->bm[computerCurrentEMail].py = renderer.rInvFitY(59) - w->bm[computerCurrentEMail].oy; } else { w->bm[computerCurrentEMail].oy += T2D_DOC_SCROLL_ADD; w->bm[computerCurrentEMail].py -= T2D_DOC_SCROLL_ADD; } } } else if ((CurButton == T2D_BT_COMPUTER_EMAIL_VIEWER_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_EMAIL_VIEWER, T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Suono StartSound(game, wCIAPULSANTE); //Disattiva finestra Email_Viewer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_EMAIL_VIEWER, 0, FALSE, nullptr, nullptr, nullptr); } } break; } case tDIARIO: { if (CurButtonWin == T2D_WIN_DIARIO) { //Azzera parti selezionate if (TheMessage->event == ME_MOUSEUPDATE) { switch (diarioCurrentPage) { case 1: for (i = T2D_BT_DIARIO_PAGE_1_TEXT_1; i <= T2D_BT_DIARIO_PAGE_1_TEXT_6; i++) { if (!(w->bm[i].tnum & T2D_BM_OFF)) w->bm[i].tnum |= T2D_BM_OFF; } break; case 2: for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) { if (!(w->bm[i].tnum & T2D_BM_OFF)) w->bm[i].tnum |= T2D_BM_OFF; } break; case 3: for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) { if (!(w->bm[i].tnum & T2D_BM_OFF)) w->bm[i].tnum |= T2D_BM_OFF; } break; case 4: for (i = T2D_BT_DIARIO_PAGE_4_TEXT_1; i <= T2D_BT_DIARIO_PAGE_4_TEXT_12; i++) { if (!(w->bm[i].tnum & T2D_BM_OFF)) w->bm[i].tnum |= T2D_BM_OFF; } break; } } if ((bSomeOneSpeak) && ((TheMessage->event == ME_MLEFT) || (TheMessage->event == ME_MRIGHT))) { bSkipTalk = TRUE; ClearText(); _vm->_messageSystem.deleteWaitingMsgs(MP_WAIT_LINK); return; } if ((CurButton == T2D_BT_DIARIO_PAGE_LEFT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_LEFT_ON, FALSE, nullptr, nullptr, nullptr); switch (diarioCurrentPage) { case 1: //Pagina Iniziale, non puo andare a pagina precedente break; case 2: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_1, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_2, FALSE, nullptr, nullptr, nullptr); w->bt[T2D_BT_DIARIO_PAGE_LEFT].on = false; for (i = T2D_BT_DIARIO_PAGE_1_TEXT_1; i <= T2D_BT_DIARIO_PAGE_1_TEXT_6; i++) w->bt[i].on = TRUE; for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) w->bt[i].on = false; diarioCurrentPage = 1; break; case 3: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_2, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_3, FALSE, nullptr, nullptr, nullptr); for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) w->bt[i].on = TRUE; for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) w->bt[i].on = false; diarioCurrentPage = 2; break; case 4: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_3, TRUE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_4, FALSE, nullptr, nullptr, nullptr); w->bt[T2D_BT_DIARIO_PAGE_RIGHT].on = TRUE; for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) w->bt[i].on = TRUE; for (i = T2D_BT_DIARIO_PAGE_4_TEXT_1; i <= T2D_BT_DIARIO_PAGE_4_TEXT_12; i++) w->bt[i].on = false; diarioCurrentPage = 3; break; } } else if ((CurButton == T2D_BT_DIARIO_PAGE_RIGHT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_RIGHT_ON, FALSE, nullptr, nullptr, nullptr); switch (diarioCurrentPage) { case 1: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_1, FALSE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_2, TRUE, nullptr, nullptr, nullptr); w->bt[T2D_BT_DIARIO_PAGE_LEFT].on = TRUE; for (i = T2D_BT_DIARIO_PAGE_1_TEXT_1; i <= T2D_BT_DIARIO_PAGE_1_TEXT_6; i++) w->bt[i].on = false; for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) w->bt[i].on = TRUE; diarioCurrentPage = 2; break; case 2: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_2, FALSE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_3, TRUE, nullptr, nullptr, nullptr); for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) w->bt[i].on = false; for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) w->bt[i].on = TRUE; diarioCurrentPage = 3; break; case 3: _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_3, FALSE, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_PAGE_4, TRUE, nullptr, nullptr, nullptr); w->bt[T2D_BT_DIARIO_PAGE_RIGHT].on = false; for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) w->bt[i].on = false; for (i = T2D_BT_DIARIO_PAGE_4_TEXT_1; i <= T2D_BT_DIARIO_PAGE_4_TEXT_12; i++) w->bt[i].on = TRUE; diarioCurrentPage = 4; break; case 4: //Ultima Pagina break; } } else if ((CurButton == T2D_BT_DIARIO_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione tasto w->bm[T2D_BM_DIARIO_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_DIALUP_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_DIARIO, T2D_BM_DIARIO_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Uscita _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tDIARIO, nullptr, nullptr, nullptr); } else if ((CurButton >= T2D_BT_DIARIO_PAGE_1_TEXT_1) && (CurButton <= T2D_BT_DIARIO_PAGE_1_TEXT_6) && (diarioCurrentPage == 1)) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[CurButton].tnum &= ~T2D_BM_OFF; } else { if (CurPlayer == DARRELL) PlayerSpeak(game, init.Obj[o34DIARIOAP].action[CurPlayer]); else PlayerSpeak(game, init.Obj[oDIARIOPAG1A + (CurButton - T2D_BT_DIARIO_PAGE_1_TEXT_1)].examine[CurPlayer]); } } else if ((CurButton >= T2D_BT_DIARIO_PAGE_2_TEXT_1) && (CurButton <= T2D_BT_DIARIO_PAGE_2_TEXT_6) && (diarioCurrentPage == 2)) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[CurButton].tnum &= ~T2D_BM_OFF; } else { if (CurPlayer == DARRELL) PlayerSpeak(game, init.Obj[o34DIARIOAP].action[CurPlayer]); else PlayerSpeak(game, init.Obj[oDIARIOPAG2A + (CurButton - T2D_BT_DIARIO_PAGE_2_TEXT_1)].examine[CurPlayer]); } } else if ((CurButton >= T2D_BT_DIARIO_PAGE_3_TEXT_1) && (CurButton <= T2D_BT_DIARIO_PAGE_3_TEXT_4) && (diarioCurrentPage == 3)) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[CurButton].tnum &= ~T2D_BM_OFF; } else { if (CurPlayer == DARRELL) PlayerSpeak(game, init.Obj[o34DIARIOAP].action[CurPlayer]); else PlayerSpeak(game, init.Obj[oDIARIOPAG3A + (CurButton - T2D_BT_DIARIO_PAGE_3_TEXT_1)].examine[CurPlayer]); } } else if ((CurButton >= T2D_BT_DIARIO_PAGE_4_TEXT_1) && (CurButton <= T2D_BT_DIARIO_PAGE_4_TEXT_12) && (diarioCurrentPage == 4)) { if (TheMessage->event == ME_MOUSEUPDATE) { w->bm[CurButton].tnum &= ~T2D_BM_OFF; } else { if (CurPlayer == DARRELL) PlayerSpeak(game, init.Obj[o34DIARIOAP].action[CurPlayer]); else { PlayerSpeak(game, init.Obj[oDIARIOPAG4A + (CurButton - T2D_BT_DIARIO_PAGE_4_TEXT_1)].examine[CurPlayer]); _vm->_messageSystem.doEvent(EventClass::MC_STRING, ME_PLAYERSPEAK, MP_WAIT_LINK, init.Obj[oDIARIOPAG4A + (CurButton - T2D_BT_DIARIO_PAGE_4_TEXT_1)].text[0], 0, 0, nullptr, nullptr, nullptr); } } } } break; } case tPDA: { if (CurButtonWin == T2D_WIN_PDA_MAIN) { if ((CurButton == T2D_BT_PDA_MAIN_TONE) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_MAIN_TONE_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_MAIN, T2D_BM_PDA_MAIN_TONE_ON, FALSE, nullptr, nullptr, nullptr); //Apre il Tone Sequencer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_TONE, 0, TRUE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_PDA_MAIN_LOG) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_MAIN_LOG_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_MAIN, T2D_BM_PDA_MAIN_LOG_ON, FALSE, nullptr, nullptr, nullptr); //Apre il Log Viewer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_LOG, 0, TRUE, nullptr, nullptr, nullptr); //Resetta variabili RefreshLog(game, RESTARTALL); RefreshLog(game, REFRESH); } else if ((CurButton == T2D_BT_PDA_MAIN_QUIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAOFF); w->bm[T2D_BM_PDA_MAIN_QUIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_MAIN, T2D_BM_PDA_MAIN_QUIT_ON, FALSE, nullptr, nullptr, nullptr); //Esce dal PDA _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_WAITA, 0, 0, tPDA, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_PDA_LOG) { if ((CurButton == T2D_BT_PDA_LOG_SCROLL) && (bLPressed || bRPressed)) { if (ScrollWithMouse == 0) { //Inizializza scrolling ScrollWithMouse = CurButtonWin; ScrollWithMouseX = mouse_x; ScrollWithMouseY = mouse_y; } } else if ((CurButton == T2D_BT_PDA_LOG_SCROLL) && (TheMessage->event != ME_MOUSEUPDATE)) { if (TheMessage->event == ME_MRIGHT) { for (i = 0; i < MAX_PDALOGS; i++) //if ((strcmp(PDALog[i].info, "MENU")==0) && (CurrentLogMenu==PDALog[i].time)) if ((init.PDALog[i].flags & PDA_MENU) && (init.PDALog[i].menu_creato == CurrentLogMenu)) { CurrentLogMenu = init.PDALog[i].menu_appartenenza; NumMenus--; RefreshLog(game, REFRESH); } break; } StartY = (int)((double)(mouse_y - w->bt[T2D_BT_PDA_LOG_SCROLL].lim.y1 - w->px) / ((double)(w->bt[T2D_BT_PDA_LOG_SCROLL].lim.y2 - w->bt[T2D_BT_PDA_LOG_SCROLL].lim.y1) / 20.0)); /*if (NumMenus>0) StartY-=NumMenus+2; if (StartY<0) { CurrentLogMenu=MenuLinks[NumMenus+1+StartY]; NumMenus=NumMenus+2+StartY; RefreshLog(init, REFRESH); break; }*/ i = 0; a = 0; while (CurrentPDALogs[i] != nullptr) { if ((StartY >= a) && (StartY < a + CurrentPDALogs[i]->lines)) break; a += CurrentPDALogs[i]->lines + 1; if (i == 0) a -= PDAScrollLine; i++; } if (CurrentPDALogs[i] == nullptr) break; if (CurrentPDALogs[i]->flags & PDA_MENU) { //CurrentLogMenu=CurrentPDALogs[i]->menu_creato; //NumMenus++; if (CurrentPDALogs[i]->flags & PDA_MENU_OPEN) CurrentPDALogs[i]->flags &= ~PDA_MENU_OPEN; else CurrentPDALogs[i]->flags |= PDA_MENU_OPEN; RefreshLog(game, REFRESH); } } else if ((CurButton == T2D_BT_PDA_LOG_SCROLLUP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Gestione tasto w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_LOG, T2D_BM_PDA_LOG_SCROLLUP_ON, FALSE, nullptr, nullptr, nullptr); //Riposiziona il log RefreshLog(game, -1); } else if ((CurButton == T2D_BT_PDA_LOG_SCROLLDOWN) && (TheMessage->event != ME_MOUSEUPDATE)) { //Gestione tasto w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_LOG, T2D_BM_PDA_LOG_SCROLLDOWN_ON, FALSE, nullptr, nullptr, nullptr); //Riposiziona il log RefreshLog(game, +1); } else if (CurButton == T2D_BT_PDA_LOG_SB) { if ((PiroloGrab == 0) && bLPressed) { PiroloGrab = (mouse_y - w->py) - w->bt[T2D_BT_PDA_LOG_SB].lim.y1; ScrollWithMouse = TRUE; } /*if (PiroloGrab!=0) { int NewScrollPos; LogSBPos=(mouse_y-w->py)-PiroloGrab; if (LogSBPosT2D_PDA_LOG_SB_STARTY+T2D_PDA_LOG_SB_TOTY) LogSBPos=T2D_PDA_LOG_SB_STARTY+T2D_PDA_LOG_SB_TOTY; NewScrollPos=(double)LogSBPos/(double)LogSBDy; while(NewScrollPos!=LogCurAbsLine) { if (NewScrollPosLogCurAbsLine) RefreshLog(+1); } w->bm[T2D_BM_PDA_LOG_SB].py = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].lim.y1 = LogSBPos; w->bt[T2D_BT_PDA_LOG_SB].lim.y2 = LogSBPos + T2D_PDA_LOG_SB_PIRGY; //game.gameOptions.sound_volume=GestioneBarra(&w->bm[T2D_BM_OPTIONS_SOUND_BARRA], &w->bm[T2D_BM_OPTIONS_SOUND_PIROLO], mouse_x, -1); }*/ } else if ((CurButton == T2D_BT_PDA_LOG_BARRA) && (TheMessage->event != ME_MOUSEUPDATE)) { if (mouse_y < LogSBPos) RefreshLog(game, -1); else RefreshLog(game, +1); } else if ((CurButton == T2D_BT_PDA_LOG_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_LOG_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_LOG, T2D_BM_PDA_LOG_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Chiude finestra help se aperta _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_PDA_HELP, 0, FALSE, nullptr, nullptr, nullptr); //Chiude finestra Log Viewer _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_LOG, 0, FALSE, nullptr, nullptr, nullptr); } } else if (CurButtonWin == T2D_WIN_PDA_TONE) { if ((CurButton == T2D_BT_PDA_TONE_HELP) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_TONE_HELP_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_TONE, T2D_BM_PDA_TONE_HELP_ON, FALSE, nullptr, nullptr, nullptr); //Setta e Apre finestra Help SetHelpWin(game._fonts, nullptr, 5, Sentence[init.Obj[oTONERHELP].text[0]], Sentence[init.Obj[oTONERHELP].text[1]], Sentence[init.Obj[oTONERHELP].text[2]], Sentence[init.Obj[oTONERHELP].text[3]], Sentence[init.Obj[oTONERHELP].text[4]]); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_HELP, 0, TRUE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_PDA_TONE_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_TONE_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_TONE, T2D_BM_PDA_TONE_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Chiude finestra help _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_PDA_HELP, 0, FALSE, nullptr, nullptr, nullptr); //Chiude finestra Tone _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_TONE, 0, FALSE, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_PDA_TONE_ACQUIRE) && (TheMessage->event != ME_MOUSEUPDATE)) { //Disattiva tasto w->bt[T2D_BT_PDA_TONE_ACQUIRE].on = FALSE; //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_TONE, T2D_BM_PDA_TONE_ACQUIRE_ON, FALSE, nullptr, nullptr, nullptr); //Fa partire sequenza di aquiring _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_WAITA, 0, 0, T2D_PDA_TONE_AQUIRING, nullptr, nullptr, nullptr); } else if ((CurButton == T2D_BT_PDA_TONE_PROCESS) && (TheMessage->event != ME_MOUSEUPDATE)) { //Disattiva tasto w->bt[T2D_BT_PDA_TONE_PROCESS].on = FALSE; //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_TONE_PROCESS_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_TONE, T2D_BM_PDA_TONE_PROCESS_ON, FALSE, nullptr, nullptr, nullptr); //Fa partire sequenza di processing _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_WAITA, 0, 0, T2D_PDA_TONE_PROCESS, nullptr, nullptr, nullptr); if (!(init.InvObj[i28WALKMANOK].flags & EXTRA2)) IncCurTime(game, 5); init.InvObj[i28WALKMANOK].flags |= EXTRA2; } } else if (CurButtonWin == T2D_WIN_PDA_HELP) { if ((CurButton == T2D_BT_PDA_HELP_MOVE) && (bLPressed || bRPressed)) { LinkWinToMouse = CurButtonWin; LinkWinX = mouse_x; LinkWinY = mouse_y; } else if ((CurButton == T2D_BT_PDA_HELP_EXIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto StartSound(game, wPDAPULSANTE); w->bm[T2D_BM_PDA_HELP_EXIT_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_PDA_HELP, T2D_BM_PDA_HELP_EXIT_ON, FALSE, nullptr, nullptr, nullptr); //Chiude finestra Tone _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_HELP, 0, FALSE, nullptr, nullptr, nullptr); if (HelpFunc != NULL) HelpFunc(); } } break; } case tOPTIONS: { w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MAINMENU_ON].tnum |= T2D_BM_OFF; if (optionsSaveDescriptActive) break; if (CurButtonWin == T2D_WIN_OPTIONS_MAIN) { if (( ((CurButton == T2D_BT_OPTIONS_SAVE) && PlayerCanSave()) || (CurButton == T2D_BT_OPTIONS_LOAD) || (CurButton == T2D_BT_OPTIONS_OPTIONS) ) && (TheMessage->event != ME_MOUSEUPDATE)) { //Cambia finestra if (optionsCurrent != CurButton) { switch (optionsCurrent) { case T2D_BT_OPTIONS_SAVE: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SAVE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; break; case T2D_BT_OPTIONS_LOAD: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_LOAD].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; break; case T2D_BT_OPTIONS_OPTIONS: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SOUND].on = false; w->bt[T2D_BT_OPTIONS_MUSIC].on = false; w->bt[T2D_BT_OPTIONS_SPEECH].on = false; w->bt[T2D_BT_OPTIONS_SUBTITLES].on = false; w->bm[T2D_BM_OPTIONS_SOUND_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SOUND_BARRA].on = false; w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_MUSIC_BARRA].on = false; w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SPEECH_BARRA].on = false; break; } switch (CurButton) { case T2D_BT_OPTIONS_SAVE: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SAVE].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum &= ~T2D_BM_OFF; RefreshSaveImg(game, 0, 0); break; case T2D_BT_OPTIONS_LOAD: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_LOAD].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = TRUE; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = TRUE; RefreshSaveImg(game, 0, 1); break; case T2D_BT_OPTIONS_OPTIONS: w->bm[T2D_BM_OPTIONS_CONTORNO].tnum &= ~T2D_BM_OFF; if (game.gameOptions.sound_on) w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum &= ~T2D_BM_OFF; else w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum &= ~T2D_BM_OFF; if (game.gameOptions.music_on) w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum &= ~T2D_BM_OFF; else w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum &= ~T2D_BM_OFF; if (game.gameOptions.speech_on) w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum &= ~T2D_BM_OFF; else w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum &= ~T2D_BM_OFF; if (game.gameOptions.subtitles_on) w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum &= ~T2D_BM_OFF; else w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SOUND].on = TRUE; w->bt[T2D_BT_OPTIONS_MUSIC].on = TRUE; w->bt[T2D_BT_OPTIONS_SPEECH].on = TRUE; w->bt[T2D_BT_OPTIONS_SUBTITLES].on = TRUE; w->bm[T2D_BM_OPTIONS_SOUND_BARRA].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SOUND_BARRA].on = TRUE; w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_MUSIC_BARRA].on = TRUE; w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_SPEECH_BARRA].on = TRUE; GestioneBarra(&w->bm[T2D_BM_OPTIONS_SOUND_BARRA], &w->bm[T2D_BM_OPTIONS_SOUND_PIROLO], -1, game.gameOptions.sound_volume); GestioneBarra(&w->bm[T2D_BM_OPTIONS_MUSIC_BARRA], &w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO], -1, game.gameOptions.music_volume); GestioneBarra(&w->bm[T2D_BM_OPTIONS_SPEECH_BARRA], &w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO], -1, game.gameOptions.speech_volume); RefreshSaveImg(game, 0, 2); break; } if ((CurButton == T2D_BT_OPTIONS_SAVE) || (CurButton == T2D_BT_OPTIONS_LOAD)) { if (optionsCurPos > 0) { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; } if (optionsCurPos + 6 < NSaves) { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; } } optionsCurrent = CurButton; } } else if ((CurButton >= T2D_BT_OPTIONS_SAVE_START) && (CurButton <= T2D_BT_OPTIONS_SAVE_END) && (TheMessage->event != ME_MOUSEUPDATE)) { optionsWhat = CurButton - T2D_BT_OPTIONS_SAVE_START; if (optionsSaves[optionsWhat][0] == 0) break; switch (optionsCurrent) { case T2D_BT_OPTIONS_SAVE: optionsSlot = -1; if (optionsCurPos + optionsWhat == 0) { for (i = 0; i < T2D_OPTIONS_MAX_SAVES; i++) { int afret; snprintf(Name, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1); t3dForceNOFastFile(1); afret = t3dAccessFile(Name); t3dForceNOFastFile(0); if (!afret) { optionsSlot = i + 1; break; } } } else optionsSlot = Saves[optionsCurPos + optionsWhat - 1].NFile; if (optionsSlot == -1) break; //Spazi finiti { TimeDate sysTime; g_system->getTimeAndDate(sysTime); snprintf(Text, 1000, "%02d:%02d.%02d %02d/%02d/%02d", sysTime.tm_hour, sysTime.tm_min, sysTime.tm_sec, sysTime.tm_mday, sysTime.tm_mon, sysTime.tm_year); } if (DataSave(Text, (uint8) optionsSlot)) { snprintf(Text, 1000, "%stemp.tmp", game.workDirs._gameDir.c_str()); snprintf(Name, MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), optionsSlot); CopyFile(Text, Name, FALSE); } else { DebugLogFile("DataSave(slot %d) Failed. Quitting ...", optionsSlot); CloseSys(game); } CaricaSaves(game); SortSaves(); RefreshSaveImg(game, optionsCurPos, 0); break; case T2D_BT_OPTIONS_LOAD: bShowOnlyLoadWindow = 0; i = Saves[optionsCurPos + optionsWhat].NFile; snprintf(Name, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i); if (!DataLoad(game, "", (uint8) i)) { DebugLogFile("DataLoad(slot %d) Failed. Quitting ...", i); CloseSys(game); } _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, 0, 0, tOPTIONS, nullptr, nullptr, nullptr); break; } } else if ((CurButton == T2D_BT_OPTIONS_FRECCIA_SU) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_OPTIONS_MAIN, T2D_BM_OPTIONS_FRECCIA_SU_ON, FALSE, nullptr, nullptr, nullptr); //Scrolling Up if (optionsCurPos > 0) { optionsCurPos -= 3; if (optionsCurPos < 0) optionsCurPos = 0; switch (optionsCurrent) { case T2D_BT_OPTIONS_SAVE: RefreshSaveImg(game, optionsCurPos, 0); break; case T2D_BT_OPTIONS_LOAD: RefreshSaveImg(game, optionsCurPos, 1); break; } } if (optionsCurPos > 0) { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; } if (optionsCurPos + 6 < NSaves) { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; } } else if ((CurButton == T2D_BT_OPTIONS_FRECCIA_GIU) && (TheMessage->event != ME_MOUSEUPDATE)) { //Pressione Tasto w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON].tnum &= ~T2D_BM_OFF; _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_OPTIONS_MAIN, T2D_BM_OPTIONS_FRECCIA_GIU_ON, FALSE, nullptr, nullptr, nullptr); if (optionsCurPos + 6 > NSaves) break; if (optionsCurPos + 3 >= T2D_OPTIONS_MAX_SAVES) break; //Scrolling Down if (optionsCurPos == 0) optionsCurPos += 2; else optionsCurPos += 3; switch (optionsCurrent) { case T2D_BT_OPTIONS_SAVE: RefreshSaveImg(game, optionsCurPos, 0); break; case T2D_BT_OPTIONS_LOAD: RefreshSaveImg(game, optionsCurPos, 1); break; } if (optionsCurPos > 0) { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; } if (optionsCurPos + 6 < NSaves) { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; } } else if ((CurButton == T2D_BT_OPTIONS_QUIT) && (TheMessage->event != ME_MOUSEUPDATE)) { //Esce dalle Opzioni CloseSys(game); } else if ((CurButton == T2D_BT_OPTIONS_CLOSE) && (TheMessage->event != ME_MOUSEUPDATE)) { //Esce dalle Opzioni _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, 0, 0, tOPTIONS, nullptr, nullptr, nullptr); } else if (CurButton == T2D_BT_OPTIONS_MAINMENU) { if (TheMessage->event != ME_MOUSEUPDATE) { bShowOnlyLoadWindow = 0; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, STOP_T2D__LAUNCH_MAINMENU, 0, tOPTIONS, nullptr, nullptr, nullptr); } else { w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MAINMENU_ON].tnum &= ~T2D_BM_OFF; } } else if ((CurButton == T2D_BT_OPTIONS_SOUND) && (TheMessage->event != ME_MOUSEUPDATE)) { game.gameOptions.sound_on = !game.gameOptions.sound_on; if (game.gameOptions.sound_on) { //Fa partire gli effetti BackGround for (i = 0; i < MAX_ROOMS; i++) { if (init.Room[i].flags & ROOM_VISIBLE) { for (a = 0; a < MAX_SOUNDS_IN_ROOM; a++) if ((init.Room[i].sounds[a]) && (init.Sound[init.Room[i].sounds[a]].flags & SOUND_ON)) StartSound(game, init.Room[i].sounds[a]); } } w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum |= T2D_BM_OFF; } else { sStopAllSounds(); w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum &= ~T2D_BM_OFF; } } else if ((CurButton == T2D_BT_OPTIONS_MUSIC) && (TheMessage->event != ME_MOUSEUPDATE)) { game.gameOptions.music_on = !game.gameOptions.music_on; if (game.gameOptions.music_on) { PlayMusic(init.Room[getRoomFromStr(init, t3dCurRoom->name)].music, 3000, 3000); w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum |= T2D_BM_OFF; } else { StopMusic(); w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum &= ~T2D_BM_OFF; } } else if ((CurButton == T2D_BT_OPTIONS_SPEECH) && (TheMessage->event != ME_MOUSEUPDATE)) { game.gameOptions.speech_on = !game.gameOptions.speech_on; if (game.gameOptions.speech_on) { w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum |= T2D_BM_OFF; } else { //turn Speech off w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum &= ~T2D_BM_OFF; //forzo i sottotitoli a on se non c'e' parlato game.gameOptions.subtitles_on = 1; w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum |= T2D_BM_OFF; } } else if ((CurButton == T2D_BT_OPTIONS_SUBTITLES) && (TheMessage->event != ME_MOUSEUPDATE)) { // se il parlato e' spento i sottotitoli devono rimanere attivi if (!game.gameOptions.speech_on && game.gameOptions.subtitles_on) break; game.gameOptions.subtitles_on = !game.gameOptions.subtitles_on; if (game.gameOptions.subtitles_on) { w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum |= T2D_BM_OFF; } else { w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum &= ~T2D_BM_OFF; } } else if (CurButton == T2D_BT_OPTIONS_SOUND_BARRA) { if (bLPressed || bRPressed || (TheMessage->event == ME_MLEFT) || (TheMessage->event == ME_MRIGHT)) PiroloGrab = 1; if (PiroloGrab == 1) { game.gameOptions.sound_volume = GestioneBarra(&w->bm[T2D_BM_OPTIONS_SOUND_BARRA], &w->bm[T2D_BM_OPTIONS_SOUND_PIROLO], mouse_x, -1); sSetAllSoundsVolume(game.gameOptions.sound_volume); } } else if (CurButton == T2D_BT_OPTIONS_MUSIC_BARRA) { if (bLPressed || bRPressed || (TheMessage->event == ME_MLEFT) || (TheMessage->event == ME_MRIGHT)) PiroloGrab = 2; if (PiroloGrab == 2) { game.gameOptions.music_volume = GestioneBarra(&w->bm[T2D_BM_OPTIONS_MUSIC_BARRA], &w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO], mouse_x, -1); mSetAllVolume(game.gameOptions.music_volume); } } else if (CurButton == T2D_BT_OPTIONS_SPEECH_BARRA) { if (bLPressed || bRPressed || (TheMessage->event == ME_MLEFT) || (TheMessage->event == ME_MRIGHT)) PiroloGrab = 3; if (PiroloGrab == 3) { game.gameOptions.speech_volume = GestioneBarra(&w->bm[T2D_BM_OPTIONS_SPEECH_BARRA], &w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO], mouse_x, -1); sSetAllSpeechVolume(game.gameOptions.speech_volume); } } } break; } case tMAINMENU: { doT2DMouseMainMenu(game, w); break; } case tGAMEOVER: { if (timeGetTime() >= (GameOverWindow_StartTime + GAMEOVER_WINDOW_NUM_MSECONDS)) { LoadWindow_WhichBkg = 2; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTOP, MP_DEFAULT, STOP_T2D__LAUNCH_LOAD, 0, tMAINMENU, nullptr, nullptr, nullptr); } break; } } break; } } void SetPDALogItem(Init &init, int32 log_item) { if (log_item == lNULL) return; if (!(init.PDALog[log_item].flags & PDA_ON)) { init.PDALog[log_item].flags |= (PDA_ON | PDA_UPDATE); init.PDALog[log_item].time = t3dCurTime; Settati_PDA_items_durante_t2d = 1; } } /* -----------------15/01/99 16.29------------------- * doT2D * --------------------------------------------------*/ void doT2D(WGame &game) { struct SDDBitmap *d, *d1, *d2, *d3, *d4; t2dWINDOW *w; t2dBUTTON *b; int32 i, j; struct SRect tmp_rect; static uint32 LastTime = 0, CurTime = 0; Init &init = game.init; Renderer &renderer = *game._renderer; switch (TheMessage->event) { case ME_T2DSTART: Settati_PDA_items_durante_t2d = 0; bIngnoreDIKeyboard = true; if (InvStatus & INV_ON) _vm->_messageSystem.doEvent(EventClass::MC_INVENTORY, ME_INVSWITCH, MP_DEFAULT, 0, 0, 0, nullptr, nullptr, nullptr); StopDiary(game, 0, 0, 0); ClearText(); bT2DActive = TheMessage->bparam; bPlayerInAnim = true; bPauseAllAnims = true; memset(WinActive, 0, sizeof(WinActive)); switch (bT2DActive) { case tSCANNER: w = &t2dWin[T2D_WIN_SCANNER_BACKGROUND]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; w->bm[T2D_BM_SCANNER_BACKGROUND_WIN].tnum = LoadDDBitmap(game, "t2d\\Scanner_BackgroundWin.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_BACKGROUND_EXIT].tnum = LoadDDBitmap(game, "t2d\\Scanner_Exit.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].tnum = LoadDDBitmap(game, "t2d\\Scanner_Pic_Low.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI].tnum = LoadDDBitmap(game, "t2d\\Scanner_Pic_Hi.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].tnum = LoadDDBitmap(game, "t2d\\Scanner_Selector.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_BACKGROUND_WIN].px = 0; w->bm[T2D_BM_SCANNER_BACKGROUND_WIN].py = 0; w->bm[T2D_BM_SCANNER_BACKGROUND_EXIT].px = 772; w->bm[T2D_BM_SCANNER_BACKGROUND_EXIT].py = 10; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].px = 108; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].py = 118; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI].px = 108; w->bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI].py = 118; w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].px = 108; w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR].py = 118; b = &w->bt[T2D_BT_SCANNER_BACKGROUND_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_BACKGROUND_EXIT]); b->tnum = EXTRALS_EXIT; b = &w->bt[T2D_BT_SCANNER_BACKGROUND_SELECTOR]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_BACKGROUND_SELECTOR]); w = &t2dWin[T2D_WIN_SCANNER_TOOLBAR]; w->NOTSTRETCHED = false; w->px = 621; w->py = 184; w->bm[T2D_BM_SCANNER_TOOLBAR_WIN].tnum = LoadDDBitmap(game, "t2d\\Scanner_ToolbarWin.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_EXIT].tnum = LoadDDBitmap(game, "t2d\\Scanner_Exit.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_FREEZE].tnum = LoadDDBitmap(game, "t2d\\Scanner_Preview_Freeze.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF].tnum = LoadDDBitmap(game, "t2d\\Scanner_Preview_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON].tnum = LoadDDBitmap(game, "t2d\\Scanner_Preview_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_FREEZE].tnum = LoadDDBitmap(game, "t2d\\Scanner_SelectArea_Freeze.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].tnum = LoadDDBitmap(game, "t2d\\Scanner_SelectArea_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON].tnum = LoadDDBitmap(game, "t2d\\Scanner_SelectArea_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE].tnum = LoadDDBitmap(game, "t2d\\Scanner_Scan_Freeze.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].tnum = LoadDDBitmap(game, "t2d\\Scanner_Scan_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_ON].tnum = LoadDDBitmap(game, "t2d\\Scanner_Scan_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_TOOLBAR_WIN].px = 0; w->bm[T2D_BM_SCANNER_TOOLBAR_WIN].py = 0; w->bm[T2D_BM_SCANNER_TOOLBAR_EXIT].px = 90; w->bm[T2D_BM_SCANNER_TOOLBAR_EXIT].py = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_FREEZE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_FREEZE].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_FREEZE].py = 32; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF].py = 32; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_ON].py = 32; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_FREEZE].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_FREEZE].py = 67; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].py = 67; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_ON].py = 67; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_FREEZE].py = 102; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF].py = 102; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_ON].px = 10; w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_ON].py = 102; b = &w->bt[T2D_BT_SCANNER_TOOLBAR_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_TOOLBAR_WIN]); b->lim.y2 = 29; b->tnum = EXTRALS_SCANPROGRAM; b = &w->bt[T2D_BT_SCANNER_TOOLBAR_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_TOOLBAR_EXIT]); b->tnum = EXTRALS_EXIT; b = &w->bt[T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_TOOLBAR_PREVIEW_OFF]); b->tnum = EXTRALS_PREVIEW; b = &w->bt[T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF]); b->tnum = EXTRALS_SELECTAREA; b = &w->bt[T2D_BT_SCANNER_TOOLBAR_SCAN_OFF]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_SCANNER_TOOLBAR_SCAN_OFF]); b->tnum = EXTRALS_SCAN; w = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR]; w->NOTSTRETCHED = false; w->px = 280; w->py = 300; w->bm[T2D_BM_SCANNER_PROGRESSBAR_WIN].tnum = LoadDDBitmap(game, "t2d\\Scanner_ProgressWin.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_EXIT].tnum = LoadDDBitmap(game, "t2d\\Scanner_Exit.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_OFF].tnum = LoadDDBitmap(game, "t2d\\Scanner_ProgressBar_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_ON].tnum = LoadDDBitmap(game, "t2d\\Scanner_ProgressBar_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF].tnum = LoadDDBitmap(game, "t2d\\Scanner_Scanning_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON].tnum = LoadDDBitmap(game, "t2d\\Scanner_Scanning_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_SCANNER_PROGRESSBAR_WIN].px = 0; w->bm[T2D_BM_SCANNER_PROGRESSBAR_WIN].py = 0; w->bm[T2D_BM_SCANNER_PROGRESSBAR_EXIT].px = 221; w->bm[T2D_BM_SCANNER_PROGRESSBAR_EXIT].py = 10; w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_OFF].px = 15; w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_OFF].py = 67; w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_ON].px = 15; w->bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_ON].py = 67; w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF].px = 86; w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF].py = 52; w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON].px = 86; w->bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON].py = 52; WinActive[0] = T2D_WIN_SCANNER_BACKGROUND; WinActive[1] = T2D_WIN_SCANNER_TOOLBAR; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; SelectorFlag = false; break; case tCOMPUTER: //Inizializzazione finestra BackGround w = &t2dWin[T2D_WIN_COMPUTER_BACKGROUND]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; w->bm[T2D_BM_COMPUTER_BACKGROUND_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_BackgroundWin.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_EMAIL_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_QUIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Quit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_BACKGROUND_WIN].px = 0; w->bm[T2D_BM_COMPUTER_BACKGROUND_WIN].py = 0; w->bm[T2D_BM_COMPUTER_EMAIL_ON].px = 97; w->bm[T2D_BM_COMPUTER_EMAIL_ON].py = 445; w->bm[T2D_BM_COMPUTER_EMAIL_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_ON].px = 615; w->bm[T2D_BM_COMPUTER_SEARCH_ON].py = 444; w->bm[T2D_BM_COMPUTER_SEARCH_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_QUIT_ON].px = 678; w->bm[T2D_BM_COMPUTER_QUIT_ON].py = 525; w->bm[T2D_BM_COMPUTER_QUIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_BACKGROUND_EMAIL]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_ON]); b->tnum = EXTRALS_NEWMAIL; b = &w->bt[T2D_BT_COMPUTER_BACKGROUND_SEARCH]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_SEARCH_ON]); b->tnum = EXTRALS_SEARCH; b = &w->bt[T2D_BT_COMPUTER_BACKGROUND_QUIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_QUIT_ON]); b->tnum = EXTRALS_QUIT; //Gestione scritte w->bm[T2D_BM_COMPUTER_SCRITTE_1].tnum = (T2D_TEXT_COMPUTER_SCRITTE_1 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SCRITTE_1].px = 50; w->bm[T2D_BM_COMPUTER_SCRITTE_1].py = 100; w->bm[T2D_BM_COMPUTER_SCRITTE_1].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SCRITTE_1].text, ""); w->text[T2D_TEXT_COMPUTER_SCRITTE_1].font = FontKind::Standard; w->text[T2D_TEXT_COMPUTER_SCRITTE_1].color = WHITE_FONT; w->bm[T2D_BM_COMPUTER_SCRITTE_2].tnum = (T2D_TEXT_COMPUTER_SCRITTE_2 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SCRITTE_2].px = 50; w->bm[T2D_BM_COMPUTER_SCRITTE_2].py = 130; w->bm[T2D_BM_COMPUTER_SCRITTE_2].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SCRITTE_2].text, ""); w->text[T2D_TEXT_COMPUTER_SCRITTE_2].font = FontKind::Standard; w->text[T2D_TEXT_COMPUTER_SCRITTE_2].color = WHITE_FONT; w->bm[T2D_BM_COMPUTER_SCRITTE_3].tnum = (T2D_TEXT_COMPUTER_SCRITTE_3 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SCRITTE_3].px = 50; w->bm[T2D_BM_COMPUTER_SCRITTE_3].py = 160; w->bm[T2D_BM_COMPUTER_SCRITTE_3].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SCRITTE_3].text, ""); w->text[T2D_TEXT_COMPUTER_SCRITTE_3].font = FontKind::Standard; w->text[T2D_TEXT_COMPUTER_SCRITTE_3].color = WHITE_FONT; w->bm[T2D_BM_COMPUTER_SCRITTE_4].tnum = (T2D_TEXT_COMPUTER_SCRITTE_4 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SCRITTE_4].px = 50; w->bm[T2D_BM_COMPUTER_SCRITTE_4].py = 190; w->bm[T2D_BM_COMPUTER_SCRITTE_4].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SCRITTE_4].text, ""); w->text[T2D_TEXT_COMPUTER_SCRITTE_4].font = FontKind::Standard; w->text[T2D_TEXT_COMPUTER_SCRITTE_4].color = WHITE_FONT; //ExtraLS b = &w->bt[T2D_BT_BackgroundWin_TGA__cia1]; b->lim.x1 = 66; b->lim.y1 = 33; b->lim.x2 = 212; b->lim.y2 = 47; b->tnum = EXTRALS_CIAMAINTERMINAL; b->on = true; b = &w->bt[T2D_BT_BackgroundWin_TGA__cia2]; b->lim.x1 = 427; b->lim.y1 = 89; b->lim.x2 = 732; b->lim.y2 = 112; b->tnum = EXTRALS_CIAMAINTERMINAL; b->on = true; //Fine Inizializzazione finestra BackGround //Inizializzazione finestra Error //La variabile sy della finestra verra usata per indicare la finestra di errore //0: Niente //1: ComError //2: DialError //3: SearchError w = &t2dWin[T2D_WIN_COMPUTER_ERROR]; w->NOTSTRETCHED = false; w->px = 300; w->py = 100; w->bm[T2D_BM_COMPUTER_COMERROR_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_ComError_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALERROR_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_DialError_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCHERROR_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_SearchError_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Error_Quit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Error_Quit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Error_DialUp_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_ERROR_OK_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Error_Ok_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_COMERROR_WIN].px = 0; w->bm[T2D_BM_COMPUTER_COMERROR_WIN].py = 0; w->bm[T2D_BM_COMPUTER_COMERROR_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALERROR_WIN].px = 0; w->bm[T2D_BM_COMPUTER_DIALERROR_WIN].py = 0; w->bm[T2D_BM_COMPUTER_DIALERROR_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCHERROR_WIN].px = 0; w->bm[T2D_BM_COMPUTER_SEARCHERROR_WIN].py = 0; w->bm[T2D_BM_COMPUTER_SEARCHERROR_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON].px = 146; w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON].py = 67; w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON].px = 227; w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON].py = 70; w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON].px = 76; w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON].py = 70; w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_ERROR_OK_ON].px = 149; w->bm[T2D_BM_COMPUTER_ERROR_OK_ON].py = 71; w->bm[T2D_BM_COMPUTER_ERROR_OK_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_ERROR_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_COMERROR_WIN]); b = &w->bt[T2D_BT_COMPUTER_ERROR_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_COMERROR_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_ERROR_COMQUIT]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_ERROR_COMQUIT_ON]); b->tnum = EXTRALS_QUIT; b = &w->bt[T2D_BT_COMPUTER_ERROR_DIALQUIT]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_ERROR_DIALQUIT_ON]); b->tnum = EXTRALS_QUIT; b = &w->bt[T2D_BT_COMPUTER_ERROR_DIALUP]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_ERROR_DIALUP_ON]); b->tnum = EXTRALS_DIAL; b = &w->bt[T2D_BT_COMPUTER_ERROR_OK]; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_ERROR_OK_ON]); b->tnum = EXTRALS_OK; //ExtraLS b = &w->bt[T2D_BT_ComError_Win_TGA]; b->lim.x1 = 108; b->lim.y1 = 29; b->lim.x2 = 274; b->lim.y2 = 47; b->tnum = EXTRALS_NOCONNECTION; b = &w->bt[T2D_BT_DialError_Win_TGA]; b->lim.x1 = 79; b->lim.y1 = 29; b->lim.x2 = 319; b->lim.y2 = 48; b->tnum = EXTRALS_INVALIDNUMBER; b = &w->bt[T2D_BT_SearchError_Win_TGA]; b->lim.x1 = 121; b->lim.y1 = 33; b->lim.x2 = 266; b->lim.y2 = 49; b->tnum = EXTRALS_NODOCUMENTS; w->sy = 0; //Fine Inizializzazione finestra Error //Inizializzazione finestra DialUp w = &t2dWin[T2D_WIN_COMPUTER_DIALUP]; w->NOTSTRETCHED = false; w->px = 300; w->py = 100; w->bm[T2D_BM_COMPUTER_DIALUP_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUpWin.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_1_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_1_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_2_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_2_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_3_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_3_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_4_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_4_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_5_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_5_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_6_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_6_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_7_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_7_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_8_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_8_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_9_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_9_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_0_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_0_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_Enter_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_C_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_C_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_DialUp_Ok_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DIALUP_1_ON].px = 32; w->bm[T2D_BM_COMPUTER_DIALUP_1_ON].py = 124; w->bm[T2D_BM_COMPUTER_DIALUP_1_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_2_ON].px = 86; w->bm[T2D_BM_COMPUTER_DIALUP_2_ON].py = 124; w->bm[T2D_BM_COMPUTER_DIALUP_2_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_3_ON].px = 140; w->bm[T2D_BM_COMPUTER_DIALUP_3_ON].py = 124; w->bm[T2D_BM_COMPUTER_DIALUP_3_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_4_ON].px = 32; w->bm[T2D_BM_COMPUTER_DIALUP_4_ON].py = 178; w->bm[T2D_BM_COMPUTER_DIALUP_4_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_5_ON].px = 86; w->bm[T2D_BM_COMPUTER_DIALUP_5_ON].py = 178; w->bm[T2D_BM_COMPUTER_DIALUP_5_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_6_ON].px = 140; w->bm[T2D_BM_COMPUTER_DIALUP_6_ON].py = 178; w->bm[T2D_BM_COMPUTER_DIALUP_6_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_7_ON].px = 32; w->bm[T2D_BM_COMPUTER_DIALUP_7_ON].py = 232; w->bm[T2D_BM_COMPUTER_DIALUP_7_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_8_ON].px = 86; w->bm[T2D_BM_COMPUTER_DIALUP_8_ON].py = 232; w->bm[T2D_BM_COMPUTER_DIALUP_8_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_9_ON].px = 140; w->bm[T2D_BM_COMPUTER_DIALUP_9_ON].py = 232; w->bm[T2D_BM_COMPUTER_DIALUP_9_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_0_ON].px = 86; w->bm[T2D_BM_COMPUTER_DIALUP_0_ON].py = 286; w->bm[T2D_BM_COMPUTER_DIALUP_0_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON].px = 32; w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON].py = 286; w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_C_ON].px = 140; w->bm[T2D_BM_COMPUTER_DIALUP_C_ON].py = 286; w->bm[T2D_BM_COMPUTER_DIALUP_C_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON].px = 46; w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON].py = 338; w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON].px = 176; w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON].py = 9; w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_DIALUP_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_EXIT_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_1]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_1_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_2]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_2_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_3]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_3_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_4]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_4_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_5]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_5_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_6]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_6_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_7]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_7_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_8]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_8_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_9]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_9_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_0]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_0_ON]); b = &w->bt[T2D_BT_COMPUTER_DIALUP_ENTER]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_ENTER_ON]); b->tnum = EXTRALS_CLEAR; b = &w->bt[T2D_BT_COMPUTER_DIALUP_C]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_C_ON]); b->tnum = EXTRALS_CANCEL; b = &w->bt[T2D_BT_COMPUTER_DIALUP_OK]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DIALUP_OK_ON]); b->tnum = EXTRALS_OK; b = &w->bt[T2D_BT_COMPUTER_DIALUP_MOVE]; b->on = true; b->lim.x1 = 0; b->lim.y1 = 0; b->lim.x2 = 203; b->lim.y2 = 40; //Gestione Scritte w->bm[T2D_BM_COMPUTER_DIALUP_NUMBER].tnum = (T2D_TEXT_COMPUTER_DIALUP_NUMBER << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_DIALUP_NUMBER].px = 50; w->bm[T2D_BM_COMPUTER_DIALUP_NUMBER].py = 76; strcpy(w->text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, ""); w->text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].color = BLACK_FONT; //Gestione variabili strcpy(computerNumeroTel, ""); //ExtraLS b = &w->bt[T2D_BT_DialUpWin_TGA__Dial]; b->lim.x1 = 81; b->lim.y1 = 7; b->lim.x2 = 124; b->lim.y2 = 22; b->tnum = EXTRALS_DIAL; b->on = true; b = &w->bt[T2D_BT_DialUpWin_TGA__Enter]; b->lim.x1 = 22; b->lim.y1 = 48; b->lim.x2 = 184; b->lim.y2 = 67; b->tnum = EXTRALS_ENTERUSERNUMBER; b->on = true; b = &w->bt[T2D_BT_DialUpWin_TGA__Dialling]; b->lim.x1 = 40; b->lim.y1 = 74; b->lim.x2 = 167; b->lim.y2 = 92; b->tnum = EXTRALS_DIALLING; b->on = false; //Fine Inizializzazione finestra DialUp //Inizializzazione finestra Search w = &t2dWin[T2D_WIN_COMPUTER_SEARCH]; w->NOTSTRETCHED = false; w->px = 100; w->py = 100; w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_Alphabetical.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_CaseName.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_Search_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_Name_Text_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_SurName_Text_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_CaseName_Text_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Search_Year_Text_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN].px = 0; w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN].py = 0; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].px = 0; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].py = 0; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_WIN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].px = 282; w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].py = 257; w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].px = 130; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].py = 147; w->bm[T2D_BM_COMPUTER_SEARCH_NAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].px = 406; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].py = 147; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].px = 184; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].py = 147; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].px = 502; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].py = 147; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON].px = 653; w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON].py = 7; w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_SEARCH_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN]); b = &w->bt[T2D_BT_COMPUTER_SEARCH_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_SEARCH_ALPHABETICAL_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_SEARCH_SEARCH]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_SEARCH_SEARCH_ON]); b->tnum = EXTRALS_SEARCH; b = &w->bt[T2D_BT_COMPUTER_SEARCH_ALPHABETICAL]; b->on = true; b->lim.x1 = 38; b->lim.y1 = 51; b->lim.x2 = 168; b->lim.y2 = 83; b->tnum = EXTRALS_NAME; b = &w->bt[T2D_BT_COMPUTER_SEARCH_CASENAME]; b->on = true; b->lim.x1 = 166; b->lim.y1 = 51; b->lim.x2 = 291; b->lim.y2 = 83; b->tnum = EXTRALS_SUBJECT; b = &w->bt[T2D_BT_COMPUTER_SEARCH_NAME_TEXT]; b->on = true; b->on = true; b->lim.x1 = 133; b->lim.y1 = 150; b->lim.x2 = 298; b->lim.y2 = 172; b = &w->bt[T2D_BT_COMPUTER_SEARCH_SURNAME_TEXT]; b->on = true; b->on = true; b->lim.x1 = 409; b->lim.y1 = 150; b->lim.x2 = 574; b->lim.y2 = 172; b = &w->bt[T2D_BT_COMPUTER_SEARCH_CASENAME_TEXT]; b->lim.x1 = 187; b->lim.y1 = 150; b->lim.x2 = 352; b->lim.y2 = 172; b = &w->bt[T2D_BT_COMPUTER_SEARCH_YEAR_TEXT]; b->lim.x1 = 505; b->lim.y1 = 150; b->lim.x2 = 593; b->lim.y2 = 172; b = &w->bt[T2D_BT_COMPUTER_SEARCH_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_SEARCH_EXIT_ON]); //Gestione Scritte w->bm[T2D_BM_COMPUTER_SEARCH_NAME].tnum = (T2D_TEXT_COMPUTER_SEARCH_NAME << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SEARCH_NAME].px = 140; w->bm[T2D_BM_COMPUTER_SEARCH_NAME].py = 154; strcpy(w->text[T2D_TEXT_COMPUTER_SEARCH_NAME].text, ""); w->text[T2D_TEXT_COMPUTER_SEARCH_NAME].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_SEARCH_NAME].color = BLACK_FONT; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME].tnum = (T2D_TEXT_COMPUTER_SEARCH_SURNAME << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME].px = 420; w->bm[T2D_BM_COMPUTER_SEARCH_SURNAME].py = 154; strcpy(w->text[T2D_TEXT_COMPUTER_SEARCH_SURNAME].text, ""); w->text[T2D_TEXT_COMPUTER_SEARCH_SURNAME].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_SEARCH_SURNAME].color = BLACK_FONT; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].tnum = (T2D_TEXT_COMPUTER_SEARCH_CASENAME << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].px = 200; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].py = 154; w->bm[T2D_BM_COMPUTER_SEARCH_CASENAME].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SEARCH_CASENAME].text, ""); w->text[T2D_TEXT_COMPUTER_SEARCH_CASENAME].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_SEARCH_CASENAME].color = BLACK_FONT; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].tnum = (T2D_TEXT_COMPUTER_SEARCH_YEAR << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].px = 515; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].py = 154; w->bm[T2D_BM_COMPUTER_SEARCH_YEAR].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_COMPUTER_SEARCH_YEAR].text, ""); w->text[T2D_TEXT_COMPUTER_SEARCH_YEAR].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_SEARCH_YEAR].color = BLACK_FONT; //Gestione Variabili AlphaOrCase = 1; WhatText = 0; //ExtraLS b = &w->bt[T2D_BT_Search_Alphabetical_TGA__search]; b->lim.x1 = 319; b->lim.y1 = 9; b->lim.x2 = 370; b->lim.y2 = 23; b->tnum = EXTRALS_SEARCH; b->on = true; b = &w->bt[T2D_BT_Search_Alphabetical_TGA__findby]; b->lim.x1 = 36; b->lim.y1 = 32; b->lim.x2 = 98; b->lim.y2 = 48; b->tnum = EXTRALS_FINDBY; b->on = true; b = &w->bt[T2D_BT_Search_Alphabetical_TGA__name]; b->lim.x1 = 72; b->lim.y1 = 152; b->lim.x2 = 121; b->lim.y2 = 170; b->tnum = EXTRALS_NAME; b->on = true; b = &w->bt[T2D_BT_Search_Alphabetical_TGA__surname]; b->lim.x1 = 318; b->lim.y1 = 152; b->lim.x2 = 398; b->lim.y2 = 170; b->tnum = EXTRALS_SURNAME; b->on = true; b = &w->bt[T2D_BT_Search_Alphabetical_TGA__casename]; b->lim.x1 = 72; b->lim.y1 = 152; b->lim.x2 = 175; b->lim.y2 = 169; b->tnum = EXTRALS_CASENAME; b->on = false; b = &w->bt[T2D_BT_Search_Alphabetical_TGA__year]; b->lim.x1 = 448; b->lim.y1 = 152; b->lim.x2 = 496; b->lim.y2 = 169; b->tnum = EXTRALS_YEAR; b->on = false; //Fine Inizializzazione finestra Search //Inizializzazione finestra EMail w = &t2dWin[T2D_WIN_COMPUTER_EMAIL]; w->NOTSTRETCHED = false; w->px = 50; w->py = 100; w->bm[T2D_BM_COMPUTER_EMAIL_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_EMAIL_ICON_1].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_Icon.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_EMAIL_ICON_2].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_Icon.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_EMAIL_WIN].px = 0; w->bm[T2D_BM_COMPUTER_EMAIL_WIN].py = 0; w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON].px = 654; w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON].py = 8; w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_EMAIL_ICON_1].px = 60; w->bm[T2D_BM_COMPUTER_EMAIL_ICON_1].py = 110; w->bm[T2D_BM_COMPUTER_EMAIL_ICON_2].px = 60; w->bm[T2D_BM_COMPUTER_EMAIL_ICON_2].py = 170; //Gestione Tasti b = &w->bt[T2D_BT_COMPUTER_EMAIL_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_WIN]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_EMAIL_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_EXIT_ON]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_SCROLLUP]; b->on = true; b->lim.x1 = 612; b->lim.y1 = 82; b->lim.x2 = 627; b->lim.y2 = 98; b = &w->bt[T2D_BT_COMPUTER_EMAIL_SCROLLDOWN]; b->on = true; b->lim.x1 = 612; b->lim.y1 = 248; b->lim.x2 = 627; b->lim.y2 = 263; b = &w->bt[T2D_BT_COMPUTER_EMAIL_ICON_1]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_ICON_1]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_ICON_2]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_ICON_2]); //Gestione Scritte w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_1].tnum = (T2D_TEXT_COMPUTER_EMAIL_1 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_1].px = 150; w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_1].py = 125; strcpy(w->text[T2D_TEXT_COMPUTER_EMAIL_1].text, Sentence[init.Obj[oCOMPUTEREMAIL1].text[0]]); w->text[T2D_TEXT_COMPUTER_EMAIL_1].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_EMAIL_1].color = BLACK_FONT; w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_2].tnum = (T2D_TEXT_COMPUTER_EMAIL_2 << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_2].px = 150; w->bm[T2D_BM_COMPUTER_EMAIL_TEXT_2].py = 185; strcpy(w->text[T2D_TEXT_COMPUTER_EMAIL_2].text, Sentence[init.Obj[oCOMPUTEREMAIL2].text[0]]); w->text[T2D_TEXT_COMPUTER_EMAIL_2].font = FontKind::Computer; w->text[T2D_TEXT_COMPUTER_EMAIL_2].color = BLACK_FONT; //ExtraLS b = &w->bt[T2D_BT_EMail_Win_TGA__email]; b->lim.x1 = 313; b->lim.y1 = 10; b->lim.x2 = 371; b->lim.y2 = 24; b->tnum = EXTRALS_EMAIL; b->on = true; b = &w->bt[T2D_BT_EMail_Win_TGA__avail]; b->lim.x1 = 26; b->lim.y1 = 51; b->lim.x2 = 187; b->lim.y2 = 67; b->tnum = EXTRALS_AVAILABLEEMAIL; b->on = true; //Fine Inizializzazione finestra EMail //Inizializzazione finestra Document w = &t2dWin[T2D_WIN_COMPUTER_DOCUMENT]; w->NOTSTRETCHED = true; w->px = 100; w->py = 100; w->bm[T2D_BM_COMPUTER_DOCUMENT_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Win.tga", 0); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollUp_On.tga", 0); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollDown_On.tga", 0); w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", 0); /* w->bm[T2D_BM_COMPUTER_DOCUMENT_ANTONIOCORONA].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_AntonioCorona.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_JACOBKRENN].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_JacobKrenn.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_PETERDUKES].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_PeterDukes.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_VICTORVALENCIA].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_VictorValencia.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Mercury_1969_1.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Mercury_1969_2.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Mercury_1969_3.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Mercury_1969_4.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Confidence_1942_1.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Confidence_1942_2.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Confidence_1942_3.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Arl_1998_1.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_CONFIDENCE].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Conv_Confidence.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_MERCURY].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_Conv_Mercury.tga", 0 ); w->bm[T2D_BM_COMPUTER_DOCUMENT_GREGOR_MEM].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_GregorMem.tga", 0 ); */ w->bm[T2D_BM_COMPUTER_DOCUMENT_WIN].px = renderer.rInvFitX(0); w->bm[T2D_BM_COMPUTER_DOCUMENT_WIN].py = renderer.rInvFitY(0); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON].px = renderer.rInvFitX(461); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON].py = renderer.rInvFitY(57); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON].px = renderer.rInvFitX(461); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON].py = renderer.rInvFitY(437); w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON].px = renderer.rInvFitX(478); w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON].py = renderer.rInvFitY(9); w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_ANTONIOCORONA].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_ANTONIOCORONA].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_ANTONIOCORONA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_JACOBKRENN].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_JACOBKRENN].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_JACOBKRENN].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_PETERDUKES].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_PETERDUKES].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_PETERDUKES].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_VICTORVALENCIA].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_VICTORVALENCIA].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_VICTORVALENCIA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_MERCURY_1969_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONFIDENCE_1942_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_ARL_1998_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_CONFIDENCE].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_CONFIDENCE].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_CONFIDENCE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_MERCURY].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_MERCURY].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_CONV_MERCURY].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCUMENT_GREGOR_MEM].px = renderer.rInvFitX(26); w->bm[T2D_BM_COMPUTER_DOCUMENT_GREGOR_MEM].py = renderer.rInvFitY(66); w->bm[T2D_BM_COMPUTER_DOCUMENT_GREGOR_MEM].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCUMENT_WIN]); b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCUMENT_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_SCROLL]; b->on = true; b->lim.x1 = renderer.rInvFitX(26); b->lim.y1 = renderer.rInvFitY(66); b->lim.x2 = renderer.rInvFitX(456); b->lim.y2 = renderer.rInvFitY(473); b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCUMENT_EXIT_ON]); b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_SCROLLUP]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLUP_ON]); b = &w->bt[T2D_BT_COMPUTER_DOCUMENT_SCROLLDOWN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCUMENT_SCROLLDOWN_ON]); //ExtraLS b = &w->bt[T2D_BT_Document_Win_TGA]; b->lim.x1 = 176; b->lim.y1 = 12; b->lim.x2 = 304; b->lim.y2 = 29; b->tnum = EXTRALS_DOCUMENTVIEWER; b->on = true; //Fine Inizializzazione finestra Document //Inizializzazione finestra DocList w = &t2dWin[T2D_WIN_COMPUTER_DOCLIST]; w->NOTSTRETCHED = false; w->px = 100; w->py = 150; w->bm[T2D_BM_COMPUTER_DOCLIST_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_DocList_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollUp_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollDown_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_COMPUTER_DOCLIST_WIN].px = 0; w->bm[T2D_BM_COMPUTER_DOCLIST_WIN].py = 0; w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON].px = 274; w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON].py = 9; w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON].px = 245; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON].py = 52; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON].px = 245; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON].py = 209; w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON].tnum |= T2D_BM_OFF; //Tasti b = &w->bt[T2D_BT_COMPUTER_DOCLIST_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCLIST_WIN]); b = &w->bt[T2D_BT_COMPUTER_DOCLIST_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCLIST_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_DOCLIST_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCLIST_EXIT_ON]); b = &w->bt[T2D_BT_COMPUTER_DOCLIST_SCROLLUP]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLUP_ON]); b = &w->bt[T2D_BT_COMPUTER_DOCLIST_SCROLLDOWN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_DOCLIST_SCROLLDOWN_ON]); for (i = 0; i <= T2D_TEXT_COMPUTER_DOCLIST_LINES_END - T2D_TEXT_COMPUTER_DOCLIST_LINES_START; i++) { b = &w->bt[T2D_BT_COMPUTER_DOCLIST_LINES_START + i]; b->on = true; b->lim.x1 = 37; b->lim.y1 = 60 + 20 * i; b->lim.x2 = 235; b->lim.y2 = 80 + 20 * i; w->bm[T2D_BM_COMPUTER_DOCLIST_LINES_START + i].tnum = ((T2D_TEXT_COMPUTER_DOCLIST_LINES_START + i) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_COMPUTER_DOCLIST_LINES_START + i].px = 45; w->bm[T2D_BM_COMPUTER_DOCLIST_LINES_START + i].py = 65 + 20 * i; strcpy(w->text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + i].text, ""); w->text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + i].font = FontKind::PDA; w->text[T2D_TEXT_COMPUTER_DOCLIST_LINES_START + i].color = BLUE_FONT; } //ExtraLS b = &w->bt[T2D_BT_DocList_Win_TGA]; b->lim.x1 = 32; b->lim.y1 = 29; b->lim.x2 = 113; b->lim.y2 = 45; b->tnum = EXTRALS_DOCUMENTS; b->on = true; //Fine Inizializzazione finestra DocList //Inizializzazione finestra EMail Viewer w = &t2dWin[T2D_WIN_COMPUTER_EMAIL_VIEWER]; w->NOTSTRETCHED = true; w->px = 100; w->py = 100; w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_WIN].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_Viewer_Win.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollUp_On.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Document_ScrollDown_On.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Computer_Exit_On.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_1].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_1.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_2].tnum = LoadDDBitmap(game, "t2d\\Computer_EMail_2.tga", 0); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON].px = renderer.rInvFitX(486); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON].py = renderer.rInvFitY(46); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON].px = renderer.rInvFitX(486); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON].py = renderer.rInvFitY(209); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON].px = renderer.rInvFitX(500); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON].py = renderer.rInvFitY(7); w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_EMAIL_1].px = renderer.rInvFitX(35); w->bm[T2D_BM_COMPUTER_EMAIL_1].py = renderer.rInvFitY(59); w->bm[T2D_BM_COMPUTER_EMAIL_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_EMAIL_2].px = renderer.rInvFitX(35); w->bm[T2D_BM_COMPUTER_EMAIL_2].py = renderer.rInvFitY(59); w->bm[T2D_BM_COMPUTER_EMAIL_2].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_WIN]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_WIN]); b->lim.y2 = 30; b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLL]; b->on = true; b->lim.x1 = 35; b->lim.y1 = 59; b->lim.x2 = 465; b->lim.y2 = 240; b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLLUP]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLUP_ON]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_SCROLLDOWN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_SCROLLDOWN_ON]); b = &w->bt[T2D_BT_COMPUTER_EMAIL_VIEWER_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_COMPUTER_EMAIL_VIEWER_EXIT_ON]); //ExtraLS b = &w->bt[T2D_BT_EMail_Viewer_Win_TGA]; b->lim.x1 = 185; b->lim.y1 = 9; b->lim.x2 = 307; b->lim.y2 = 25; b->tnum = EXTRALS_EMAILVIEWER; b->on = true; //Fine Inizializzazione finestra EMail Viewer WinActive[0] = T2D_WIN_COMPUTER_BACKGROUND; WinActive[1] = T2D_WIN_COMPUTER_DIALUP; //bIngnoreDIKeyboard = true; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = 0; computerCurrentDocument = -1; computerCurrentEMail = -1; computerNumeroTel[0] = 0; computerConnectStr[0] = 0; searchName.clear(); searchSurName.clear(); searchCaseName.clear(); searchYear.clear(); /*//Scritte Iniziali w = &t2dWin[T2D_WIN_COMPUTER_BACKGROUND]; strcpy( w->text[T2D_TEXT_COMPUTER_SCRITTE_1].text, "Loading CIAOS" ); strcpy( w->text[T2D_TEXT_COMPUTER_SCRITTE_2].text, "Loading Dialup" ); strcpy( w->text[T2D_TEXT_COMPUTER_SCRITTE_3].text, "Insert Telephone Number" ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_DEFAULT, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_1, TRUE, NULL, NULL, NULL ); Event( EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_WRITE_DELAY, 0, EFFECT_WAIT, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_2, TRUE, NULL, NULL, NULL ); Event( EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_WRITE_DELAY, 0, EFFECT_WAIT, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_3, TRUE, NULL, NULL, NULL ); Event( EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_WRITE_DELAY, 0, EFFECT_WAIT, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_1, FALSE, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_2, FALSE, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_3, FALSE, NULL, NULL, NULL ); w->bm[T2D_BM_COMPUTER_SCRITTE_1].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SCRITTE_2].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SCRITTE_3].tnum &= ~T2D_BM_OFF; Event( EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_WRITE_DELAY, 0, EFFECT_WAIT, NULL, NULL, NULL ); w->bm[T2D_BM_COMPUTER_SCRITTE_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SCRITTE_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_COMPUTER_SCRITTE_3].tnum |= T2D_BM_OFF; Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_1, FALSE, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_2, FALSE, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETBITMAP, MP_WAITA, T2D_WIN_COMPUTER_BACKGROUND, T2D_BM_COMPUTER_SCRITTE_3, FALSE, NULL, NULL, NULL ); Event( EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, TRUE, NULL, NULL, NULL );*/ break; case tDIARIO: w = &t2dWin[T2D_WIN_DIARIO]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; w->bm[T2D_BM_DIARIO_PAGE_1].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_3].tnum = LoadDDBitmap(game, "t2d\\Diario_Page3.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON].tnum = LoadDDBitmap(game, "t2d\\Diario_Page_Left_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON].tnum = LoadDDBitmap(game, "t2d\\Diario_Page_Right_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\Diario_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_1].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text1.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_2].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text2.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_3].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text3.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_4].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text4.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_5].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text5.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_6].tnum = LoadDDBitmap(game, "t2d\\Diario_Page1_Text6.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_1].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text1.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_2].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text2.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_3].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text3.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_4].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text4.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_5].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text5.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_6].tnum = LoadDDBitmap(game, "t2d\\Diario_Page2_Text6.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_1].tnum = LoadDDBitmap(game, "t2d\\Diario_Page3_Text1.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_2].tnum = LoadDDBitmap(game, "t2d\\Diario_Page3_Text2.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_3].tnum = LoadDDBitmap(game, "t2d\\Diario_Page3_Text3.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_4].tnum = LoadDDBitmap(game, "t2d\\Diario_Page3_Text4.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_1].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text1.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_2].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text2.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_3].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text3.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_4].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text4.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_5].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text5.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_6].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text6.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_7].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text7.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_8].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text8.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_9].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text9.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_10].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text10.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_11].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text11.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_12].tnum = LoadDDBitmap(game, "t2d\\Diario_Page4_Text12.tga", rSURFACESTRETCH); w->bm[T2D_BM_DIARIO_PAGE_1].px = 0; w->bm[T2D_BM_DIARIO_PAGE_1].py = 0; w->bm[T2D_BM_DIARIO_PAGE_1].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2].px = 0; w->bm[T2D_BM_DIARIO_PAGE_2].py = 0; w->bm[T2D_BM_DIARIO_PAGE_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_3].px = 0; w->bm[T2D_BM_DIARIO_PAGE_3].py = 0; w->bm[T2D_BM_DIARIO_PAGE_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4].px = 0; w->bm[T2D_BM_DIARIO_PAGE_4].py = 0; w->bm[T2D_BM_DIARIO_PAGE_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON].px = 17; w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON].py = 549; w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON].px = 739; w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON].py = 551; w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_EXIT_ON].px = 369; w->bm[T2D_BM_DIARIO_EXIT_ON].py = 20; w->bm[T2D_BM_DIARIO_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_1].px = 65; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_1].py = 76; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_2].px = 157; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_2].py = 227; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_3].px = 52; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_3].py = 322; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_4].px = 427; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_4].py = 83; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_5].px = 527; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_5].py = 173; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_5].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_6].px = 441; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_6].py = 336; w->bm[T2D_BM_DIARIO_PAGE_1_TEXT_6].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_1].px = 51; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_1].py = 52; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_2].px = 178; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_2].py = 172; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_3].px = 24; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_3].py = 312; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_4].px = 424; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_4].py = 67; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_5].px = 574; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_5].py = 221; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_5].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_6].px = 442; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_6].py = 437; w->bm[T2D_BM_DIARIO_PAGE_2_TEXT_6].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_1].px = 55; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_1].py = 49; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_2].px = 83; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_2].py = 286; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_3].px = 462; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_3].py = 78; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_4].px = 466; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_4].py = 319; w->bm[T2D_BM_DIARIO_PAGE_3_TEXT_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_1].px = 76; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_1].py = 78; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_2].px = 72; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_2].py = 106; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_3].px = 72; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_3].py = 140; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_3].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_4].px = 69; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_4].py = 168; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_4].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_5].px = 71; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_5].py = 201; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_5].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_6].px = 69; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_6].py = 233; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_6].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_7].px = 66; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_7].py = 264; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_7].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_8].px = 64; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_8].py = 296; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_8].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_9].px = 62; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_9].py = 324; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_9].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_10].px = 58; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_10].py = 357; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_10].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_11].px = 58; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_11].py = 390; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_11].tnum |= T2D_BM_OFF; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_12].px = 57; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_12].py = 421; w->bm[T2D_BM_DIARIO_PAGE_4_TEXT_12].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_DIARIO_PAGE_LEFT]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_DIARIO_PAGE_LEFT_ON]); b = &w->bt[T2D_BT_DIARIO_PAGE_RIGHT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_DIARIO_PAGE_RIGHT_ON]); b = &w->bt[T2D_BT_DIARIO_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_DIARIO_EXIT_ON]); b->tnum = EXTRALS_EXIT; for (i = T2D_BT_DIARIO_PAGE_1_TEXT_1; i <= T2D_BT_DIARIO_PAGE_1_TEXT_6; i++) { b = &w->bt[i]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[i]); } for (i = T2D_BT_DIARIO_PAGE_2_TEXT_1; i <= T2D_BT_DIARIO_PAGE_2_TEXT_6; i++) { b = &w->bt[i]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[i]); } for (i = T2D_BT_DIARIO_PAGE_3_TEXT_1; i <= T2D_BT_DIARIO_PAGE_3_TEXT_4; i++) { b = &w->bt[i]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[i]); } for (i = T2D_BT_DIARIO_PAGE_4_TEXT_1; i <= T2D_BT_DIARIO_PAGE_4_TEXT_12; i++) { b = &w->bt[i]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[i]); } PlayerSpeak(game, init.Obj[o34DIARIOAP].action[CurPlayer]); //else PlayerSpeak( init.Obj[oDIARIOAP+(CurButton-T2D_BT_DIARIO_PAGE_2_TEXT_1)].examine[CurPlayer] ); WinActive[0] = T2D_WIN_DIARIO; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; diarioCurrentPage = 1; break; case tPDA: //Inizializzazione finestra Main w = &t2dWin[T2D_WIN_PDA_MAIN]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; w->bm[T2D_BM_PDA_MAIN_WIN].tnum = LoadDDBitmap(game, "t2d\\PDA_Main_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_MAIN_TONE_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Main_Tone_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_MAIN_LOG_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Main_Log_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_MAIN_QUIT_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Main_Quit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_MAIN_WIN].px = 0; w->bm[T2D_BM_PDA_MAIN_WIN].py = 0; w->bm[T2D_BM_PDA_MAIN_WIN].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_MAIN_TONE_ON].px = 68; w->bm[T2D_BM_PDA_MAIN_TONE_ON].py = 79; w->bm[T2D_BM_PDA_MAIN_TONE_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_MAIN_LOG_ON].px = 99; w->bm[T2D_BM_PDA_MAIN_LOG_ON].py = 227; w->bm[T2D_BM_PDA_MAIN_LOG_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_MAIN_TIME].px = 200; w->bm[T2D_BM_PDA_MAIN_TIME].py = 200; w->bm[T2D_BM_PDA_MAIN_TIME].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_MAIN_QUIT_ON].px = 719; w->bm[T2D_BM_PDA_MAIN_QUIT_ON].py = 503; w->bm[T2D_BM_PDA_MAIN_QUIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_PDA_MAIN_TONE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_MAIN_TONE_ON]); b->tnum = EXTRALS_TONESEQUENCER; b = &w->bt[T2D_BT_PDA_MAIN_LOG]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_MAIN_LOG_ON]); b->tnum = EXTRALS_LOG; b = &w->bt[T2D_BT_PDA_MAIN_QUIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_MAIN_QUIT_ON]); b->tnum = EXTRALS_QUIT; w->bm[T2D_BM_PDA_MAIN_TIME].tnum |= ((T2D_TEXT_PDA_MAIN_TIME) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_PDA_MAIN_TIME].px = 690; w->bm[T2D_BM_PDA_MAIN_TIME].py = 360; w->text[T2D_TEXT_PDA_MAIN_TIME].font = FontKind::PDA; w->text[T2D_TEXT_PDA_MAIN_TIME].color = GREEN_FONT; if (t3dCurTime >= 1300) { snprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, T2D_MAX_TEXTS_IN_WIN, "%04d", t3dCurTime - 1200); w->text[T2D_TEXT_PDA_MAIN_TIME].text[5] = 0; w->text[T2D_TEXT_PDA_MAIN_TIME].text[4] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[3]; w->text[T2D_TEXT_PDA_MAIN_TIME].text[3] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[2]; w->text[T2D_TEXT_PDA_MAIN_TIME].text[2] = ':'; strcat(w->text[T2D_TEXT_PDA_MAIN_TIME].text, " PM"); } else { snprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, T2D_MAX_TEXTS_IN_WIN, "%04d", t3dCurTime); w->text[T2D_TEXT_PDA_MAIN_TIME].text[5] = 0; w->text[T2D_TEXT_PDA_MAIN_TIME].text[4] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[3]; w->text[T2D_TEXT_PDA_MAIN_TIME].text[3] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[2]; w->text[T2D_TEXT_PDA_MAIN_TIME].text[2] = ':'; strcat(w->text[T2D_TEXT_PDA_MAIN_TIME].text, " AM"); } //Fine Inizializzazione finestra Main //Inizializzazione finestra Log Viewer w = &t2dWin[T2D_WIN_PDA_LOG]; w->NOTSTRETCHED = false; w->px = 30; w->py = 31; w->bm[T2D_BM_PDA_LOG_WIN].tnum = LoadDDBitmap(game, "t2d\\PDA_Log_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_ScrollUp_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_ScrollDown_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_LOG_SB].tnum = LoadDDBitmap(game, "t2d\\PDA_Log_SB.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_LOG_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_LOG_WIN].px = 0; w->bm[T2D_BM_PDA_LOG_WIN].py = 0; w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON].px = 696; w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON].py = 45; w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON].px = 696; w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON].py = 333; w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_LOG_SB].px = 696; w->bm[T2D_BM_PDA_LOG_SB].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_LOG_EXIT_ON].px = 720; w->bm[T2D_BM_PDA_LOG_EXIT_ON].py = 6; w->bm[T2D_BM_PDA_LOG_EXIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_PDA_LOG_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_WIN]); b = &w->bt[T2D_BT_PDA_LOG_SCROLL]; b->on = true; b->lim.x1 = 23; b->lim.y1 = 47; b->lim.x2 = 692; b->lim.y2 = 345; b = &w->bt[T2D_BT_PDA_LOG_SCROLLUP]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_SCROLLUP_ON]); b = &w->bt[T2D_BT_PDA_LOG_SCROLLDOWN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_SCROLLDOWN_ON]); b = &w->bt[T2D_BT_PDA_LOG_SB]; b->on = false; b->lim.x1 = 696; b->lim.y1 = 0; b->lim.x2 = 710; b->lim.y2 = 0; b = &w->bt[T2D_BT_PDA_LOG_BARRA]; b->on = true; b->lim.x1 = 696; b->lim.y1 = 58; b->lim.x2 = 711; b->lim.y2 = 333; b = &w->bt[T2D_BT_PDA_LOG_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_EXIT_ON]); for (i = 0; i < T2D_BM_PDA_LOG_DATA_END - T2D_BM_PDA_LOG_DATA_START; i++) { w->bm[T2D_BM_PDA_LOG_DATA_START + i].tnum = ((T2D_TEXT_PDA_LOG_DATA_START + i) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_PDA_LOG_DATA_START + i].px = T2D_PDA_LOG_DATA_XI; w->bm[T2D_BM_PDA_LOG_DATA_START + i].py = 0; strcpy(w->text[T2D_TEXT_PDA_LOG_DATA_START + i].text, ""); w->text[T2D_TEXT_PDA_LOG_DATA_START + i].font = FontKind::PDA; w->text[T2D_TEXT_PDA_LOG_DATA_START + i].color = GRAY_FONT; } for (i = 0; i < T2D_BM_PDA_LOG_TEXT_END - T2D_BM_PDA_LOG_TEXT_START; i++) { w->bm[T2D_BM_PDA_LOG_TEXT_START + i].tnum = ((T2D_TEXT_PDA_LOG_TEXT_START + i) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_PDA_LOG_TEXT_START + i].px = T2D_PDA_LOG_TEXT_XI; w->bm[T2D_BM_PDA_LOG_TEXT_START + i].py = 0; w->bm[T2D_BM_PDA_LOG_TEXT_START].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_PDA_LOG_TEXT_START + i].text, ""); w->text[T2D_TEXT_PDA_LOG_TEXT_START + i].font = FontKind::PDA; } //ExtraLS b = &w->bt[T2D_BT_PDA_Log_Win_TGA]; b->lim.x1 = 16; b->lim.y1 = 5; b->lim.x2 = 84; b->lim.y2 = 19; b->tnum = EXTRALS_LOGVIEWER; b->on = true; //Fine Inizializzazione Log Viewer //Inizializzazione finestra Tone Sequencer w = &t2dWin[T2D_WIN_PDA_TONE]; w->NOTSTRETCHED = false; w->px = 30; w->py = 31; w->bm[T2D_BM_PDA_TONE_WIN].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_HELP_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Help_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_WAVE_1].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Seq_231073.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_WAVE_2].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Seq_231074.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_REDLINE].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_RedLine.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_BARRA_1].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Barra.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_BARRA_2].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Barra.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Acquire_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_PROCESS_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Process_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_RISULTATO].tnum = LoadDDBitmap(game, "t2d\\PDA_Tone_Risultato.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_TONE_WIN].px = 0; w->bm[T2D_BM_PDA_TONE_WIN].py = 0; w->bm[T2D_BM_PDA_TONE_HELP_ON].px = 719; w->bm[T2D_BM_PDA_TONE_HELP_ON].py = 24; w->bm[T2D_BM_PDA_TONE_HELP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_EXIT_ON].px = 719; w->bm[T2D_BM_PDA_TONE_EXIT_ON].py = 6; w->bm[T2D_BM_PDA_TONE_EXIT_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_WAVE_1].px = T2D_PDA_TONE_XI; w->bm[T2D_BM_PDA_TONE_WAVE_1].py = 46; w->bm[T2D_BM_PDA_TONE_WAVE_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_WAVE_2].px = T2D_PDA_TONE_XI; w->bm[T2D_BM_PDA_TONE_WAVE_2].py = 169; w->bm[T2D_BM_PDA_TONE_WAVE_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_REDLINE].px = T2D_PDA_TONE_XI; w->bm[T2D_BM_PDA_TONE_REDLINE].py = 46; w->bm[T2D_BM_PDA_TONE_REDLINE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_BARRA_1].px = 126; w->bm[T2D_BM_PDA_TONE_BARRA_1].py = 307; w->bm[T2D_BM_PDA_TONE_BARRA_1].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_BARRA_2].px = 126; w->bm[T2D_BM_PDA_TONE_BARRA_2].py = 339; w->bm[T2D_BM_PDA_TONE_BARRA_2].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON].px = 37; w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON].py = 305; w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_PROCESS_ON].px = 37; w->bm[T2D_BM_PDA_TONE_PROCESS_ON].py = 335; w->bm[T2D_BM_PDA_TONE_PROCESS_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_RISULTATO].px = 510; w->bm[T2D_BM_PDA_TONE_RISULTATO].py = 320; w->bm[T2D_BM_PDA_TONE_RISULTATO].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_PDA_TONE_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_TONE_WIN]); b = &w->bt[T2D_BT_PDA_TONE_HELP]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_TONE_HELP_ON]); b = &w->bt[T2D_BT_PDA_TONE_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_TONE_EXIT_ON]); b = &w->bt[T2D_BT_PDA_TONE_ACQUIRE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_TONE_ACQUIRE_ON]); b->tnum = EXTRALS_ACQUIRE; b = &w->bt[T2D_BT_PDA_TONE_PROCESS]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_TONE_PROCESS_ON]); b->tnum = EXTRALS_PROCESS; //ExtraLS b = &w->bt[T2D_BT_PDA_Tone_Win_TGA]; b->lim.x1 = 16; b->lim.y1 = 5; b->lim.x2 = 84; b->lim.y2 = 19; b->tnum = EXTRALS_TONESEQUENCER; b->on = true; //Fine Inizializzazione finestra Tone Sequencer //Inizializzazione finestra Help w = &t2dWin[T2D_WIN_PDA_HELP]; w->NOTSTRETCHED = false; w->px = 30; w->py = 31; w->bm[T2D_BM_PDA_HELP_WIN].tnum = LoadDDBitmap(game, "t2d\\PDA_Help_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_HELP_WIN2].tnum = LoadDDBitmap(game, "t2d\\PDA_Help_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_HELP_SCROLLUP_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_ScrollUp_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_HELP_SCROLLDOWN_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_ScrollDown_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_HELP_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\PDA_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_PDA_HELP_WIN].px = 0; w->bm[T2D_BM_PDA_HELP_WIN].py = 0; w->bm[T2D_BM_PDA_HELP_WIN2].px = 0; w->bm[T2D_BM_PDA_HELP_WIN2].py = 0; w->bm[T2D_BM_PDA_HELP_SCROLLUP_ON].px = 327; w->bm[T2D_BM_PDA_HELP_SCROLLUP_ON].py = 39; w->bm[T2D_BM_PDA_HELP_SCROLLUP_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_HELP_SCROLLDOWN_ON].px = 327; w->bm[T2D_BM_PDA_HELP_SCROLLDOWN_ON].py = 324; w->bm[T2D_BM_PDA_HELP_SCROLLDOWN_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_HELP_EXIT_ON].px = 330; w->bm[T2D_BM_PDA_HELP_EXIT_ON].py = 6; w->bm[T2D_BM_PDA_HELP_EXIT_ON].tnum |= T2D_BM_OFF; b = &w->bt[T2D_BT_PDA_HELP_WIN]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_WIN]); b = &w->bt[T2D_BT_PDA_HELP_MOVE]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_LOG_WIN]); b->lim.y2 = 20; b = &w->bt[T2D_BT_PDA_HELP_SCROLL]; b->on = true; b->lim.x1 = 13; b->lim.y1 = 40; b->lim.x2 = 322; b->lim.y2 = 335; b = &w->bt[T2D_BT_PDA_HELP_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_PDA_HELP_EXIT_ON]); for (i = 0; i < T2D_BM_PDA_HELP_TEXT_END - T2D_BM_PDA_HELP_TEXT_START; i++) { w->bm[T2D_BM_PDA_HELP_TEXT_START + i].tnum = ((T2D_TEXT_PDA_HELP_START + i) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_PDA_HELP_TEXT_START + i].px = T2D_PDA_HELP_TEXT_XI; w->bm[T2D_BM_PDA_HELP_TEXT_START + i].py = T2D_PDA_HELP_TEXT_YI + 20 * i; w->bm[T2D_BM_PDA_HELP_TEXT_START].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_PDA_HELP_START + i].text, ""); w->text[T2D_TEXT_PDA_HELP_START + i].font = FontKind::PDA; w->text[T2D_TEXT_PDA_HELP_START + i].color = GREEN_FONT; } //ExtraLS b = &w->bt[T2D_BT_Help_Win_TGA]; b->lim.x1 = 19; b->lim.y1 = 5; b->lim.x2 = 49; b->lim.y2 = 20; b->tnum = EXTRALS_HELP; b->on = true; //Fine Inizializzazione finestra Help WinActive[0] = T2D_WIN_PDA_MAIN; //bIngnoreDIKeyboard = true; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = 0; StartAcquiring = TheMessage->lparam[0]; // i28WALKMANOK if (StartAcquiring == i28WALKMANOK) { _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_PDA_TONE, 0, true, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DCONTINUE, MP_DEFAULT, 0, 0, T2D_PDA_TONE_AQUIRING, nullptr, nullptr, nullptr); } //Cerca il MainTitle for (i = 0; i < MAX_PDALOGS; i++) if (init.PDALog[i].flags & PDA_MAIN) MainTitle = i; CurrentLogPos = 0; while ((!(init.PDALog[CurrentLogPos].flags & ON)) && (CurrentLogPos < MAX_PDALOGS)) CurrentLogPos++; NumMenus = 0; CurrentLogMenu = 0; PDAScrollLine = 0; RefreshLog(game, RESTARTALL); RefreshLog(game, REFRESH); break; case tOPTIONS: { int32 LoadWindow_OffsetX = 0; int32 LoadWindow_OffsetY = 0; LoadWindow_OffsetX = -100; if (bShowOnlyLoadWindow) { /*LoadWindow_OffsetX = -100; */ LoadWindow_OffsetY = -50; bStartMenuActive = 1; } //Inizializzazione finestra Main w = &t2dWin[T2D_WIN_OPTIONS_MAIN]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; //Bitmaps w->bm[T2D_BM_OPTIONS_CONTORNO].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Contorno.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SAVE].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Save.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_LOAD].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Load.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Griglia.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Freccia_Su_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Freccia_Su_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Freccia_Giu_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Freccia_Giu_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Sound_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Music_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Speech_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Subtitles_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Sound_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Music_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Speech_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Subtitles_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SOUND_BARRA].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Barra.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Pirolo.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Barra.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Pirolo.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Barra.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_Pirolo.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_CONTORNO].px = LoadWindow_OffsetX + 223; w->bm[T2D_BM_OPTIONS_CONTORNO].py = LoadWindow_OffsetY + 59; w->bm[T2D_BM_OPTIONS_CONTORNO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SAVE].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 506; w->bm[T2D_BM_OPTIONS_SAVE].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 0; w->bm[T2D_BM_OPTIONS_SAVE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_LOAD].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 508; w->bm[T2D_BM_OPTIONS_LOAD].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 0; w->bm[T2D_BM_OPTIONS_LOAD].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_GRIGLIA].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 37; w->bm[T2D_BM_OPTIONS_GRIGLIA].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 75; w->bm[T2D_BM_OPTIONS_GRIGLIA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 519; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 85; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 519; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 85; w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 519; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 420; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 519; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 420; w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 50; w->bm[T2D_BM_OPTIONS_SOUND_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 60; w->bm[T2D_BM_OPTIONS_SOUND_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 44; w->bm[T2D_BM_OPTIONS_MUSIC_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 140; w->bm[T2D_BM_OPTIONS_MUSIC_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 50; w->bm[T2D_BM_OPTIONS_SPEECH_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 252; w->bm[T2D_BM_OPTIONS_SPEECH_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 40; w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 348; w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_OFF].px = w->bm[T2D_BM_OPTIONS_SOUND_ON].px; w->bm[T2D_BM_OPTIONS_SOUND_OFF].py = w->bm[T2D_BM_OPTIONS_SOUND_ON].py - 4; w->bm[T2D_BM_OPTIONS_SOUND_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].px = w->bm[T2D_BM_OPTIONS_MUSIC_ON].px - 2; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].py = w->bm[T2D_BM_OPTIONS_MUSIC_ON].py + 1; w->bm[T2D_BM_OPTIONS_MUSIC_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].px = w->bm[T2D_BM_OPTIONS_SPEECH_ON].px - 4; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].py = w->bm[T2D_BM_OPTIONS_SPEECH_ON].py - 9; w->bm[T2D_BM_OPTIONS_SPEECH_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].px = w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].px; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].py = w->bm[T2D_BM_OPTIONS_SUBTITLES_ON].py; w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_BARRA].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 200; w->bm[T2D_BM_OPTIONS_SOUND_BARRA].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 70; w->bm[T2D_BM_OPTIONS_SOUND_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].px = 0; w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].py = 0; w->bm[T2D_BM_OPTIONS_SOUND_PIROLO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 200; w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 164; w->bm[T2D_BM_OPTIONS_MUSIC_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].px = 0; w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].py = 0; w->bm[T2D_BM_OPTIONS_MUSIC_PIROLO].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 200; w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 262; w->bm[T2D_BM_OPTIONS_SPEECH_BARRA].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].px = 0; w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].py = 0; w->bm[T2D_BM_OPTIONS_SPEECH_PIROLO].tnum |= T2D_BM_OFF; if (bShowOnlyLoadWindow) { w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_MainMenu_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MAINMENU_ON].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_MainMenu_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].px = 330; w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].py = 536; w->bm[T2D_BM_OPTIONS_MAINMENU_OFF].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_MAINMENU_ON].px = 330; w->bm[T2D_BM_OPTIONS_MAINMENU_ON].py = 536; w->bm[T2D_BM_OPTIONS_MAINMENU_ON].tnum |= T2D_BM_OFF; } w->bm[T2D_BM_OPTIONS_WIN].px = 0; w->bm[T2D_BM_OPTIONS_WIN].py = 0; switch (LoadWindow_WhichBkg) { case 0: { w->bm[T2D_BM_OPTIONS_WIN].tnum = T2D_BM_OFF; } break; case 1: { w->bm[T2D_BM_OPTIONS_WIN].tnum = LoadDDBitmap(game, "t2d\\Extra_MainBkg.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_WIN].tnum &= ~T2D_BM_OFF; } break; case 2: { w->bm[T2D_BM_OPTIONS_WIN].tnum = LoadDDBitmap(game, "t2d\\Extra_GameOverBkg.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_WIN].tnum &= ~T2D_BM_OFF; } break; } LoadWindow_WhichBkg = 0; //Bitmaps salvataggi for (j = 0; j < 3; j++) for (i = 0; i < 3; i++) { w->bm[T2D_BM_OPTIONS_SAVE_START + j * 3 + i].px = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 37 + 170 * i; w->bm[T2D_BM_OPTIONS_SAVE_START + j * 3 + i].py = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 71 + 140 * j; w->bm[T2D_BM_OPTIONS_SAVE_START + j * 3 + i].tnum |= T2D_BM_OFF; } if (bShowOnlyLoadWindow) { b = &w->bt[T2D_BT_OPTIONS_MAINMENU]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_MAINMENU_OFF]); b->tnum = EXTRALS_MAINMENU; } else { //Tasti b = &w->bt[T2D_BT_OPTIONS_SAVE]; b->on = true; b->tnum = EXTRALS_SAVE; b->lim.x1 = 154; b->lim.y1 = 22; b->lim.x2 = 208; b->lim.y2 = 44; b = &w->bt[T2D_BT_OPTIONS_LOAD]; b->on = true; b->tnum = EXTRALS_LOAD; b->lim.x1 = 268; b->lim.y1 = 22; b->lim.x2 = 322; b->lim.y2 = 44; b = &w->bt[T2D_BT_OPTIONS_OPTIONS]; b->on = true; b->tnum = EXTRALS_OPTIONS; b->lim.x1 = 372; b->lim.y1 = 22; b->lim.x2 = 454; b->lim.y2 = 44; b = &w->bt[T2D_BT_OPTIONS_QUIT]; b->on = true; b->tnum = EXTRALS_QUIT; b->lim.x1 = 494; b->lim.y1 = 22; b->lim.x2 = 540; b->lim.y2 = 44; b = &w->bt[T2D_BT_OPTIONS_CLOSE]; b->on = true; b->tnum = EXTRALS_CLOSE; b->lim.x1 = 592; b->lim.y1 = 22; b->lim.x2 = 652; b->lim.y2 = 44; } b = &w->bt[T2D_BT_OPTIONS_FRECCIA_SU]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_FRECCIA_SU_ON]); b = &w->bt[T2D_BT_OPTIONS_FRECCIA_GIU]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_ON]); for (j = 0; j < 3; j++) for (i = 0; i < 3; i++) { b = &w->bt[T2D_BT_OPTIONS_SAVE_START + j * 3 + i]; b->on = true; b->lim.x1 = w->bm[T2D_BM_OPTIONS_CONTORNO].px + 52 + 170 * i; b->lim.y1 = w->bm[T2D_BM_OPTIONS_CONTORNO].py + 66 + 140 * j; b->lim.x2 = b->lim.x1 + 128; b->lim.y2 = b->lim.y1 + 96; } b = &w->bt[T2D_BT_OPTIONS_SOUND]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_SOUND_OFF]); b->tnum = EXTRALS_SOUND; b = &w->bt[T2D_BT_OPTIONS_MUSIC]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_MUSIC_OFF]); b->tnum = EXTRALS_MUSIC; b = &w->bt[T2D_BT_OPTIONS_SPEECH]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_SPEECH_OFF]); b->tnum = EXTRALS_SPEECH; b = &w->bt[T2D_BT_OPTIONS_SUBTITLES]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_SUBTITLES_OFF]); b->tnum = EXTRALS_SUBTITLES; b = &w->bt[T2D_BT_OPTIONS_SOUND_BARRA]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_SOUND_BARRA]); b = &w->bt[T2D_BT_OPTIONS_MUSIC_BARRA]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_MUSIC_BARRA]); b = &w->bt[T2D_BT_OPTIONS_SPEECH_BARRA]; b->on = false; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_OPTIONS_SPEECH_BARRA]); //Gestione Scritte for (j = 0; j < 3; j++) for (i = 0; i < 3; i++) { w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + j * 3 + i].tnum = ((T2D_TEXT_OPTIONS_SAVE_START + j * 3 + i) << T2D_BM2TEXT_SHIFT); w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + j * 3 + i].px = w->bm[T2D_BM_OPTIONS_SAVE_START + j * 3 + i].px; w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + j * 3 + i].py = w->bm[T2D_BM_OPTIONS_SAVE_START + j * 3 + i].py + 105; w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + j * 3 + i].tnum |= T2D_BM_OFF; strcpy(w->text[T2D_TEXT_OPTIONS_SAVE_START + j * 3 + i].text, ""); w->text[T2D_TEXT_OPTIONS_SAVE_START + j * 3 + i].font = FontKind::Standard; w->text[T2D_TEXT_OPTIONS_SAVE_START + j * 3 + i].color = WHITE_FONT; } //Settaggi iniziali WinActive[0] = T2D_WIN_OPTIONS_MAIN; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = 0; optionsCurrent = -1; optionsCurPos = 0; optionsSlot = 0; optionsWhat = 0; optionsSaveDescriptActive = false; NSaves = 0; RefreshSaveImg(game, 0, 2); CaricaSaves(game); SortSaves(); if (TheMessage->wparam1 == MPX_START_T2D_SAVE) { CurButtonWin_Override = T2D_WIN_OPTIONS_MAIN; CurButton_Override = T2D_BT_OPTIONS_SAVE; } if (TheMessage->wparam1 == MPX_START_T2D_LOAD) { CurButtonWin_Override = T2D_WIN_OPTIONS_MAIN; CurButton_Override = T2D_BT_OPTIONS_LOAD; } if (TheMessage->wparam1 == MPX_START_T2D_OPTIONS) { CurButtonWin_Override = T2D_WIN_OPTIONS_MAIN; CurButton_Override = T2D_BT_OPTIONS_OPTIONS; } break; } case tMAINMENU: //Inizializzazione finestra Main w = &t2dWin[T2D_WIN_MAINMENU_MAIN]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; //Bitmaps w->bm[T2D_BM_MAINMENU_WIN].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_PLAY_ON].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Play_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_PLAY_OFF].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Play_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_LOAD_ON].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Load_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_LOAD_OFF].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Load_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_EXIT_ON].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Exit_On.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_EXIT_OFF].tnum = LoadDDBitmap(game, "t2d\\MainMenu_Exit_Off.tga", rSURFACESTRETCH); w->bm[T2D_BM_MAINMENU_WIN].px = 0; w->bm[T2D_BM_MAINMENU_WIN].py = 0; w->bm[T2D_BM_MAINMENU_WIN].tnum &= ~T2D_BM_OFF; GetDDBitmapExtends(renderer, &tmp_rect, &w->bm[T2D_BM_MAINMENU_PLAY_ON]); w->bm[T2D_BM_MAINMENU_PLAY_ON].px = w->bm[T2D_BM_MAINMENU_PLAY_OFF].px = (800 - (tmp_rect.x2 - tmp_rect.x1)) / 2; w->bm[T2D_BM_MAINMENU_PLAY_ON].py = w->bm[T2D_BM_MAINMENU_PLAY_OFF].py = 146; w->bm[T2D_BM_MAINMENU_PLAY_ON].tnum |= T2D_BM_OFF; GetDDBitmapExtends(renderer, &tmp_rect, &w->bm[T2D_BM_MAINMENU_LOAD_ON]); w->bm[T2D_BM_MAINMENU_LOAD_ON].px = w->bm[T2D_BM_MAINMENU_LOAD_OFF].px = (800 - (tmp_rect.x2 - tmp_rect.x1)) / 2; w->bm[T2D_BM_MAINMENU_LOAD_ON].py = w->bm[T2D_BM_MAINMENU_LOAD_OFF].py = 278; w->bm[T2D_BM_MAINMENU_LOAD_ON].tnum |= T2D_BM_OFF; GetDDBitmapExtends(renderer, &tmp_rect, &w->bm[T2D_BM_MAINMENU_EXIT_ON]); w->bm[T2D_BM_MAINMENU_EXIT_ON].px = w->bm[T2D_BM_MAINMENU_EXIT_OFF].px = (800 - (tmp_rect.x2 - tmp_rect.x1)) / 2; w->bm[T2D_BM_MAINMENU_EXIT_ON].py = w->bm[T2D_BM_MAINMENU_EXIT_OFF].py = 414; w->bm[T2D_BM_MAINMENU_EXIT_ON].tnum |= T2D_BM_OFF; /* w->bm[T2D_BM_MAINMENU_START].px = 192; w->bm[T2D_BM_MAINMENU_START].py = 98; w->bm[T2D_BM_MAINMENU_START].tnum |= T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_LOAD].px = 228; w->bm[T2D_BM_MAINMENU_LOAD].py = 239; w->bm[T2D_BM_MAINMENU_LOAD].tnum |= T2D_BM_OFF; w->bm[T2D_BM_MAINMENU_QUIT].px = 302; w->bm[T2D_BM_MAINMENU_QUIT].py = 376; w->bm[T2D_BM_MAINMENU_QUIT].tnum |= T2D_BM_OFF; //Tasti b = &w->bt[T2D_BT_MAINMENU_START]; b->on = true; GetDDBitmapExtends( &b->lim, &w->bm[T2D_BM_MAINMENU_START] ); b = &w->bt[T2D_BT_MAINMENU_LOAD]; b->on = true; GetDDBitmapExtends( &b->lim, &w->bm[T2D_BM_MAINMENU_LOAD] ); b = &w->bt[T2D_BT_MAINMENU_QUIT]; b->on = true; GetDDBitmapExtends( &b->lim, &w->bm[T2D_BM_MAINMENU_QUIT] ); */ //Tasti b = &w->bt[T2D_BT_MAINMENU_PLAY]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_MAINMENU_PLAY_ON]); b->tnum = EXTRALS_PLAYTHEGAME; b = &w->bt[T2D_BT_MAINMENU_LOAD]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_MAINMENU_LOAD_ON]); b->tnum = EXTRALS_LOADAGAME; b = &w->bt[T2D_BT_MAINMENU_EXIT]; b->on = true; GetDDBitmapExtends(renderer, &b->lim, &w->bm[T2D_BM_MAINMENU_EXIT_ON]); b->tnum = EXTRALS_EXIT; //Settaggi iniziali WinActive[0] = T2D_WIN_MAINMENU_MAIN; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = 0; bStartMenuActive = 1; break; case tGAMEOVER: //Inizializzazione finestra Main w = &t2dWin[T2D_WIN_GAMEOVER_MAIN]; w->NOTSTRETCHED = false; w->px = 0; w->py = 0; //Bitmaps w->bm[T2D_BM_GAMEOVER_WIN].tnum = LoadDDBitmap(game, "t2d\\GAMEOVER_Win.tga", rSURFACESTRETCH); w->bm[T2D_BM_GAMEOVER_WIN].px = 0; w->bm[T2D_BM_GAMEOVER_WIN].py = 0; w->bm[T2D_BM_GAMEOVER_WIN].tnum &= ~T2D_BM_OFF; //ExtraLS b = &w->bt[T2D_BT_GameOver_Win_TGA]; b->lim.x1 = 206; b->lim.y1 = 264; b->lim.x2 = 604; b->lim.y2 = 332; b->tnum = EXTRALS_GAMEOVER; b->on = true; GameOverWindow_StartTime = timeGetTime(); //Settaggi iniziali WinActive[0] = T2D_WIN_GAMEOVER_MAIN; CurButton = 0; CurButtonWin = 0; LinkWinToMouse = 0; LinkWinX = 0; LinkWinY = 0; ScrollWithMouse = 0; break; } doT2DMouse(game); break; case ME_T2DSTOP: bPlayerInAnim = false; bPauseAllAnims = false; for (i = 0; i < T2D_MAX_WINDOWS; i++) { for (j = 0; j < T2D_MAX_BITMAPS_IN_WIN; j++) { t2dWin[i].bm[j].tnum |= T2D_BM_OFF; if (t2dWin[i].bm[j].tnum > 0) { rReleaseBitmap(t2dWin[i].bm[j].tnum); t2dWin[i].bm[j].tnum = 0; } } /* for( j=0; j< T2D_MAX_BUTTONS_IN_WIN; j++ ) if( t2dWin[i].bt[j].tnum > 0 ) { rReleaseBitmap( t2dWin[i].bt[j].tnum ); t2dWin[i].bt[j].tnum = 0; }*/ } for (uint k = 0; k < ARRAYSIZE(t2dWin); k++) t2dWin[k].reset(); memset(WinActive, 0, sizeof(WinActive)); switch (bT2DActive) { case tSCANNER: if (SelectorFlag) StartAnim(game, a297); break; case tCOMPUTER: if ((game._gameVars.getCurRoomId() == r17) && (init.Obj[o17COMPUTER].flags & EXTRA)) StartAnim(game, a1711); init.Obj[o17COMPUTER].flags &= ~EXTRA; break; case tOPTIONS: game._renderer->setCurCameraViewport(t3dCurCamera->Fov, bSuperView); bStartMenuActive = 0; break; case tMAINMENU: bStartMenuActive = 0; break; } bT2DActive = 0; if (TheMessage->wparam1 == STOP_T2D__LAUNCH_NEWGAME) { game.StartPlayingGame("r91.t3d"); // start intro if (!(LoaderFlags & T3D_DEBUGMODE)) _vm->_messageSystem.doEvent(EventClass::MC_DIALOG, ME_DIALOGSTART, MP_DEFAULT, dR000, 0, 0, nullptr, nullptr, nullptr); } if (TheMessage->wparam1 == STOP_T2D__LAUNCH_LOAD) { bShowOnlyLoadWindow = 1; _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTART, MP_DEFAULT, MPX_START_T2D_LOAD, 0, tOPTIONS, nullptr, nullptr, nullptr); } if (TheMessage->wparam1 == STOP_T2D__LAUNCH_MAINMENU) { StopPlayingGame(game); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSTART, MP_DEFAULT, 0, 0, tMAINMENU, nullptr, nullptr, nullptr); } //Riabilita DInput ResetDIKbd(); bIngnoreDIKeyboard = false; StartDiary(game, game._gameVars.getCurRoomId(), nullptr); if (Settati_PDA_items_durante_t2d) { _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, FRAME_PER_SECOND * 3, 0, EFFECT_DISPLAY_NEWLOGIMG, nullptr, nullptr, nullptr); Settati_PDA_items_durante_t2d = 0; } break; case ME_T2DSETBITMAP: if (TheMessage->bparam) t2dWin[TheMessage->wparam1].bm[TheMessage->wparam2].tnum &= ~T2D_BM_OFF; else t2dWin[TheMessage->wparam1].bm[TheMessage->wparam2].tnum |= T2D_BM_OFF; break; case ME_T2DSETBUTTON: t2dWin[TheMessage->wparam1].bt[TheMessage->wparam2].on = TheMessage->bparam; break; case ME_T2DSETWINDOW: ResetScreenBuffer(); if (TheMessage->bparam) { j = -1; for (i = 0; i < T2D_MAX_WINDOWS; i++) { if (WinActive[i] == TheMessage->wparam1) j = i; if (!WinActive[i]) { if (j == -1) { WinActive[i] = TheMessage->wparam1; } else { _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSWAPWINDOWS, MP_DEFAULT, WinActive[i - 1], WinActive[j], 0, nullptr, nullptr, nullptr); } break; } } } else { for (i = 0; i < T2D_MAX_WINDOWS; i++) if (WinActive[i] == TheMessage->wparam1) { for (j = i + 1; j < T2D_MAX_WINDOWS; j++) WinActive[j - 1] = WinActive[j]; WinActive[T2D_MAX_WINDOWS - 1] = 0; break; } } break; case ME_T2DSWAPWINDOWS: j = -1; for (i = 0; i < T2D_MAX_WINDOWS; i++) { if (WinActive[i] == TheMessage->wparam1) { if (j < 0) j = i; else { WinActive[i] = TheMessage->wparam2; WinActive[j] = TheMessage->wparam1; break; } } else if (WinActive[i] == TheMessage->wparam2) { if (j < 0) j = i; else { WinActive[i] = TheMessage->wparam1; WinActive[j] = TheMessage->wparam2; break; } } } ResetScreenBuffer(); break; case ME_T2DCONTINUE: if (!bT2DActive) return; switch (TheMessage->bparam) { case T2D_SCANNER_PREVIEWING: case T2D_SCANNER_SCANNING: if (TheMessage->wparam1-- <= 0) { t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].tnum |= T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI].tnum |= T2D_BM_OFF; j = renderer.getBitmapRealDimY(t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW].tnum); if (TheMessage->bparam == T2D_SCANNER_PREVIEWING) d = &t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_LOW]; else d = &t2dWin[T2D_WIN_SCANNER_BACKGROUND].bm[T2D_BM_SCANNER_BACKGROUND_PIC_HI]; d1 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_OFF]; d2 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_PROGRESS_ON]; if (TheMessage->wparam2 & 1) { d3 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF]; d4 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON]; } else { d3 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON]; d4 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF]; } d->tnum &= ~T2D_BM_OFF; // Pic di fondo d1->tnum &= ~T2D_BM_OFF; // Barra spenta d2->tnum &= ~T2D_BM_OFF; // Barra accesa d3->tnum &= ~T2D_BM_OFF; d4->tnum |= T2D_BM_OFF; TheMessage->wparam2 --; d->dy = (j * (T2D_SCANNER_SCANNING_STEPS - TheMessage->wparam2)) / T2D_SCANNER_SCANNING_STEPS; d1->ox = (T2D_SCANNER_SCANNING_DX * (T2D_SCANNER_SCANNING_STEPS - TheMessage->wparam2)); d2->dx = (T2D_SCANNER_SCANNING_DX * (T2D_SCANNER_SCANNING_STEPS - TheMessage->wparam2)); TheMessage->wparam1 = T2D_SCANNER_SCANNING_DELAY; if (TheMessage->wparam2 <= 0) { // Punto giusto 320, 503 di scansione d3 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_OFF]; d3->tnum &= ~T2D_BM_OFF; d4 = &t2dWin[T2D_WIN_SCANNER_PROGRESSBAR].bm[T2D_BM_SCANNER_PROGRESSBAR_SCANNING_ON]; d4->tnum |= T2D_BM_OFF; d1->tnum &= ~T2D_BM_OFF; // Barra spenta d1->ox = d1->oy = d1->dx = d1->dy = 0; d2->tnum |= T2D_BM_OFF; // Barra spenta d2->ox = d2->oy = d2->dx = d2->dy = 0; if (TheMessage->bparam == T2D_SCANNER_PREVIEWING) { d->ox = d->oy = d->dx = d->dy = 0; // Attiva bottone per selezionare l'area t2dWin[T2D_WIN_SCANNER_TOOLBAR].bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_OFF].tnum &= ~T2D_BM_OFF; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bm[T2D_BM_SCANNER_TOOLBAR_SELECTAREA_FREEZE].tnum |= T2D_BM_OFF; // Riattiva i bottoni della toolbar che servono t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_MOVE].on = true; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_EXIT].on = true; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF].on = true; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_SELECTAREA_OFF].on = true; } else { // Riattiva i bottoni della toolbar che servono t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_MOVE].on = true; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_EXIT].on = true; t2dWin[T2D_WIN_SCANNER_TOOLBAR].bt[T2D_BT_SCANNER_TOOLBAR_PREVIEW_OFF].on = true; } // Spegne finestra progress _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_SCANNER_PROGRESSBAR, 0, false, nullptr, nullptr, nullptr); } } TheMessage->flags |= MP_WAIT_RETRACE; if (TheMessage->wparam2 > 0) ReEvent(); break; case T2D_COMPUTER_CONNECTING: if (computerConnectStr[0] == 0) { //Partenza strcpy(computerConnectStr, Sentence[init.Obj[oCOMPUTERDIAL].text[0]]); strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerConnectStr); t2dWin[T2D_WIN_COMPUTER_DIALUP].bt[T2D_BT_DialUpWin_TGA__Dialling].on = true; LastTime = timeGetTime(); } else { CurTime = timeGetTime(); if (CurTime - LastTime > T2D_COMPUTER_CONNECTING_SPEED) { strcat(computerConnectStr, "."); strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerConnectStr); LastTime = CurTime; if (strlen(computerConnectStr) > 12) { //Disattiva finestra Dialup strcpy(computerConnectStr, Sentence[init.Obj[oCOMPUTERDIAL].text[1]]); strcpy(t2dWin[T2D_WIN_COMPUTER_DIALUP].text[T2D_TEXT_COMPUTER_DIALUP_NUMBER].text, computerConnectStr); _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_COMPUTER_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_COMPUTER_DIALUP, 0, false, nullptr, nullptr, nullptr); t2dWin[T2D_WIN_COMPUTER_BACKGROUND].bt[T2D_BT_COMPUTER_BACKGROUND_EMAIL].on = true; t2dWin[T2D_WIN_COMPUTER_BACKGROUND].bt[T2D_BT_COMPUTER_BACKGROUND_SEARCH].on = true; t2dWin[T2D_WIN_COMPUTER_DIALUP].bt[T2D_BT_DialUpWin_TGA__Dialling].on = false; break; } } } TheMessage->flags |= MP_WAIT_RETRACE; ReEvent(); break; case T2D_PDA_TONE_AQUIRING: w = &t2dWin[T2D_WIN_PDA_TONE]; if (w->bm[T2D_BM_PDA_TONE_BARRA_1].tnum & T2D_BM_OFF) { //Attiva le due onde if (StartAcquiring == i28WALKMANOK) { w->bm[T2D_BM_PDA_TONE_WAVE_1].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_WAVE_2].tnum &= ~T2D_BM_OFF; } w->bm[T2D_BM_PDA_TONE_WAVE_1].dx = 1; w->bm[T2D_BM_PDA_TONE_WAVE_2].dx = 1; //Attiva la barra w->bm[T2D_BM_PDA_TONE_BARRA_1].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_BARRA_1].dx = 1; //Disattiva i tasti Acquire e Process w->bt[T2D_BT_PDA_TONE_ACQUIRE].on = false; w->bt[T2D_BT_PDA_TONE_PROCESS].on = false; } else { if (w->bm[T2D_BM_PDA_TONE_WAVE_1].dx + 1 >= (T2D_PDA_TONE_XF - T2D_PDA_TONE_XI)) { //Mette a zero le Dx delle onde e della barra, che avranno cosi la dimensione totale w->bm[T2D_BM_PDA_TONE_WAVE_1].dx = 0; w->bm[T2D_BM_PDA_TONE_WAVE_2].dx = 0; w->bm[T2D_BM_PDA_TONE_BARRA_1].dx = 0; //Riattiva il tasto Process w->bt[T2D_BT_PDA_TONE_ACQUIRE].on = true; w->bt[T2D_BT_PDA_TONE_PROCESS].on = true; //Suono StartSound(game, wPDAALERT); if (StartAcquiring != i28WALKMANOK) { t2dBUTTON *button = nullptr; button = &w->bt[T2D_BT_PDA_TONE_WIN]; button->on = false; button = &w->bt[T2D_BT_PDA_TONE_HELP]; button->on = false; button = &w->bt[T2D_BT_PDA_TONE_EXIT]; button->on = false; button = &w->bt[T2D_BT_PDA_TONE_ACQUIRE]; button->on = false; button = &w->bt[T2D_BT_PDA_TONE_PROCESS]; button->on = false; SetHelpWin(game._fonts, &PDA_Tone_Acquire_Help_Func, 2, Sentence[init.Obj[oTONERHELP].text[4]], " "); _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_PDA_HELP, 0, true, nullptr, nullptr, nullptr); } break; } //Onde w->bm[T2D_BM_PDA_TONE_WAVE_1].dx += T2D_PDA_TONE_SPEED; w->bm[T2D_BM_PDA_TONE_WAVE_2].dx += T2D_PDA_TONE_SPEED; //Barra w->bm[T2D_BM_PDA_TONE_BARRA_1].dx = (w->bm[T2D_BM_PDA_TONE_WAVE_1].dx * T2D_PDA_TONE_BARRA_DX) / (T2D_PDA_TONE_XF - T2D_PDA_TONE_XI); if (w->bm[T2D_BM_PDA_TONE_BARRA_1].dx == 0) w->bm[T2D_BM_PDA_TONE_BARRA_1].dx = 1; } TheMessage->flags |= MP_WAIT_RETRACE; ReEvent(); break; case T2D_PDA_TONE_PROCESS: w = &t2dWin[T2D_WIN_PDA_TONE]; if (w->bm[T2D_BM_PDA_TONE_REDLINE].tnum & T2D_BM_OFF) { //Attiva la linea rossa... w->bm[T2D_BM_PDA_TONE_REDLINE].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_REDLINE].px = T2D_PDA_TONE_XI; //... e la barra w->bm[T2D_BM_PDA_TONE_BARRA_2].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_BARRA_2].dx = 1; //Disattiva il tasto process w->bt[T2D_BT_PDA_TONE_PROCESS].on = false; } else { //Linea w->bm[T2D_BM_PDA_TONE_REDLINE].px += T2D_PDA_TONE_SPEED; //Barra w->bm[T2D_BM_PDA_TONE_BARRA_2].dx = ((w->bm[T2D_BM_PDA_TONE_REDLINE].px - T2D_PDA_TONE_XI) * T2D_PDA_TONE_BARRA_DX) / (T2D_PDA_TONE_XF - T2D_PDA_TONE_XI); if (w->bm[T2D_BM_PDA_TONE_BARRA_2].dx == 0) w->bm[T2D_BM_PDA_TONE_BARRA_2].dx = 1; //Controlla se la linea � arrivata alla fine if (w->bm[T2D_BM_PDA_TONE_REDLINE].px + T2D_PDA_TONE_REDLINE_DX + 1 >= T2D_PDA_TONE_XF) { //Azzera linea e barra w->bm[T2D_BM_PDA_TONE_REDLINE].tnum |= T2D_BM_OFF; w->bm[T2D_BM_PDA_TONE_BARRA_2].tnum |= T2D_BM_OFF; //Riattiva il tasto Process w->bt[T2D_BT_PDA_TONE_PROCESS].on = true; //Attiva il testo del risultato if (StartAcquiring == i28WALKMANOK) w->bm[T2D_BM_PDA_TONE_RISULTATO].tnum &= ~T2D_BM_OFF; //Suono StartSound(game, wPDAALERT); break; } } TheMessage->flags |= MP_WAIT_RETRACE; ReEvent(); break; case T2D_CURSOR: if (CursorActive == false) break; CurTime = timeGetTime(); if (CurTime > LastTime + T2D_CURSOR_SPEED) { LastTime = CurTime; CursorVisible = !CursorVisible; w = &t2dWin[T2D_WIN_OPTIONS_MAIN]; if (CursorVisible) { i = strlen(CursorString); CursorString[i] = '|'; CursorString[i + 1] = 0; } else { i = strlen(CursorString); CursorString[i - 1] = 0; } } TheMessage->flags |= MP_WAIT_RETRACE; ReEvent(); break; } break; } } void CaricaSaves(WGame &game) { warning("STUBBED: CaricaSaves"); #if 0 int i, j; char DataFile[MAX_PATH]; char GfxFile[MAX_PATH]; char Temp[10]; char Data[T3D_NAMELEN + 8]; FILE *file; NSaves = 0; t3dForceNOFastFile(1); for (i = 0; i < T2D_OPTIONS_MAX_SAVES; i++) { snprintf(DataFile, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1); snprintf(GfxFile, MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), i + 1); // se non facessi cosi' la funzione t3dOpenFile() non trovando il file sparerebbe mille warning if (!t3dAccessFile(DataFile)) continue; file = t3dOpenFile(DataFile); if (!file) continue; Saves[NSaves].NFile = i + 1; for (j = 0; j < (T3D_NAMELEN + 2); j++) Data[j] = t3dRead8(); t3dCloseFile(); //Hour Temp[0] = Data[2 + 0]; Temp[1] = Data[2 + 1]; Temp[2] = 0; Saves[NSaves].Hour = atoi(Temp); Temp[0] = Data[2 + 3]; Temp[1] = Data[2 + 4]; Temp[2] = 0; Saves[NSaves].Min = atoi(Temp); Temp[0] = Data[2 + 6]; Temp[1] = Data[2 + 7]; Temp[2] = 0; Saves[NSaves].Sec = atoi(Temp); Temp[0] = Data[2 + 9]; Temp[1] = Data[2 + 10]; Temp[2] = 0; Saves[NSaves].Day = atoi(Temp); Temp[0] = Data[2 + 12]; Temp[1] = Data[2 + 13]; Temp[2] = 0; Saves[NSaves].Month = atoi(Temp); Temp[0] = Data[2 + 15]; Temp[1] = Data[2 + 16]; Temp[2] = Data[2 + 17]; Temp[3] = Data[2 + 18]; Temp[4] = 0; Saves[NSaves].Year = atoi(Temp); NSaves++; } #endif t3dForceNOFastFile(0); } void SortSaves() { warning("STUBBED: SortSaves"); #if 0 qsort(Saves, NSaves, sizeof(SavesS), CompareSaves); #endif } void RefreshSaveImg(WGame &game, int Pos, uint8 Type) { //Type: 0=Save, 1=Load, 2=Nothing t2dWINDOW *w = &t2dWin[T2D_WIN_OPTIONS_MAIN]; int i; char DataFileName[MAX_PATH]; char GfxFileName[MAX_PATH]; if (Type == 2) { for (i = 0; i < 9; i++) { optionsSaves[i][0] = 0; w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + i].tnum |= T2D_BM_OFF; } return; } for (i = 0; i < 9; i++) { if ((Type == 0) && (Pos + i == 0)) { w->bm[T2D_BM_OPTIONS_SAVE_START].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_NewSave.tga", rSURFACESTRETCH); w->bm[T2D_BM_OPTIONS_SAVE_START].tnum &= ~T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START].tnum |= T2D_BM_OFF; w->text[T2D_TEXT_OPTIONS_SAVE_START].text[0] = 0; strcpy(optionsSaves[i], "NewSave"); continue; } if (Pos >= NSaves) break; snprintf(DataFileName, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), Saves[Pos].NFile); snprintf(GfxFileName, MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), Saves[Pos].NFile); t3dForceNOFastFile(1); if (!t3dAccessFile(DataFileName)) { t3dForceNOFastFile(0); break; } t3dForceNOFastFile(0); t3dForceNOFastFile(1); if (t3dAccessFile(GfxFileName)) { w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum = rLoadBitmapImage(game, GfxFileName, (uint8)(rBITMAPSURFACE | rSURFACEFLIP | rSURFACESTRETCH)); t3dForceNOFastFile(0); } else { t3dForceNOFastFile(0); w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum = LoadDDBitmap(game, "t2d\\OPTIONS_NotFound.tga", rSURFACESTRETCH); } w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum &= ~T2D_BM_OFF; //Aggiorna la descrizione snprintf(w->text[T2D_TEXT_OPTIONS_SAVE_START + i].text, T2D_MAX_TEXTS_IN_WIN, "%02d:%02d %02d/%02d/%04d", Saves[Pos].Hour, Saves[Pos].Min, Saves[Pos].Day, Saves[Pos].Month, Saves[Pos].Year); w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + i].tnum &= ~T2D_BM_OFF; strcpy(optionsSaves[i], DataFileName); Pos++; } if (i < 9) { for (; i < 9; i++) { optionsSaves[i][0] = 0; w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum |= T2D_BM_OFF; w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + i].tnum |= T2D_BM_OFF; w->text[T2D_TEXT_OPTIONS_SAVE_START + i].text[0] = 0; } } if (optionsCurPos > 0) { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_SU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_SU].on = FALSE; } if (optionsCurPos + 6 < NSaves) { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum &= ~T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = TRUE; } else { w->bm[T2D_BM_OPTIONS_FRECCIA_GIU_OFF].tnum |= T2D_BM_OFF; w->bt[T2D_BT_OPTIONS_FRECCIA_GIU].on = FALSE; } } void PDA_Tone_Acquire_Help_Func() { t2dBUTTON *b; t2dWINDOW *w; w = &t2dWin[T2D_WIN_PDA_TONE]; b = &w->bt[T2D_BT_PDA_TONE_WIN]; b->on = TRUE; b = &w->bt[T2D_BT_PDA_TONE_HELP]; b->on = TRUE; b = &w->bt[T2D_BT_PDA_TONE_EXIT]; b->on = TRUE; b = &w->bt[T2D_BT_PDA_TONE_ACQUIRE]; b->on = TRUE; b = &w->bt[T2D_BT_PDA_TONE_PROCESS]; b->on = TRUE; w->bm[T2D_BM_PDA_TONE_BARRA_1].tnum |= T2D_BM_OFF; //Delay _vm->_messageSystem.doEvent(EventClass::MC_SYSTEM, ME_STARTEFFECT, MP_DEFAULT, T2D_PDA_BUTTON_DELAY, 0, EFFECT_WAIT, nullptr, nullptr, nullptr); //Chiude finestra help _vm->_messageSystem.doEvent(EventClass::MC_T2D, ME_T2DSETWINDOW, MP_DEFAULT, T2D_WIN_PDA_HELP, 0, FALSE, nullptr, nullptr, nullptr); //Chiude finestra Tone // Event( EventClass::MC_T2D, ME_T2DSETWINDOW, MP_WAITA, T2D_WIN_PDA_TONE, 0, FALSE, NULL, NULL, NULL ); } void SetHelpWin(Fonts &fonts, void (*Func)(), int NArg, ...) { va_list vl; char *Text = nullptr; int i, Dx = 0, Dy = 0; t2dWINDOW *w = &t2dWin[T2D_WIN_PDA_HELP]; va_start(vl, NArg); for (i = 0; i < NArg; i++) { Text = va_arg(vl, char *); if (Text == nullptr) break; fonts.getTextDim(Text, FontKind::Standard, &Dx, &Dy); w->bm[T2D_BM_PDA_HELP_TEXT_START + i].px = T2D_PDA_HELP_TEXT_XI + (T2D_PDA_HELP_TEXT_XF - T2D_PDA_HELP_TEXT_XI - Dx) / 2; w->bm[T2D_BM_PDA_HELP_TEXT_START + i].py = T2D_PDA_HELP_TEXT_YI + (Dy + 5) * i; w->bm[T2D_BM_PDA_HELP_TEXT_START + i].tnum &= ~T2D_BM_OFF; strcpy(w->text[T2D_TEXT_PDA_HELP_START + i].text, Text); } HelpFunc = Func; w->bm[T2D_BM_PDA_HELP_WIN].dy = T2D_PDA_HELP_TEXT_YI + (Dy + 5) * (i); w->bm[T2D_BM_PDA_HELP_WIN2].oy = T2D_PDA_HELP_WIN_LOWER; w->bm[T2D_BM_PDA_HELP_WIN2].py = -(355 - (T2D_PDA_HELP_TEXT_YI + (Dy + 5) * (i) + (355 - T2D_PDA_HELP_WIN_LOWER))); for (; i < T2D_BM_PDA_HELP_TEXT_END - T2D_BM_PDA_HELP_TEXT_START; i++) w->bm[T2D_BM_PDA_HELP_TEXT_START + i].tnum |= T2D_BM_OFF; va_end(vl); } } // End of namespace Watchmaker