Mercurial > mm7
diff GUIWindow.cpp @ 2271:7ffddbe09e55
DrawMessageBox
author | Ritor1 |
---|---|
date | Thu, 13 Mar 2014 23:56:31 +0600 |
parents | aff7a7b072b7 |
children | 42b6a910b5d8 |
line wrap: on
line diff
--- a/GUIWindow.cpp Sun Mar 09 22:39:59 2014 +0600 +++ b/GUIWindow.cpp Thu Mar 13 23:56:31 2014 +0600 @@ -80,41 +80,27 @@ uNumMessages = pMessages[0].field_8 != 0; } - //----- (004356B9) -------------------------------------------------------- void GUIMessageQueue::PopMessage(enum UIMessageType *pType, int *pParam, int *a4) { - signed int v4; // edx@1 - GUIMessage *v5; // eax@2 - - v4 = 0; if ( this->uNumMessages ) { - v5 = this->pMessages; *pType = this->pMessages[0].eType; *pParam = this->pMessages[0].param; *a4 = this->pMessages[0].field_8; if ( (signed int)(this->uNumMessages - 1) > 0 ) { - do + for ( uint i = 0; i < (signed int)(this->uNumMessages - 1); ++i ) { - v5->eType = v5[1].eType; - v5->param = v5[1].param; - v5->field_8 = v5[1].field_8; - ++v4; - ++v5; + this->pMessages[i].eType = this->pMessages[i + 1].eType; + this->pMessages[i].param = this->pMessages[i + 1].param; + this->pMessages[i].field_8 = this->pMessages[i + 1].field_8; } - while ( v4 < (signed int)(this->uNumMessages - 1) ); } --this->uNumMessages; } } - - - - - //----- (0041B4E1) -------------------------------------------------------- int __fastcall GUI_ReplaceHotkey(unsigned __int8 uOldHotkey, unsigned __int8 uNewHotkey, char bFirstCall) { @@ -160,9 +146,6 @@ return result; } - - - //----- (0041B438) -------------------------------------------------------- GUIButton *__fastcall GUI_HandleHotkey(unsigned __int8 uHotkey) { @@ -343,9 +326,7 @@ case WINDOW_null: return; default: - { break; - } } //v8 = this->pControlsHead; if ( this->pControlsHead ) @@ -373,11 +354,6 @@ uNumVisibleWindows = uNumVisibleWindows - 1; } - - - - - //----- (0041CD3B) -------------------------------------------------------- GUIButton *GUIWindow::GetControl(unsigned int uID) { @@ -647,30 +623,14 @@ void GUIWindow::DrawMessageBox(int arg0) { unsigned int v2; // edi@1 - GUIWindow *v3; // ebx@1 signed int v4; // esi@2 unsigned int v5; // eax@2 - unsigned int v6; // edx@4 - unsigned int v7; // ecx@6 - unsigned int v8; // eax@9 - __int32 v9; // eax@10 - unsigned int v10; // eax@18 - LONG v11; // ecx@18 - unsigned int v12; // edx@18 - unsigned int v13; // eax@18 - const char *v14; // ecx@18 - int v15; // eax@19 unsigned int v16; // esi@19 - const char *v17; // ebx@25 - int v18; // eax@26 - GUIWindow v19; // [sp+Ch] [bp-60h]@18 - POINT a2; // [sp+60h] [bp-Ch]@8 - unsigned int v21; // [sp+68h] [bp-4h]@18 + GUIWindow current_window; // [sp+Ch] [bp-60h]@18 + POINT cursor; // [sp+60h] [bp-Ch]@8 unsigned int v22; // [sp+74h] [bp+8h]@2 - unsigned int v23; // [sp+74h] [bp+8h]@18 v2 = 0; - v3 = this; if ( arg0 ) { v4 = pViewport->uViewportTL_X; @@ -684,108 +644,82 @@ v5 = window->GetWidth(); v22 = window->GetHeight(); } - v6 = this->uFrameX; + pMouse->GetCursorPos(&cursor); if ( (signed int)this->uFrameX >= v4 ) { - v7 = this->uFrameWidth; - if ( (signed int)(v7 + v6) <= (signed int)v5 ) - goto LABEL_9; - v3->uFrameX = v5 - v7; + if ( (signed int)(this->uFrameWidth + this->uFrameX) > (signed int)v5 ) + { + this->uFrameX = v5 - this->uFrameWidth; + this->uFrameY = cursor.y + 30; + } } else { this->uFrameX = v4; + this->uFrameY = cursor.y + 30; } - v3->uFrameY = pMouse->GetCursorPos(&a2)->y + 30; -LABEL_9: - v8 = v3->uFrameY; - if ( (signed int)v8 >= (signed int)v2 ) + + if ( (signed int)this->uFrameY >= (signed int)v2 ) { - if ( (signed int)(v8 + v3->uFrameHeight) <= (signed int)v22 ) - goto LABEL_14; - v9 = pMouse->GetCursorPos(&a2)->y - v3->uFrameHeight - 30; + if ( (signed int)(this->uFrameY + this->uFrameHeight) > (signed int)v22 ) + this->uFrameY = cursor.y - this->uFrameHeight - 30; } else - { - v9 = pMouse->GetCursorPos(&a2)->y + 30; - } - v3->uFrameY = v9; -LABEL_14: - if ( (signed int)v3->uFrameY < (signed int)v2 ) - v3->uFrameY = v2; - if ( (signed int)v3->uFrameX < v4 ) - v3->uFrameX = v4; - v10 = v3->uFrameWidth; - v11 = v3->uFrameX; - v12 = v3->uFrameY; - v21 = v10; - a2.y = v11; - v3->uFrameZ = v10 + v11 - 1; - v13 = v3->uFrameHeight; - v3->uFrameW = v13 + v12 - 1; - memcpy(&v19, v3, sizeof(v19)); - v19.uFrameX += 12; - v19.uFrameWidth -= 24; - v19.uFrameY += 12; - v19.uFrameHeight -= 12; - v19.uFrameZ = v19.uFrameWidth + v19.uFrameX - 1; - v23 = v12; - v19.uFrameW = v19.uFrameHeight + v19.uFrameY - 1; - v14 = v3->Hint; - if ( v14 ) - { - v15 = pFontLucida->CalcTextHeight(v14, &v19, 0, 0); - v12 = v23; - v16 = v15 + 24; - } + this->uFrameY = cursor.y + 30; + if ( (signed int)this->uFrameY < (signed int)v2 ) + this->uFrameY = v2; + if ( (signed int)this->uFrameX < v4 ) + this->uFrameX = v4; + this->uFrameZ = this->uFrameWidth + this->uFrameX - 1; + this->uFrameW = this->uFrameHeight + this->uFrameY - 1; + memcpy(¤t_window, this, sizeof(current_window)); + current_window.uFrameX += 12; + current_window.uFrameWidth -= 24; + current_window.uFrameY += 12; + current_window.uFrameHeight -= 12; + current_window.uFrameZ = current_window.uFrameWidth + current_window.uFrameX - 1; + current_window.uFrameW = current_window.uFrameHeight + current_window.uFrameY - 1; + if ( this->Hint ) + v16 = pFontLucida->CalcTextHeight(this->Hint, ¤t_window, 0, 0) + 24; else - { - v16 = v13; - } + v16 = this->uFrameHeight; if ( (signed int)v16 < 64 ) v16 = 64; - if ( (signed int)(v16 + v12) > 479 ) - v16 = 479 - v12; - DrawPopupWindow(a2.y, v12, v21, v16); - v17 = v3->Hint; - if ( v17 ) - { - v18 = pFontLucida->CalcTextHeight(v17, &v19, 0, 0); - v19.DrawTitleText(pFontLucida, 0, (signed int)(v16 - v18) / 2 - 14, 0, v17, 3); - } + if ( (signed int)(v16 + this->uFrameY) > 479 ) + v16 = 479 - this->uFrameY; + DrawPopupWindow(this->uFrameX, this->uFrameY, this->uFrameWidth, v16); + if ( this->Hint ) + current_window.DrawTitleText(pFontLucida, 0, (signed int)(v16 - pFontLucida->CalcTextHeight(this->Hint, ¤t_window, 0, 0)) / 2 - 14, 0, this->Hint, 3); } - - - //----- (00411B59) -------------------------------------------------------- void __fastcall LoadThumbnailLloydTexture(unsigned int uSlot, unsigned int uPlayer) { - unsigned int v2; // esi@1 - unsigned int v3; // edi@1 + //unsigned int v2; // esi@1 + //unsigned int v3; // edi@1 FILE *v4; // ebx@1 FILE *v5; // eax@2 char pContainerName[64]; // [sp+Ch] [bp-44h]@1 - unsigned int v7; // [sp+4Ch] [bp-4h]@1 + //unsigned int v7; // [sp+4Ch] [bp-4h]@1 - v2 = uSlot; - v7 = uPlayer; - v3 = uSlot + 1; + //v2 = uSlot; + //v7 = uPlayer; + //v3 = uSlot + 1; sprintf(pContainerName, "data\\lloyd%d%d.pcx", uPlayer, uSlot + 1); v4 = fopen(pContainerName, "rb"); if ( v4 ) { - pSavegameThumbnails[v2].LoadFromFILE(v4, 0, 1u); + pSavegameThumbnails[uSlot].LoadFromFILE(v4, 0, 1); fclose(v4); } else { - sprintf(pContainerName, "lloyd%d%d.pcx", v7, v3); + sprintf(pContainerName, "lloyd%d%d.pcx", uPlayer, uSlot + 1); v5 = pNew_LOD->FindContainer(pContainerName, 1); if ( v5 ) - pSavegameThumbnails[v2].LoadFromFILE(v5, 0, 0); + pSavegameThumbnails[uSlot].LoadFromFILE(v5, 0, 0); else - *((int *)&pSavegameThumbnails.data()->pPixels + 10 * v2) = 0; + *((int *)&pSavegameThumbnails.data()->pPixels + 10 * uSlot) = 0; } } @@ -900,9 +834,7 @@ pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); } else - { pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); - } return; } if ( current_npc_text ) @@ -925,9 +857,7 @@ pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); } else - { pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); - } return; } for ( v8 = 0; v8 < uNumDialogueNPCPortraits; ++v8 ) @@ -964,9 +894,7 @@ pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); } else - { pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); - } return; } v4 = (char *)pDialogueNPCCount - 1; @@ -981,15 +909,11 @@ pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); } else - { pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); - } return; } if ( v4 || !dword_591080 )//на изумрудном острове заходит на корабле пока не выполнены квесты - { SimpleHouseDialog(); - } else { sprintfex( pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], @@ -1058,9 +982,7 @@ pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); } else - { pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); - } } //----- (004B1854) -------------------------------------------------------- @@ -1117,13 +1039,11 @@ this->DrawTitleText(pFontArrus, 0, (212 - pFontArrus->CalcTextHeight(pTmpBuf.data(), this, 0, 0)) / 2 + 101, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3); } - - //----- (0044D406) -------------------------------------------------------- void GUIWindow::DrawTitleText( GUIFont *a2, signed int uHorizontalMargin, unsigned int uVerticalMargin, unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing ) { - GUIWindow *pWindow; // esi@1 + //GUIWindow *pWindow; // esi@1 unsigned int v8; // ebx@1 char *v9; // eax@1 unsigned int v11; // edi@1 @@ -1132,14 +1052,14 @@ GUIFont *pFont; // [sp+Ch] [bp-4h]@1 const char *Stra; // [sp+24h] [bp+14h]@5 - pWindow = this; + //pWindow = this; pFont = a2; v8 = this->uFrameWidth - uHorizontalMargin; ui_current_text_color = uDefaultColor; v9 = FitTextInAWindow(pInString, a2, this, uHorizontalMargin, 0); Stra = strtok(v9, "\n"); - v11 = uHorizontalMargin + pWindow->uFrameX; - v12 = uVerticalMargin + pWindow->uFrameY; + v11 = uHorizontalMargin + this->uFrameX; + v12 = uVerticalMargin + this->uFrameY; while ( 1 ) { if ( !Stra ) @@ -1154,8 +1074,6 @@ } // 5C6DB4: using guessed type int ui_current_text_color; - - //----- (0044CE08) -------------------------------------------------------- void GUIWindow::DrawText( GUIFont *a2, signed int uX, int uY, unsigned int uFontColor, const char *Str, int a7, int a8, signed int uFontShadowColor ) { @@ -1202,9 +1120,7 @@ if ( !uX ) uX = 12; if ( a8 ) - { v32 = Str; - } else { v11 = (int)FitTextInAWindow(Str, v10, v9, uX, 0); @@ -1230,7 +1146,7 @@ switch ( (unsigned __int8)v11 ) { case 9u: - strncpy(Dest, &v32[v14 + 1], 3u); + strncpy(Dest, &v32[v14 + 1], 3); Dest[3] = 0; pInString += 3; v29 = atoi(Dest); @@ -1247,14 +1163,14 @@ goto LABEL_36; break; case 0xCu: - strncpy(Dest, &v32[v14 + 1], 5u); + strncpy(Dest, &v32[v14 + 1], 5); Dest[5] = 0; v11 = atoi(Dest); pInString += 5; uFontColor = v11; break; case 0xDu: - strncpy(Dest, &v32[v14 + 1], 3u); + strncpy(Dest, &v32[v14 + 1], 3); Dest[3] = 0; pInString += 3; v18 = atoi(Dest); @@ -1285,24 +1201,11 @@ v12 += v10->pMetrics[v15].uLeftSpacing; v17 = (int)((char *)&v10[1] + v10->font_pixels_offset[v15]); if ( (short)uFontColor ) - pRenderer->DrawText( - v12, - v13, - (unsigned __int8 *)v17, - v16, - LOBYTE(v10->uFontHeight), - v10->pFontPalettes[0], - uFontColor, - uFontShadowColor); + pRenderer->DrawText(v12, v13, (unsigned __int8 *)v17, v16, LOBYTE(v10->uFontHeight), + v10->pFontPalettes[0], uFontColor, uFontShadowColor); else - pRenderer->DrawTextPalette( - v12, - v13, - (unsigned char*)v17, - v16, - LOBYTE(v10->uFontHeight), - v10->pFontPalettes[0], - a7); + pRenderer->DrawTextPalette(v12, v13, (unsigned char*)v17, v16, LOBYTE(v10->uFontHeight), + v10->pFontPalettes[0], a7); LOBYTE(v11) = v30; v12 += v28; if ( (signed int)pInString < (signed int)v30 )