comparison Render.cpp @ 2006:30c2b575d25c

signed fixes DamagePlayerFromMonster -1 indexing
author zipi
date Wed, 06 Nov 2013 13:06:02 +0000
parents 2e6c63bdcfa9
children 7a2fc95f3b99
comparison
equal deleted inserted replaced
2005:8fa26b63244a 2006:30c2b575d25c
183 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; 183 soft_billboard.uScreenSpaceY = p->uScreenSpaceY;
184 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; 184 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat;
185 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; 185 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat;
186 soft_billboard.sZValue = p->sZValue; 186 soft_billboard.sZValue = p->sZValue;
187 soft_billboard.uFlags = p->field_1E; 187 soft_billboard.uFlags = p->field_1E;
188 soft_billboard.uTintColor = p->uTintColor; 188 soft_billboard.sTintColor = p->sTintColor;
189 v2 = p->uHwSpriteID; 189 v2 = p->uHwSpriteID;
190 if ( v2 != -1 ) 190 if ( v2 != -1 )
191 { 191 {
192 if ( pRenderer->pRenderD3D ) 192 if ( pRenderer->pRenderD3D )
193 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->dimming_level); 193 pRenderer->DrawBillboard_Indoor(&soft_billboard, &pSprites_LOD->pHardwareSprites[v2], p->dimming_level);
423 423
424 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; 424 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX;
425 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; 425 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY;
426 billboard.sParentBillboardID = i; 426 billboard.sParentBillboardID = i;
427 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; 427 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat;
428 billboard.uTintColor = pBillboard->uTintColor; 428 billboard.sTintColor = pBillboard->sTintColor;
429 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; 429 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat;
430 billboard.sZValue = pBillboard->sZValue; 430 billboard.sZValue = pBillboard->sZValue;
431 billboard.uFlags = pBillboard->field_1E; 431 billboard.uFlags = pBillboard->field_1E;
432 if (pBillboard->uHwSpriteID != -1) 432 if (pBillboard->uHwSpriteID != -1)
433 { 433 {
645 HIWORD(v26) = HIWORD(v42); 645 HIWORD(v26) = HIWORD(v42);
646 LOWORD(v26) = 0; 646 LOWORD(v26) = 0;
647 v27 = (object->uAttributes & 0x20) == 0; 647 v27 = (object->uAttributes & 0x20) == 0;
648 v3->sZValue = v26 + (PID(OBJECT_Item,i)); 648 v3->sZValue = v26 + (PID(OBJECT_Item,i));
649 v3->dimming_level = 0; 649 v3->dimming_level = 0;
650 v3->uTintColor = 0; 650 v3->sTintColor = 0;
651 if ( !v27 ) 651 if ( !v27 )
652 { 652 {
653 if ( !pRenderer->pRenderD3D ) 653 if ( !pRenderer->pRenderD3D )
654 v3->sZValue = 0; 654 v3->sZValue = 0;
655 } 655 }
1147 LOWORD(v30) = 0; 1147 LOWORD(v30) = 0;
1148 v27->uIndoorSectorID = 0; 1148 v27->uIndoorSectorID = 0;
1149 v27->sZValue = v30 + v31; 1149 v27->sZValue = v30 + v31;
1150 v27->dimming_level = 0; 1150 v27->dimming_level = 0;
1151 v27->pSpriteFrame = v8; 1151 v27->pSpriteFrame = v8;
1152 v27->uTintColor = 0; 1152 v27->sTintColor = 0;
1153 } 1153 }
1154 } 1154 }
1155 goto LABEL_38; 1155 goto LABEL_38;
1156 } 1156 }
1157 } 1157 }
1876 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3 1876 LightmapBuilder *v53; // [sp+58h] [bp-10h]@3
1877 unsigned int v54; // [sp+5Ch] [bp-Ch]@3 1877 unsigned int v54; // [sp+5Ch] [bp-Ch]@3
1878 unsigned int v55; // [sp+5Ch] [bp-Ch]@34 1878 unsigned int v55; // [sp+5Ch] [bp-Ch]@34
1879 unsigned int v56; // [sp+60h] [bp-8h]@12 1879 unsigned int v56; // [sp+60h] [bp-8h]@12
1880 int v57; // [sp+60h] [bp-8h]@34 1880 int v57; // [sp+60h] [bp-8h]@34
1881 unsigned int a2; // [sp+64h] [bp-4h]@4 1881 signed int a2; // [sp+64h] [bp-4h]@4
1882 1882
1883 v5 = this; 1883 v5 = this;
1884 v6 = 0; 1884 v6 = 0;
1885 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 ) 1885 if ( this->uNumD3DSceneBegins && (signed int)uNumVertices >= 3 )
1886 { 1886 {
1887 v7 = pGame->pLightmapBuilder; 1887 v7 = pGame->pLightmapBuilder;
1888 v53 = v7; 1888 v53 = v7;
1889 v54 = v7->std__vector_000004_size; 1889 v54 = v7->std__vector_000004_size;
1890 if ( v7->std__vector_000004_size) 1890 if ( v7->std__vector_000004_size)
1891 a2 = 0xFFFFFFFF; 1891 a2 = -1;
1892 pGame->AlterGamma_ODM(a4, &a2); 1892 pGame->AlterGamma_ODM(a4, &a2);
1893 if ( byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) 1893 if ( byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01)
1894 { 1894 {
1895 v8 = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0); 1895 v8 = ::GetActorTintColor(a3->dimming_level, 0, array_50AC10[0].vWorldViewPosition.x, 0, 0);
1896 v7->DrawLightmaps(/*v8, 0*/); 1896 v7->DrawLightmaps(/*v8, 0*/);
5419 //auto a3 = pFace; 5419 //auto a3 = pFace;
5420 //auto a6 = uPackedID; 5420 //auto a6 = uPackedID;
5421 //v59 = pGame->pLightmapBuilder; 5421 //v59 = pGame->pLightmapBuilder;
5422 //v9 = v59->std__vector_000004_size; 5422 //v9 = v59->std__vector_000004_size;
5423 5423
5424 uint uCorrectedColor = uColor; 5424 int sCorrectedColor = uColor;
5425 if (pGame->pLightmapBuilder->std__vector_000004_size) 5425 if (pGame->pLightmapBuilder->std__vector_000004_size)
5426 uCorrectedColor = 0xFFFFFFFF; 5426 sCorrectedColor = -1;
5427 pGame->AlterGamma_BLV(pFace, &uCorrectedColor); 5427 pGame->AlterGamma_BLV(pFace, &sCorrectedColor);
5428 5428
5429 5429
5430 if (pFace->uAttributes & FACE_OUTLINED) 5430 if (pFace->uAttributes & FACE_OUTLINED)
5431 { 5431 {
5432 int color; 5432 int color;
5433 if (GetTickCount() % 300 >= 150) 5433 if (GetTickCount() % 300 >= 150)
5434 uColor = uCorrectedColor = 0xFF20FF20; 5434 uColor = sCorrectedColor = 0xFF20FF20;
5435 else uColor = uCorrectedColor = 0xFF109010; 5435 else uColor = sCorrectedColor = 0xFF109010;
5436 } 5436 }
5437 5437
5438 if (byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01) 5438 if (byte_4D864C && pGame->uFlags & GAME_FLAGS_1_01)
5439 { 5439 {
5440 __debugbreak(); 5440 __debugbreak();
5444 { 5444 {
5445 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; 5445 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX;
5446 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; 5446 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY;
5447 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); 5447 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894);
5448 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; 5448 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x;
5449 d3d_vertex_buffer[i].diffuse = uCorrectedColor; 5449 d3d_vertex_buffer[i].diffuse = sCorrectedColor;
5450 d3d_vertex_buffer[i].specular = 0; 5450 d3d_vertex_buffer[i].specular = 0;
5451 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; 5451 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth;
5452 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; 5452 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight;
5453 } 5453 }
5454 5454
5471 { 5471 {
5472 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX; 5472 d3d_vertex_buffer[i].pos.x = array_507D30[i].vWorldViewProjX;
5473 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY; 5473 d3d_vertex_buffer[i].pos.y = array_507D30[i].vWorldViewProjY;
5474 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894); 5474 d3d_vertex_buffer[i].pos.z = 1.0 - 1.0 / (array_507D30[i].vWorldViewPosition.x * 0.061758894);
5475 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x; 5475 d3d_vertex_buffer[i].rhw = 1.0 / array_507D30[i].vWorldViewPosition.x;
5476 d3d_vertex_buffer[i].diffuse = uCorrectedColor; 5476 d3d_vertex_buffer[i].diffuse = sCorrectedColor;
5477 d3d_vertex_buffer[i].specular = 0; 5477 d3d_vertex_buffer[i].specular = 0;
5478 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth; 5478 d3d_vertex_buffer[i].texcoord.x = array_507D30[i].u / (double)pTex->uTextureWidth;
5479 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight; 5479 d3d_vertex_buffer[i].texcoord.y = array_507D30[i].v / (double)pTex->uTextureHeight;
5480 } 5480 }
5481 5481
5541 5541
5542 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_NONE)); 5542 ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_CULLMODE, D3DCULL_NONE));
5543 pGame->pLightmapBuilder->DrawLightmaps(/*-1, 0*/); 5543 pGame->pLightmapBuilder->DrawLightmaps(/*-1, 0*/);
5544 5544
5545 for (uint i = 0; i < uNumVertices; ++i) 5545 for (uint i = 0; i < uNumVertices; ++i)
5546 d3d_vertex_buffer[i].diffuse = uCorrectedColor; 5546 d3d_vertex_buffer[i].diffuse = sCorrectedColor;
5547 /*v33 = uNumVertices; 5547 /*v33 = uNumVertices;
5548 if ( (signed int)uNumVertices > 0 ) 5548 if ( (signed int)uNumVertices > 0 )
5549 { 5549 {
5550 v34 = (char *)&d3d_vertex_buffer[0].diffuse; 5550 v34 = (char *)&d3d_vertex_buffer[0].diffuse;
5551 do 5551 do
5634 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); 5634 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat);
5635 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); 5635 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX);
5636 v27 = (double)(pSprite->uBufferHeight - pSprite->uAreaY); 5636 v27 = (double)(pSprite->uBufferHeight - pSprite->uAreaY);
5637 if ( pSoftBillboard->uFlags & 4 ) 5637 if ( pSoftBillboard->uFlags & 4 )
5638 v31 = v31 * -1.0; 5638 v31 = v31 * -1.0;
5639 if ( pSoftBillboard->uTintColor && this->bTinting ) 5639 if ( pSoftBillboard->sTintColor && this->bTinting )
5640 { 5640 {
5641 v11 = ::GetActorTintColor(dimming_level, 0, pSoftBillboard->zbuffer_depth, 0, 0); 5641 v11 = ::GetActorTintColor(dimming_level, 0, pSoftBillboard->zbuffer_depth, 0, 0);
5642 v12 = BlendColors(pSoftBillboard->uTintColor, v11); 5642 v12 = BlendColors(pSoftBillboard->sTintColor, v11);
5643 if ( v28 ) 5643 if ( v28 )
5644 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1); 5644 v12 = (unsigned int)((char *)&array_77EC08[1852].pEdgeList1[17] + 3) & ((unsigned int)v12 >> 1);
5645 } 5645 }
5646 else 5646 else
5647 { 5647 {
6077 6077
6078 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat); 6078 v30 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_x_scaler_packedfloat);
6079 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat); 6079 v29 = (a2->_screenspace_y_scaler_packedfloat & 0xFFFF) / 65530.0 + HIWORD(a2->_screenspace_y_scaler_packedfloat);
6080 6080
6081 unsigned int diffuse = ::GetActorTintColor(dimming_level, 0, a2->zbuffer_depth, 0, pBillboard); 6081 unsigned int diffuse = ::GetActorTintColor(dimming_level, 0, a2->zbuffer_depth, 0, pBillboard);
6082 if (a2->uTintColor & 0x00FFFFFF && bTinting) 6082 if (a2->sTintColor & 0x00FFFFFF && bTinting)
6083 { 6083 {
6084 diffuse = BlendColors(a2->uTintColor, diffuse); 6084 diffuse = BlendColors(a2->sTintColor, diffuse);
6085 if (a2->uTintColor & 0xFF000000) 6085 if (a2->sTintColor & 0xFF000000)
6086 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1); 6086 diffuse = 0x007F7F7F & ((unsigned int)diffuse >> 1);
6087 } 6087 }
6088 6088
6089 unsigned int specular = 0; 6089 unsigned int specular = 0;
6090 if (bUsingSpecular) 6090 if (bUsingSpecular)
6147 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; 6147 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth;
6148 pBillboardRenderListD3D[v8].field_90 = a2->field_44; 6148 pBillboardRenderListD3D[v8].field_90 = a2->field_44;
6149 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; 6149 pBillboardRenderListD3D[v8].sZValue = a2->sZValue;
6150 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; 6150 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID;
6151 6151
6152 if (a2->uTintColor & 0xFF000000) 6152 if (a2->sTintColor & 0xFF000000)
6153 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; 6153 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3;
6154 else 6154 else
6155 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; 6155 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent;
6156 } 6156 }
6157 6157
8332 v5->uParticleTrailColor = v5->uParticleTrailColorB | (v4 << 8); 8332 v5->uParticleTrailColor = v5->uParticleTrailColorB | (v4 << 8);
8333 } 8333 }
8334 SetUserInterface(pParty->alignment, true); 8334 SetUserInterface(pParty->alignment, true);
8335 if ( pVideoPlayer->pVideoFrame.pPixels ) 8335 if ( pVideoPlayer->pVideoFrame.pPixels )
8336 pVideoPlayer->pVideoFrame.Load(pVideoPlayer->pVideoFrameTextureFilename, 1); 8336 pVideoPlayer->pVideoFrame.Load(pVideoPlayer->pVideoFrameTextureFilename, 1);
8337 if ( uCurrentMenuID != MENU_CREATEPARTY ) 8337 if ( sCurrentMenuID != MENU_CREATEPARTY )
8338 { 8338 {
8339 if ( uCurrentMenuID == MENU_CREDITSPROC ) 8339 if ( sCurrentMenuID == MENU_CREDITSPROC )
8340 dword_A74C88 = 1; 8340 dword_A74C88 = 1;
8341 } 8341 }
8342 else 8342 else
8343 { 8343 {
8344 if ( uCurrentMenuID ) 8344 if ( sCurrentMenuID )
8345 { 8345 {
8346 v6 = &pTexture_PCX; 8346 v6 = &pTexture_PCX;
8347 pTexture_PCX.Release(); 8347 pTexture_PCX.Release();
8348 v8 = "makeme.pcx"; 8348 v8 = "makeme.pcx";
8349 } 8349 }
8350 else 8350 else
8351 { 8351 {
8352 v6 = &pTexture_PCX; 8352 v6 = &pTexture_PCX;
8353 pTexture_PCX.Release(); 8353 pTexture_PCX.Release();
8354 v8 = "title.pcx"; 8354 v8 = "title.pcx";
8355 if ( uCurrentMenuID ) 8355 if ( sCurrentMenuID )
8356 v8 = "lsave640.pcx"; 8356 v8 = "lsave640.pcx";
8357 } 8357 }
8358 v6->Load(v8, 0); 8358 v6->Load(v8, 0);
8359 } 8359 }
8360 } 8360 }
8630 RenderBillboardD3D* p = &pRenderer->pBillboardRenderListD3D[i]; 8630 RenderBillboardD3D* p = &pRenderer->pBillboardRenderListD3D[i];
8631 8631
8632 if (p->uOpacity != RenderBillboardD3D::NoBlend) 8632 if (p->uOpacity != RenderBillboardD3D::NoBlend)
8633 SetBillboardBlendOptions(p->uOpacity); 8633 SetBillboardBlendOptions(p->uOpacity);
8634 8634
8635 //if((int)p->pTexture!=0xcdcdcdcd)
8635 pRenderer->pRenderD3D->pDevice->SetTexture(0, p->pTexture); 8636 pRenderer->pRenderD3D->pDevice->SetTexture(0, p->pTexture);
8636 ErrD3D(pRenderer->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 8637 ErrD3D(pRenderer->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
8637 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, 8638 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
8638 p->pQuads, p->uNumVertices, 8639 p->pQuads, p->uNumVertices,
8639 D3DDP_DONOTLIGHT | D3DDP_DONOTUPDATEEXTENTS)); 8640 D3DDP_DONOTLIGHT | D3DDP_DONOTUPDATEEXTENTS));
9052 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064) 9053 * (sin((double)pGame->pIndoorCameraD3D->sRotationX * 0.0030664064)
9053 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist 9054 * (double)-0x2000//(double)pODMRenderParams->shading_dist_mist
9054 - (double)pGame->pIndoorCameraD3D->vPartyPos.z)); 9055 - (double)pGame->pIndoorCameraD3D->vPartyPos.z));
9055 pSkyPolygon.Create_48607B(&stru_8019C8);//заполняется ptr_38 9056 pSkyPolygon.Create_48607B(&stru_8019C8);//заполняется ptr_38
9056 pSkyPolygon.ptr_38->_48694B_frustum_sky(); 9057 pSkyPolygon.ptr_38->_48694B_frustum_sky();
9057 pSkyPolygon.uTileBitmapID = pOutdoor->uSky_TextureID;//179(original 166) 9058 pSkyPolygon.uTileBitmapID = pOutdoor->sSky_TextureID;//179(original 166)
9058 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->uSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->uSky_TextureID)] : 0); 9059 pSkyPolygon.pTexture = (Texture *)(SLOWORD(pOutdoor->sSky_TextureID) != -1 ? (int)&pBitmaps_LOD->pTextures[SLOWORD(pOutdoor->sSky_TextureID)] : 0);
9059 if ( pSkyPolygon.pTexture ) 9060 if ( pSkyPolygon.pTexture )
9060 { 9061 {
9061 pSkyPolygon.dimming_level = 0; 9062 pSkyPolygon.dimming_level = 0;
9062 pSkyPolygon.uNumVertices = 4; 9063 pSkyPolygon.uNumVertices = 4;
9063 //centering(центруем)--наклон камеры ---------------------------------------- 9064 //centering(центруем)--наклон камеры ----------------------------------------