Mercurial > mm7
comparison mm7_4.cpp @ 157:8e0e2991f9d1
Слияние
author | Ritor1 |
---|---|
date | Tue, 12 Feb 2013 18:16:34 +0600 |
parents | 796b79187c27 |
children | 572d821561f3 |
comparison
equal
deleted
inserted
replaced
156:2cb13d295f4b | 157:8e0e2991f9d1 |
---|---|
975 LABEL_54: | 975 LABEL_54: |
976 *(int *)a4 = 0; | 976 *(int *)a4 = 0; |
977 return dword_720F20[v22]; | 977 return dword_720F20[v22]; |
978 } | 978 } |
979 | 979 |
980 | |
981 //not sure if right- or left-handed coordinate space assumed, so this could be normal of inverse normal | |
982 // for a right-handed system, that would be an inverse normal | |
980 //----- (0046DCC8) -------------------------------------------------------- | 983 //----- (0046DCC8) -------------------------------------------------------- |
981 signed __int64 __fastcall _46DCC8_get_gravity_direction_outdoor(int a1, int a2, Vec3_int_ *a3) | 984 void ODM_GetTerrainNormalAt(int pos_x, int pos_z, Vec3_int_ *out) |
982 { | 985 { |
983 int v3; // ebx@1 | 986 auto grid_x = WorldPosToGridCellX(pos_x); |
984 int v4; // ST4C_4@1 | 987 auto grid_z = WorldPosToGridCellZ(pos_z) - 1; |
985 unsigned int v5; // ST54_4@1 | 988 |
986 unsigned int v6; // edi@1 | 989 auto grid_pos_x1 = GridCellToWorldPosX(grid_x); |
987 unsigned int v7; // ST50_4@1 | 990 auto grid_pos_x2 = GridCellToWorldPosX(grid_x + 1); |
988 int v8; // edi@1 | 991 auto grid_pos_z1 = GridCellToWorldPosZ(grid_z); |
989 int v9; // esi@1 | 992 auto grid_pos_z2 = GridCellToWorldPosZ(grid_z + 1); |
990 int v10; // ebx@1 | 993 |
991 int v11; // ecx@2 | 994 auto x1z1_y = pOutdoor->DoGetHeightOnTerrain(grid_x, grid_z); |
992 int v12; // eax@2 | 995 auto x2z1_y = pOutdoor->DoGetHeightOnTerrain(grid_x + 1, grid_z); |
993 int v13; // edx@2 | 996 auto x2z2_y = pOutdoor->DoGetHeightOnTerrain(grid_x + 1, grid_z + 1); |
994 int v14; // ebx@2 | 997 auto x1z2_y = pOutdoor->DoGetHeightOnTerrain(grid_x, grid_z + 1); |
995 double v15; // st7@4 | 998 |
996 double v16; // st6@4 | 999 float side1_dx, side1_dy, side1_dz, |
997 double v17; // st5@4 | 1000 side2_dx, side2_dy, side2_dz; |
998 float v18; // ST44_4@4 | 1001 |
999 float v19; // ST54_4@4 | 1002 auto dx = abs(pos_x - grid_pos_x1), |
1000 double v20; // st4@4 | 1003 dz = abs(grid_pos_z1 - pos_z); |
1001 double v21; // st5@4 | 1004 if (dz >= dx) |
1002 float v22; // ST44_4@6 | 1005 { |
1003 double v23; // st7@4 | 1006 side1_dy = (double)(x1z1_y - x1z2_y); |
1004 double v24; // st7@6 | 1007 side2_dy = (double)(x2z2_y - x1z2_y); |
1005 signed __int64 result; // qax@6 | 1008 side2_dx = (double)(grid_pos_x2 - grid_pos_x1); |
1006 int v26; // [sp+14h] [bp-44h]@1 | 1009 side1_dx = (double)(grid_pos_x1 - grid_pos_x1); |
1007 int v27; // [sp+18h] [bp-40h]@1 | 1010 side2_dz = (double)(grid_pos_z2 - grid_pos_z2); // bug? z2 - z2 |
1008 int v28; // [sp+20h] [bp-38h]@1 | 1011 side1_dz = (double)(grid_pos_z2 - grid_pos_z2); // z1 - z2 |
1009 int v29; // [sp+24h] [bp-34h]@1 | 1012 Log::Warning(L"%s %s %u\n", __FILE__, __FUNCTION__, __LINE__); |
1010 int v30; // [sp+28h] [bp-30h]@1 | 1013 /* |\ |
1011 int v31; // [sp+2Ch] [bp-2Ch]@1 | 1014 side1 | \ |
1012 int v32; // [sp+30h] [bp-28h]@1 | 1015 |____\ |
1013 int v33; // [sp+34h] [bp-24h]@1 | 1016 side 2 */ |
1014 int v34; // [sp+38h] [bp-20h]@1 | |
1015 int v35; // [sp+3Ch] [bp-1Ch]@1 | |
1016 int v36; // [sp+40h] [bp-18h]@1 | |
1017 int v37; // [sp+4Ch] [bp-Ch]@2 | |
1018 float v38; // [sp+4Ch] [bp-Ch]@4 | |
1019 int v39; // [sp+50h] [bp-8h]@2 | |
1020 float v40; // [sp+50h] [bp-8h]@4 | |
1021 int v41; // [sp+54h] [bp-4h]@2 | |
1022 | |
1023 v3 = a1; | |
1024 v4 = a2; | |
1025 v5 = WorldPosToGridCellX(a1); | |
1026 v6 = WorldPosToGridCellZ(v4) - 1; | |
1027 v33 = GridCellToWorldPosX(v5); | |
1028 v34 = GridCellToWorldPosX(v5 + 1); | |
1029 v35 = GridCellToWorldPosX(v5 + 1); | |
1030 v36 = GridCellToWorldPosX(v5); | |
1031 v29 = GridCellToWorldPosZ(v6); | |
1032 v30 = GridCellToWorldPosZ(v6); | |
1033 v7 = v6 + 1; | |
1034 v31 = GridCellToWorldPosZ(v6 + 1); | |
1035 v32 = GridCellToWorldPosZ(v6 + 1); | |
1036 v26 = pOutdoor->DoGetHeightOnTerrain(v5, v6); | |
1037 v27 = pOutdoor->DoGetHeightOnTerrain(v5 + 1, v6); | |
1038 v8 = pOutdoor->DoGetHeightOnTerrain(v5 + 1, v6 + 1); | |
1039 v28 = pOutdoor->DoGetHeightOnTerrain(v5, v7); | |
1040 v9 = v29; | |
1041 v10 = abs(v3 - v33); | |
1042 if ( abs(v29 - v4) >= v10 ) | |
1043 { | |
1044 v11 = v33; | |
1045 v37 = v28; | |
1046 v39 = v36; | |
1047 v12 = v35; | |
1048 v41 = v32; | |
1049 v13 = v31; | |
1050 v14 = v8; | |
1051 v8 = v26; | |
1052 } | 1017 } |
1053 else | 1018 else |
1054 { | 1019 { |
1055 v11 = v35; | 1020 side1_dy = (double)(x2z2_y - x2z1_y); |
1056 v41 = v30; | 1021 side2_dy = (double)(x1z1_y - x2z1_y); |
1057 v39 = v34; | 1022 side2_dx = (double)(grid_pos_x1 - grid_pos_x2); |
1058 v12 = v33; | 1023 side1_dx = (double)(grid_pos_x2 - grid_pos_x2); |
1059 v13 = v29; | 1024 side2_dz = (double)(grid_pos_z1 - grid_pos_z1); |
1060 v9 = v31; | 1025 side1_dz = (double)(grid_pos_z2 - grid_pos_z1); |
1061 v37 = v27; | 1026 |
1062 v14 = v26; | 1027 /* side 2 |
1063 } | 1028 _____ |
1064 v15 = (double)(v12 - v39); | 1029 \ | |
1065 v16 = (double)(v13 - v41); | 1030 \ | side 1 |
1066 v17 = (double)(v14 - v37); | 1031 \| */ |
1067 v18 = (double)(v11 - v39); | 1032 } |
1068 v19 = (double)(v9 - v41); | 1033 |
1069 v20 = (double)(v8 - v37); | 1034 float nx = side1_dy * side2_dz - side1_dz * side2_dy; |
1070 v38 = v20 * v16 - v19 * v17; | 1035 float ny = side1_dx * side2_dy - side1_dy * side2_dx; |
1071 v40 = v18 * v17 - v20 * v15; | 1036 float nz = side1_dz * side2_dx - side1_dx * side2_dz; |
1072 v21 = v19 * v15 - v18 * v16; | 1037 |
1073 v23 = sqrt(v21 * v21 + v40 * v40 + v38 * v38); | 1038 float mag = sqrt(nx * nx + ny * ny + nz * nz); |
1074 if ( v23 == 0.0 ) | 1039 if (fabsf(mag) < 1e-6f) |
1075 { | 1040 { |
1076 a3->y = 0; | 1041 out->y = 0; |
1077 a3->x = 0; | 1042 out->x = 0; |
1078 a3->z = 65536; | 1043 out->z = 65536; |
1079 } | 1044 } |
1080 v24 = 1.0 / v23; | 1045 else |
1081 a3->x = (signed __int64)(v24 * v38 * 65536.0); | 1046 { |
1082 a3->y = (signed __int64)(v24 * v40 * 65536.0); | 1047 float invmag = 1.0 / mag; |
1083 v22 = v21; | 1048 out->x = invmag * nx * 65536.0; |
1084 result = (signed __int64)(v24 * v22 * 65536.0); | 1049 out->y = invmag * ny * 65536.0; |
1085 a3->z = result; | 1050 out->z = invmag * nz * 65536.0; |
1086 return result; | 1051 } |
1087 } | 1052 } |
1088 // 47F44B: using guessed type int __stdcall WorldPosToGridCellX(int); | 1053 |
1089 // 47F458: using guessed type int __stdcall WorldPosToGridCellZ(int); | |
1090 // 47F469: using guessed type int __stdcall GridCellToWorldPosX(int); | |
1091 // 47F476: using guessed type int __stdcall GridCellToWorldPosZ(int); | |
1092 | 1054 |
1093 //----- (0046DEF2) -------------------------------------------------------- | 1055 //----- (0046DEF2) -------------------------------------------------------- |
1094 unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID) | 1056 unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID) |
1095 { | 1057 { |
1096 unsigned int result; // eax@1 | 1058 unsigned int result; // eax@1 |
1301 if ( v3 ) | 1263 if ( v3 ) |
1302 { | 1264 { |
1303 do | 1265 do |
1304 { | 1266 { |
1305 v4 = *v3; | 1267 v4 = *v3; |
1306 if ( (v4 & 7) == 5 ) | 1268 if ( (v4 & 7) == OBJECT_Decoration) |
1307 { | 1269 { |
1308 v5 = &pLevelDecorations[(signed __int16)v4 >> 3]; | 1270 v5 = &pLevelDecorations[(signed __int16)v4 >> 3]; |
1309 if ( !(v5->field_2 & 0x20) ) | 1271 if ( !(v5->field_2 & 0x20) ) |
1310 { | 1272 { |
1311 v6 = &pDecorationList->pDecorations[v5->uDecorationDescID]; | 1273 v6 = &pDecorationList->pDecorations[v5->uDecorationDescID]; |
3095 if (pParty->pHirelings[1].pName) | 3057 if (pParty->pHirelings[1].pName) |
3096 pTmpBuf[v22++] = 1; | 3058 pTmpBuf[v22++] = 1; |
3097 | 3059 |
3098 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) | 3060 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) |
3099 { | 3061 { |
3100 if (pNPCStats->pNewNPCData[i].uFlags & 0x80) | 3062 if (pNPCStats->pNewNPCData[i].uFlags == 128) |
3101 { | 3063 { |
3102 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName)) | 3064 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName)) |
3103 { | 3065 { |
3104 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName)) | 3066 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName)) |
3105 pTmpBuf[v22++] = i + 2; | 3067 pTmpBuf[v22++] = i + 2; |
3271 } | 3233 } |
3272 if ( pParty->bTurnBasedModeOn == 1 ) | 3234 if ( pParty->bTurnBasedModeOn == 1 ) |
3273 { | 3235 { |
3274 if ( pTurnEngine->field_4 != 1 ) | 3236 if ( pTurnEngine->field_4 != 1 ) |
3275 { | 3237 { |
3276 if ( (pTurnEngine->pQueue[0].uPackedID & 7) == 4 ) | 3238 if ( (pTurnEngine->pQueue[0].uPackedID & 7) == OBJECT_Player) |
3277 { | 3239 { |
3278 //v14 = 0; | 3240 //v14 = 0; |
3279 if ( pTurnEngine->uActorQueueSize > 0 ) | 3241 if ( pTurnEngine->uActorQueueSize > 0 ) |
3280 { | 3242 { |
3281 //v15 = (char *)pTurnEngine->pQueue; | 3243 //v15 = (char *)pTurnEngine->pQueue; |
3282 for (uint i = 0; i < pTurnEngine->uActorQueueSize; ++i) | 3244 for (uint i = 0; i < pTurnEngine->uActorQueueSize; ++i) |
3283 { | 3245 { |
3284 auto pElem = pTurnEngine->pQueue + i; | 3246 auto pElem = pTurnEngine->pQueue + i; |
3285 | 3247 |
3286 if ( (pElem->uPackedID & 7) != 4 ) | 3248 if ( (pElem->uPackedID & 7) != OBJECT_Player) |
3287 break; | 3249 break; |
3288 v16 = dword_5079D0; | 3250 v16 = dword_5079D0; |
3289 if ( pParty->uFlags & 0x10 ) | 3251 if ( pParty->uFlags & 0x10 ) |
3290 { | 3252 { |
3291 v16 = dword_5079CC; | 3253 v16 = dword_5079CC; |
4214 } | 4176 } |
4215 | 4177 |
4216 v51 = v65; | 4178 v51 = v65; |
4217 if ( v65 ) | 4179 if ( v65 ) |
4218 goto LABEL_135; | 4180 goto LABEL_135; |
4219 if ( pCurrentScreen != 5 ) | 4181 if ( pCurrentScreen != SCREEN_REST ) |
4220 { | 4182 { |
4221 v52 = (signed int)&pPlayers[1]; | 4183 v52 = (signed int)&pPlayers[1]; |
4222 while ( 1 ) | 4184 while ( 1 ) |
4223 { | 4185 { |
4224 v53 = *(int *)v52; | 4186 v53 = *(int *)v52; |
4230 } | 4192 } |
4231 *(int *)(v53 + 16) = 0; | 4193 *(int *)(v53 + 16) = 0; |
4232 *(int *)(v53 + 20) = 0; | 4194 *(int *)(v53 + 20) = 0; |
4233 v51 = 1; | 4195 v51 = 1; |
4234 LABEL_135: | 4196 LABEL_135: |
4235 if ( pCurrentScreen != 5 | 4197 if ( pCurrentScreen != SCREEN_REST |
4236 && (!v51 || dword_5C35C0) ) | 4198 && (!v51 || dword_5C35C0) ) |
4237 uGameState = 8; | 4199 uGameState = 8; |
4238 } | 4200 } |
4239 if ( uActiveCharacter ) | 4201 if ( uActiveCharacter ) |
4240 { | 4202 { |
4241 if ( pCurrentScreen != 5 ) | 4203 if ( pCurrentScreen != SCREEN_REST ) |
4242 { | 4204 { |
4243 v54 = pPlayers[uActiveCharacter]; | 4205 v54 = pPlayers[uActiveCharacter]; |
4244 if ( v54->pConditions[2] | 4206 if ( v54->pConditions[2] |
4245 || v54->pConditions[12] | 4207 || v54->pConditions[12] |
4246 || v54->pConditions[13] | 4208 || v54->pConditions[13] |
5741 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | 5703 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; |
5742 pAudioPlayer->SetMusicVolume((pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0)); | 5704 pAudioPlayer->SetMusicVolume((pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0)); |
5743 ++pIcons_LOD->uTexturePacksCount; | 5705 ++pIcons_LOD->uTexturePacksCount; |
5744 if ( !pIcons_LOD->uNumPrevLoadedFiles ) | 5706 if ( !pIcons_LOD->uNumPrevLoadedFiles ) |
5745 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles; | 5707 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles; |
5746 pCurrentScreen = 21;// | 5708 pCurrentScreen = SCREEN_PARTY_CREATION; |
5747 uPlayerCreationUI_ArrowAnim = 0; | 5709 uPlayerCreationUI_ArrowAnim = 0; |
5748 uPlayerCreationUI_SkySliderPos = 0; | 5710 uPlayerCreationUI_SkySliderPos = 0; |
5749 uPlayerCreationUI_SelectedCharacter = 0; | 5711 uPlayerCreationUI_SelectedCharacter = 0; |
5750 v0 = LOBYTE(pFontCreate->uFontHeight) - 2; | 5712 v0 = LOBYTE(pFontCreate->uFontHeight) - 2; |
5751 pTexture_IC_KNIGHT[0] = pIcons_LOD->LoadTexturePtr("IC_KNIGHT", TEXTURE_16BIT_PALETTE); | 5713 pTexture_IC_KNIGHT[0] = pIcons_LOD->LoadTexturePtr("IC_KNIGHT", TEXTURE_16BIT_PALETTE); |
6243 pFontQuick->_44D2FD_prolly_draw_credits_entry(pFontCChar, 0, a4, (signed __int16)pTexture2.uWidth, (signed __int16)pTexture2.uHeight, pColor1, | 6205 pFontQuick->_44D2FD_prolly_draw_credits_entry(pFontCChar, 0, a4, (signed __int16)pTexture2.uWidth, (signed __int16)pTexture2.uHeight, pColor1, |
6244 pColor2, pString, pTexture2.pPixels, (signed __int16)pTexture2.uWidth); | 6206 pColor2, pString, pTexture2.pPixels, (signed __int16)pTexture2.uWidth); |
6245 free(pString); | 6207 free(pString); |
6246 pWindow_MainMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, (int)ptr); | 6208 pWindow_MainMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, (int)ptr); |
6247 pWindow_MainMenu->CreateButton(0, 0, 0, 0, 1, 0, 0x71u, 0, 0x1Bu, "", 0); | 6209 pWindow_MainMenu->CreateButton(0, 0, 0, 0, 1, 0, 0x71u, 0, 0x1Bu, "", 0); |
6248 pCurrentScreen = 9; // Credits | 6210 pCurrentScreen = SCREEN_CREATORS; |
6249 SetCurrentMenuID(MENU_Credits); | 6211 SetCurrentMenuID(MENU_Credits); |
6250 do | 6212 do |
6251 { | 6213 { |
6252 while ( PeekMessageA(&Msg, 0, 0, 0, 1) ) | 6214 while ( PeekMessageA(&Msg, 0, 0, 0, 1) ) |
6253 { | 6215 { |
6272 pRenderer->EndScene(); | 6234 pRenderer->EndScene(); |
6273 ++a5; | 6235 ++a5; |
6274 if ( a5 >= (signed __int16)pTexture2.uHeight ) | 6236 if ( a5 >= (signed __int16)pTexture2.uHeight ) |
6275 SetCurrentMenuID(MENU_MAIN); | 6237 SetCurrentMenuID(MENU_MAIN); |
6276 pRenderer->Present(); | 6238 pRenderer->Present(); |
6277 pCurrentScreen = 0;//Ritor1: temporarily, must be corrected GUI_MainMenuMessageProc() | 6239 pCurrentScreen = SCREEN_GAME;//Ritor1: temporarily, must be corrected GUI_MainMenuMessageProc() |
6278 GUI_MainMenuMessageProc(); | 6240 GUI_MainMenuMessageProc(); |
6279 } | 6241 } |
6280 } | 6242 } |
6281 while ( GetCurrentMenuID() == MENU_Credits ); | 6243 while ( GetCurrentMenuID() == MENU_Credits ); |
6282 pAudioPlayer->_4AA258(1); | 6244 pAudioPlayer->_4AA258(1); |
9706 v19 = pGlobalTXT_LocalizationStrings[155]; | 9668 v19 = pGlobalTXT_LocalizationStrings[155]; |
9707 goto LABEL_77; | 9669 goto LABEL_77; |
9708 } | 9670 } |
9709 Party::TakeGold(v21); | 9671 Party::TakeGold(v21); |
9710 } | 9672 } |
9711 LOBYTE(v2->uFlags) |= 0x80u; | 9673 //LOBYTE(v2->uFlags) |= 0x80u; |
9674 v2->uFlags = 128; | |
9712 pParty->field_709 = 0; | 9675 pParty->field_709 = 0; |
9713 sub_44A56A(); | 9676 sub_44A56A(); |
9714 if ( pParty->pHirelings[0].pName ) | 9677 if ( pParty->pHirelings[0].pName ) |
9715 { | 9678 { |
9716 memcpy(&pParty->pHirelings[1], v2, sizeof(pParty->pHirelings[1])); | 9679 memcpy(&pParty->pHirelings[1], v2, sizeof(pParty->pHirelings[1])); |
14726 if ( v29 ) | 14689 if ( v29 ) |
14727 { | 14690 { |
14728 LODWORD(v20) = pBLVRenderParams->field_40 << 16; | 14691 LODWORD(v20) = pBLVRenderParams->field_40 << 16; |
14729 HIDWORD(v20) = pBLVRenderParams->field_40 >> 16; | 14692 HIDWORD(v20) = pBLVRenderParams->field_40 >> 16; |
14730 v21 = v20 / x; | 14693 v21 = v20 / x; |
14731 v0->field_0 = (unsigned __int64)(v10->scale * v20 / x) >> 16; | 14694 v0->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v10->scale * v20 / x) >> 16; |
14732 a5a = (unsigned __int64)(v10->scale * (signed __int64)v21) >> 16; | 14695 a5a = (unsigned __int64)(v10->scale * (signed __int64)v21) >> 16; |
14733 } | 14696 } |
14734 else | 14697 else |
14735 { | 14698 { |
14736 //v14 = &pGame->pIndoorCameraD3D; | 14699 //v14 = &pGame->pIndoorCameraD3D; |
14740 v0->fov_y = v15; | 14703 v0->fov_y = v15; |
14741 //v17 = v16 + 6.7553994e15; | 14704 //v17 = v16 + 6.7553994e15; |
14742 LODWORD(v18) = 0; | 14705 LODWORD(v18) = 0; |
14743 HIDWORD(v18) = floorf(v16 + 0.5f); | 14706 HIDWORD(v18) = floorf(v16 + 0.5f); |
14744 v19 = v18 / x; | 14707 v19 = v18 / x; |
14745 v0->field_0 = (unsigned __int64)(v10->scale * v18 / x) >> 16; | 14708 v0->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v10->scale * v18 / x) >> 16; |
14746 a5a = (unsigned __int64)(v10->scale * (signed __int64)v19) >> 16; | 14709 a5a = (unsigned __int64)(v10->scale * (signed __int64)v19) >> 16; |
14747 } | 14710 } |
14748 v0->field_4 = a5a; | 14711 v0->_screenspace_y_scaler_packedfloat = a5a; |
14749 if ( (signed __int64)p->pActorBuffs[3].uExpireTime <= 0 ) | 14712 if ( (signed __int64)p->pActorBuffs[3].uExpireTime <= 0 ) |
14750 { | 14713 { |
14751 if ( (signed __int64)p->pActorBuffs[10].uExpireTime > 0 ) | 14714 if ( (signed __int64)p->pActorBuffs[10].uExpireTime > 0 ) |
14752 { | 14715 { |
14753 a5b = (unsigned __int64)(pGame->pStru6Instance->_4A806F(p) * (signed __int64)v0->field_4) >> 16; | 14716 a5b = (unsigned __int64)(pGame->pStru6Instance->_4A806F(p) * (signed __int64)v0->_screenspace_y_scaler_packedfloat) >> 16; |
14754 goto LABEL_43; | 14717 goto LABEL_43; |
14755 } | 14718 } |
14756 } | 14719 } |
14757 else | 14720 else |
14758 { | 14721 { |
14759 v22 = p->pActorBuffs[3].uPower; | 14722 v22 = p->pActorBuffs[3].uPower; |
14760 if ( v22 ) | 14723 if ( v22 ) |
14761 { | 14724 { |
14762 v23 = (unsigned __int64)(65536 / (unsigned __int16)v22 * (signed __int64)v0->field_0) >> 16; | 14725 v23 = (unsigned __int64)(65536 / (unsigned __int16)v22 * (signed __int64)v0->_screenspace_x_scaler_packedfloat) >> 16; |
14763 v24 = p->pActorBuffs[3].uPower; | 14726 v24 = p->pActorBuffs[3].uPower; |
14764 v0->field_0 = v23; | 14727 v0->_screenspace_x_scaler_packedfloat = v23; |
14765 a5b = (unsigned __int64)(65536 / v24 * (signed __int64)v0->field_4) >> 16; | 14728 a5b = (unsigned __int64)(65536 / v24 * (signed __int64)v0->_screenspace_y_scaler_packedfloat) >> 16; |
14766 LABEL_43: | 14729 LABEL_43: |
14767 v0->field_4 = a5b; | 14730 v0->_screenspace_y_scaler_packedfloat = a5b; |
14768 goto LABEL_44; | 14731 goto LABEL_44; |
14769 } | 14732 } |
14770 } | 14733 } |
14771 LABEL_44: | 14734 LABEL_44: |
14772 HIWORD(v25) = HIWORD(x); | 14735 HIWORD(v25) = HIWORD(x); |