Mercurial > mm7
changeset 855:cb0b3badc7f7
Слияние
author | Ritor1 |
---|---|
date | Sun, 31 Mar 2013 16:44:01 +0600 |
parents | 06fc66ceecd6 (diff) ceef50611567 (current diff) |
children | 8638d5b2e46d |
files | GameUIs.cpp Vis.cpp mm7_2.cpp mm7_3.cpp |
diffstat | 9 files changed, 103 insertions(+), 110 deletions(-) [+] |
line wrap: on
line diff
--- a/GUIWindow.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/GUIWindow.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -1018,76 +1018,97 @@ //----- (004B3157) -------------------------------------------------------- void GUIWindow::HouseDialogManager() { - unsigned __int16 v1; // di@2 - const char *v2; // edx@4 + unsigned __int16 pWhiteColor; // di@2 + const char *pHouseName; // edx@4 signed int v3; // edx@5 char *v4; // edi@9 - int v5; // eax@45 + int pTextHeight; // eax@45 int v6; // edi@45 char *v7; // eax@45 int v8; // edi@46 int v9; // eax@50 unsigned int v10; // [sp-10h] [bp-C8h]@53 - unsigned __int16 v11; // [sp-Ch] [bp-C4h]@53 + //unsigned __int16 v11; // [sp-Ch] [bp-C4h]@53 //unsigned int v12; // [sp-Ch] [bp-C4h]@60 char *v13; // [sp-8h] [bp-C0h]@50 //unsigned int v14; // [sp-8h] [bp-C0h]@60 unsigned int v15; // [sp-4h] [bp-BCh]@50 //Texture *v16; // [sp-4h] [bp-BCh]@60 - GUIWindow w; // [sp+Ch] [bp-ACh]@4 - GUIWindow v18; // [sp+60h] [bp-58h]@2 - int v19; // [sp+B4h] [bp-4h]@2 + GUIWindow pDialogWindow; // [sp+Ch] [bp-ACh]@4 + GUIWindow pWindow; // [sp+60h] [bp-58h]@2 + int pColor2; // [sp+B4h] [bp-4h]@2 if ( !window_SpeakInHouse ) return; - memcpy(&v18, this, sizeof(v18)); - v18.uFrameWidth -= 18; - v18.uFrameZ -= 18; - v1 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0xFFu); - v19 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0x15u, 0x99u, 0xE9u); + memcpy(&pWindow, this, sizeof(pWindow)); + pWindow.uFrameWidth -= 18; + pWindow.uFrameZ -= 18; + pWhiteColor = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0xFFu); + pColor2 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0x15u, 0x99u, 0xE9u); pRenderer->DrawTextureIndexed(0x1DDu, 0, pTexture_Dialogue_Background); pRenderer->DrawTextureTransparent(0x1D4u, 0, &pIcons_LOD->pTextures[uTextureID_507B04]); if ( pDialogueNPCCount != uNumDialogueNPCPortraits || !uHouse_ExitPic ) { - w.uFrameWidth = 130; - w.uFrameHeight = 2 * LOBYTE(pFontCreate->uFontHeight); + pDialogWindow.uFrameWidth = 130; + pDialogWindow.uFrameHeight = 2 * LOBYTE(pFontCreate->uFontHeight); //v2 = (const char *)p2DEvents_minus1_::04[13 * (unsigned int)ptr_507BC0->ptr_1C]; - v2 = p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pName; + pHouseName = p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pName; - if ( v2 ) + if ( pHouseName ) { - v3 = 2 * LOBYTE(pFontCreate->uFontHeight) - 6 - pFontCreate->CalcTextHeight(v2, &w, 0, 0); + v3 = 2 * LOBYTE(pFontCreate->uFontHeight) - 6 - pFontCreate->CalcTextHeight(pHouseName, &pDialogWindow, 0, 0); if ( v3 < 0 ) v3 = 0; - v18.DrawTitleText(pFontCreate, 0x1EAu, v3 / 2 + 4, v1, + pWindow.DrawTitleText(pFontCreate, 0x1EAu, v3 / 2 + 4, pWhiteColor, //(const char *)p2DEvents_minus1_::04[13 * (unsigned int)ptr_507BC0->ptr_1C], p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pName, 3); } } - v18.uFrameWidth += 8; - v18.uFrameZ += 8; + pWindow.uFrameWidth += 8; + pWindow.uFrameZ += 8; if ( !pDialogueNPCCount ) { if ( in_current_building_type == BildingType_Jail ) { JailDialog(); - goto LABEL_58; + if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) + { + pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]); + 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 ) { - w.uFrameWidth = 458; - w.uFrameZ = 457; - v5 = pFontArrus->CalcTextHeight(current_npc_text, &w, 13, 0); - v6 = v5 + 7; - pRenderer->_4A6A68(8, 352 - (v5 + 7), &pIcons_LOD->pTextures[uTextureID_Leather], pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight - (v5 + 7)); - pRenderer->DrawTextureIndexed(8u, 347 - v6, pTexture_591428); - v7 = FitTextInAWindow(current_npc_text, pFontArrus, &w, 0xDu, 0); + pDialogWindow.uFrameWidth = 458; + pDialogWindow.uFrameZ = 457; + pTextHeight = pFontArrus->CalcTextHeight(current_npc_text, &pDialogWindow, 13, 0); + v6 = pTextHeight + 7; + pRenderer->_4A6A68(8, 352 - (pTextHeight + 7), &pIcons_LOD->pTextures[uTextureID_Leather], + pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight - (pTextHeight + 7)); + pRenderer->DrawTextureIndexed(8, 347 - v6, pTexture_591428); + v7 = FitTextInAWindow(current_npc_text, pFontArrus, &pDialogWindow, 0xDu, 0); window_SpeakInHouse->DrawText(pFontArrus, 13, 354 - v6, 0, v7, 0, 0, 0); } v8 = 0; if ( uNumDialogueNPCPortraits <= 0 ) - goto LABEL_58; + { + if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) + { + pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]); + pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); + } + else + { + pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); + } + return; + } while ( 1 ) { //pRenderer->DrawTextureIndexed(*(&pNPCPortraits_x + v8 + 6 * uNumDialogueNPCPortraits - 6) - 4, @@ -1103,7 +1124,19 @@ LABEL_57: ++v8; if ( v8 >= uNumDialogueNPCPortraits ) - goto LABEL_58; + //goto LABEL_58; + { + if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) + { + pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]); + pRenderer->DrawTextureIndexed(476, 451, &pIcons_LOD->pTextures[uTextureID_x_ok_u]); + } + else + { + pRenderer->DrawTextureIndexed(471, 445, &pIcons_LOD->pTextures[uExitCancelTextureId]); + } + return; + } } if ( v8 + 1 == uNumDialogueNPCPortraits && uHouse_ExitPic ) { @@ -1118,16 +1151,16 @@ v15 = 3; //v13 = (char *)p2DEvents_minus1__10[13 * (unsigned int)ptr_507BC0->ptr_1C]; v13 = (char *)p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterTitle; - v18.DrawTitleText(pFontCreate, 0x1E3u, 113, v19, v13, 3); + pWindow.DrawTitleText(pFontCreate, 0x1E3u, 113, pColor2, v13, 3); goto LABEL_57; } v15 = 3; - v13 = HouseNPCData[v8 - (dword_591080 != 0)]->pName; + v13 = HouseNPCData[(v8 +1) - (dword_591080 != 0)]->pName; v9 = pNPCPortraits_x[6 + (uNumDialogueNPCPortraits - 1)][v8] + pDialogueNPCPortraits[v8]->uTextureHeight + 2; } - v11 = v19; + //v11 = pColor2; v10 = v9; - v18.DrawTitleText(pFontCreate, 0x1E3u, v10, v11, v13, v15); + pWindow.DrawTitleText(pFontCreate, 0x1E3u, v10, pColor2, v13, v15); goto LABEL_57; } v4 = (char *)pDialogueNPCCount - 1; @@ -1136,7 +1169,17 @@ if ( pCurrentScreen == SCREEN_E ) { CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); - goto LABEL_58; + //goto LABEL_58; + if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) + { + pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]); + 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 ) { @@ -1147,7 +1190,7 @@ sprintfex( pTmpBuf, pGlobalTXT_LocalizationStrings[429], p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterName, p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].pProprieterTitle); - v18.DrawTitleText(pFontCreate, 0x1E3u, 0x71u, v19, pTmpBuf, 3u); + pWindow.DrawTitleText(pFontCreate, 0x1E3u, 0x71u, pColor2, pTmpBuf, 3); switch ( in_current_building_type ) { case BildingType_WeaponShop: @@ -1203,7 +1246,7 @@ break; } } -LABEL_58: +//LABEL_58: if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) { pRenderer->DrawTextureIndexed(556, 451, &pIcons_LOD->pTextures[uTextureID_x_x_u]); @@ -1928,7 +1971,7 @@ else { if ( v26 || !dword_591080 ) - v27 = HouseNPCData[v26 - (dword_591080 != 0)]->pName; + v27 = HouseNPCData[(v26 +1) - (dword_591080 != 0)]->pName; else //v27 = (char *)p2DEvents_minus1_::08[13 * a4]; v27 = (char *)p2DEvents[pButton - 1].pProprieterName;
--- a/Player.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/Player.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -8742,7 +8742,6 @@ } - //----- (0044AFFB) -------------------------------------------------------- void Player::AddVariable(enum VariableType var_type, signed int val) {
--- a/Render.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/Render.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -7599,60 +7599,12 @@ // 4D864C: using guessed type char byte_4D864C; //----- (004A2DA3) -------------------------------------------------------- -void Render::DrawStrip(unsigned int uNumVertices, struct stru148 *a3, IDirect3DTexture2 *pTexture) -{ - //int v4; // ebx@1 - int v7; // eax@7 - float v12; // ST3C_4@8 - int i; - - //v4 = (int)this; - if (!this->uNumD3DSceneBegins) - return; - - if (uNumVertices >= 3) - { - this->pRenderD3D->pDevice->SetTextureStageState(0, D3DTSS_ADDRESS, D3DTADDRESS_WRAP); - if (this->bUsingSpecular) - { - this->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE); - this->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_ONE); - this->pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_ZERO); - } - - for (i = 0; i < uNumVertices; ++i) - { - pVertices[i].pos.x = array_50AC10[i].vWorldViewProjX; - pVertices[i].pos.y = array_50AC10[i].vWorldViewProjY; - pVertices[i].pos.z = 0.99989998; - pVertices[i].rhw = array_50AC10[i]._rhw; - - pVertices[i].diffuse = ::GetActorTintColor(31, 0, array_50AC10[i].vWorldViewPosition.x, true, false); - v7 = 0; - if (this->bUsingSpecular) - { - v12 = array_50AC10[i].vWorldViewPosition.x; - v7 = sub_47C3D7_get_fog_related_stuff(0, 1, v12); - } - pVertices[i].specular = v7; - pVertices[i].texcoord.x = array_50AC10[i].u; - pVertices[i].texcoord.y = array_50AC10[i].v; - } - pRenderer->pRenderD3D->pDevice->SetTexture(0, pTexture); - pRenderer->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, - pVertices, uNumVertices, D3DDP_DONOTUPDATEEXTENTS | D3DDP_DONOTLIGHT); - } -} - -//----- (004A2DA3) -------------------------------------------------------- -void Render::DrawFan(unsigned int uNumVertices, stru148 *a3, IDirect3DTexture2 *pTexture) -{ - //int v4; // ebx@1 +void Render::DrawSkyPolygon(unsigned int uNumVertices, stru148 *a3, IDirect3DTexture2 *pTexture) +{ int v7; // eax@7 float v13; // ST3C_4@8 int i; - //v4 = (int)this; if ( !this->uNumD3DSceneBegins ) return; if ( uNumVertices >= 3 )
--- a/Render.h Sun Mar 31 10:44:43 2013 +0100 +++ b/Render.h Sun Mar 31 16:44:01 2013 +0600 @@ -322,8 +322,7 @@ unsigned int GetActorTintColor(float a2, int tint, int a4, int a5, RenderBillboard *a6); void DrawPolygon(unsigned int uNumVertices, stru148 *a3, ODMFace *a4, IDirect3DTexture2 *pTexture); void DrawTerrainPolygon(unsigned int uNumVertices, stru148 *a4, IDirect3DTexture2 *a5, bool transparent, bool clampAtTextureBorders); - void DrawStrip(unsigned int uNumVertices, struct stru148 *a3, IDirect3DTexture2 *pTexture); - void DrawFan(unsigned int uNumVertices, stru148 *a3, IDirect3DTexture2 *a4); + void DrawSkyPolygon(unsigned int uNumVertices, stru148 *a3, IDirect3DTexture2 *pTexture); void _4A2ED5(signed int a2, stru148 *a3, IDirect3DTexture2 *pHwTex); void DrawIndoorPolygon(unsigned int uNumVertices, struct BLVFace *a3, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8); void MakeParticleBillboardAndPush_BLV(RenderBillboardTransform_local0 *a2, IDirect3DTexture2 *a3, unsigned int uDiffuse, int angle);
--- a/UIHouses.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/UIHouses.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -2591,9 +2591,8 @@ break; } - case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_102: + case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_RULES: { - __debugbreak(); pOutString = pFontArrus; strcpy(pTmpBuf, pNPCTopics[354].pText); dialog_window.uFrameWidth = game_viewport_width; @@ -2611,9 +2610,8 @@ window_SpeakInHouse->DrawText(pOutString, 12, 354 - pTextHeight, 0, v63, 0, 0, 0); break; } - case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_103: + case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_VICTORY_CONDITIONS: { - __debugbreak(); strcpy(pTmpBuf, pNPCTopics[(uint)window_SpeakInHouse->ptr_1C + 247].pText); dialog_window.uFrameWidth = game_viewport_width; dialog_window.uFrameZ = 452; @@ -2794,7 +2792,7 @@ pNumActiveItem = pDialogueWindow->pStartingPosActiveItem; v54 = (174 - v48 * (174 - all_text_height) / v48 - all_text_height) / 2 - (174 - all_text_height) / v48 / 2 + 138; v37 = -pDialogueWindow->pNumPresenceButton < 0; - if ( v37 ^ pNumActiveItem < pNumActiveItem + pDialogueWindow->pNumPresenceButton ) + if ( pNumActiveItem < pNumActiveItem + pDialogueWindow->pNumPresenceButton ) { pItemNum = 2; pNumString = 0; @@ -2809,8 +2807,9 @@ pColorText = pColorYellow; if ( pDialogueWindow->pCurrentPosActiveItem != pItemNum ) pColorText = pColorWhite; - dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, *(const char **)&pOutString->cFirstChar, 3); + dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pColorText, (const char *)pShopOptions[pNumString], 3); pItemNum++; + ++pNumString; pNumActiveItem = pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; } while ( pItemNum < pNumActiveItem );
--- a/UIHouses.h Sun Mar 31 10:44:43 2013 +0100 +++ b/UIHouses.h Sun Mar 31 16:44:01 2013 +0600 @@ -33,8 +33,8 @@ HOUSE_DIALOGUE_TOWNHALL_99 = 99, HOUSE_DIALOGUE_TOWNHALL_100 = 100, HOUSE_DIALOGUE_TAVERN_ARCOMAGE_MAIN = 101, - HOUSE_DIALOGUE_TAVERN_ARCOMAGE_102 = 102, - HOUSE_DIALOGUE_TAVERN_ARCOMAGE_103 = 103, + HOUSE_DIALOGUE_TAVERN_ARCOMAGE_RULES = 102, + HOUSE_DIALOGUE_TAVERN_ARCOMAGE_VICTORY_CONDITIONS = 103, HOUSE_DIALOGUE_TAVERN_ARCOMAGE_RESULT = 104, HOUSE_DIALOGUE_TRANSPORT_SCHEDULE_1 = 105, HOUSE_DIALOGUE_TRANSPORT_SCHEDULE_2 = 106,
--- a/Vis.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/Vis.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -537,7 +537,7 @@ if (!default_list.uNumPointers) return -1; - return get_object_zbuf_val(default_list.object_pointers[0]); + return get_object_zbuf_val(default_list.object_pointers[0]);//Click to the Rat in dragon cave result crash. Maybe object_pointers incorrect } //----- (004C1C0C) --------------------------------------------------------
--- a/mm7_2.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/mm7_2.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -10180,7 +10180,7 @@ DoInteractionWithTopmostZObject((unsigned __int16)v1, (signed int)(unsigned __int16)v1 >> 3); } v22 = 0; - v1 = (int *)((signed int)(viewparams->uScreen_BttmR_X + viewparams->uScreen_topL_X) >> 1); + v1 = (int *)((signed int)(viewparams->uScreen_BttmR_X + viewparams->uScreen_topL_X) >> 1);//wrong pointer if ( (signed int)viewparams->uScreen_topL_Y < (signed int)viewparams->uScreen_BttmR_Y ) { v2 = (char *)v1 - 50;
--- a/mm7_3.cpp Sun Mar 31 10:44:43 2013 +0100 +++ b/mm7_3.cpp Sun Mar 31 16:44:01 2013 +0600 @@ -6093,21 +6093,22 @@ //array_50AC10[i].vWorldPosition.x = v36 / (_this.pTexture->uTextureHeight * 65536.0); //array_50AC10[i].vWorldPosition.y = 1.0 / (pOutdoorCamera->shading_dist_mist >> 16); //array_50AC10[i].vWorldPosition.z = v35 / (_this.pTexture->uTextureWidth * 65536.0); - array_50AC10[i]._rhw = 1; + array_50AC10[i]._rhw = 1.0;// / (pOutdoorCamera->shading_dist_mist >> 16); //array_50AC10[i].u = (double)v35 / (65536.0 * _this.pTexture->uTextureWidth); //array_50AC10[i].v = (double)v36 / (65536.0 * _this.pTexture->uTextureHeight); float t = (GetTickCount() % 96000) / 96000.0f; array_50AC10[i].u += t; + array_50AC10[i].v += t; if ( i == _this.uNumVertices - 1 ) { - pRenderer->DrawFan(_this.uNumVertices, &_this, pBitmaps_LOD->pHardwareTextures[_this.uTileBitmapID]); - - //array_50AC10[0].vWorldViewProjY = v38; - //array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0; - //array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0; - //array_50AC10[3].vWorldViewProjY = v38; - - pRenderer->DrawFan(_this.uNumVertices, &_this, pBitmaps_LOD->pHardwareTextures[_this.uTileBitmapID]); + pRenderer->DrawSkyPolygon(_this.uNumVertices, &_this, pBitmaps_LOD->pHardwareTextures[_this.uTileBitmapID]); + + array_50AC10[0].vWorldViewProjY = v38; + array_50AC10[1].vWorldViewProjY = array_50AC10[1].vWorldViewProjY + 30.0; + array_50AC10[2].vWorldViewProjY = array_50AC10[2].vWorldViewProjY + 30.0; + array_50AC10[3].vWorldViewProjY = v38; + + pRenderer->DrawSkyPolygon(_this.uNumVertices, &_this, pBitmaps_LOD->pHardwareTextures[_this.uTileBitmapID]); return; } }