Mercurial > mm7
comparison UI/UIHouses.cpp @ 1439:468f434a8d8a
Слияние
author | Ritor1 |
---|---|
date | Mon, 22 Jul 2013 18:00:58 +0600 |
parents | 94e4c3ef9b8e e6908823897f |
children | b67a3e0d6fc3 |
comparison
equal
deleted
inserted
replaced
1438:bc99e1a48bea | 1439:468f434a8d8a |
---|---|
311 {"Out02 Castle Harmondy Abandoned", 0x24, 0, 25, 0, 0 }, | 311 {"Out02 Castle Harmondy Abandoned", 0x24, 0, 25, 0, 0 }, |
312 {"Human Temple02", 0x24, 0x3AB, 23, 27, 0 }, | 312 {"Human Temple02", 0x24, 0x3AB, 23, 27, 0 }, |
313 {"Player Castle Good", 0x24, 0, 25, 0, 0 }, | 313 {"Player Castle Good", 0x24, 0, 25, 0, 0 }, |
314 {"Player Castle Bad", 0x24, 0, 25, 0, 0} | 314 {"Player Castle Bad", 0x24, 0, 25, 0, 0} |
315 }}; | 315 }}; |
316 | |
317 | |
318 //----- (004B1784) -------------------------------------------------------- | |
319 bool __cdecl HouseUI_CheckIfPlayerCanInteract() | |
320 { | |
321 Player *pPlayer; // ebx@1 | |
322 bool result; // eax@2 | |
323 int v3; // eax@3 | |
324 GUIWindow v4; // [sp+4h] [bp-54h]@3 | |
325 | |
326 pPlayer = pPlayers[uActiveCharacter]; | |
327 if ( pPlayer->CanAct() ) | |
328 { | |
329 pDialogueWindow->pNumPresenceButton = dword_F8B1E0; | |
330 result = 1; | |
331 } | |
332 else | |
333 { | |
334 pDialogueWindow->pNumPresenceButton = 0; | |
335 memcpy(&v4, pPrimaryWindow, sizeof(v4)); | |
336 v4.uFrameX = 483; | |
337 v4.uFrameWidth = 148; | |
338 v4.uFrameZ = 334; | |
339 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[427], pPlayer->pName, pGlobalTXT_LocalizationStrings[562]);// | |
340 // "%s is in no condition to %s" | |
341 // "do anything" | |
342 v3 = pFontArrus->CalcTextHeight(pTmpBuf.data(), &v4, 0, 0); | |
343 v4.DrawTitleText(pFontArrus, 0, (212 - v3) / 2 + 101, ui_house_player_cant_interact_color, pTmpBuf.data(), 3u); | |
344 result = 0; | |
345 } | |
346 return result; | |
347 } | |
316 | 348 |
317 //----- (0044622E) -------------------------------------------------------- | 349 //----- (0044622E) -------------------------------------------------------- |
318 bool EnterHouse(enum HOUSE_ID uHouseID) | 350 bool EnterHouse(enum HOUSE_ID uHouseID) |
319 { | 351 { |
320 //enum HOUSE_ID v1; // edi@1 | 352 //enum HOUSE_ID v1; // edi@1 |
1677 s1 = v4 * (100 - v1->GetMerchant()) / 100; | 1709 s1 = v4 * (100 - v1->GetMerchant()) / 100; |
1678 if ( (signed int)s1 < v4 / 3 ) | 1710 if ( (signed int)s1 < v4 / 3 ) |
1679 s1 = v4 / 3; | 1711 s1 = v4 / 3; |
1680 if ( dialog_menu_id == HOUSE_DIALOGUE_MAIN) | 1712 if ( dialog_menu_id == HOUSE_DIALOGUE_MAIN) |
1681 { | 1713 { |
1682 if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 1714 if ( HouseUI_CheckIfPlayerCanInteract() ) |
1683 { | 1715 { |
1684 v16 = pDialogueWindow; | 1716 v16 = pDialogueWindow; |
1685 v58 = 255; | 1717 v58 = 255; |
1686 v62 = 0; | 1718 v62 = 0; |
1687 v17 = LOBYTE(pFontArrus->uFontHeight) - 3; | 1719 v17 = LOBYTE(pFontArrus->uFontHeight) - 3; |
2361 | 2393 |
2362 switch(dialog_menu_id) | 2394 switch(dialog_menu_id) |
2363 { | 2395 { |
2364 case HOUSE_DIALOGUE_MAIN: | 2396 case HOUSE_DIALOGUE_MAIN: |
2365 { | 2397 { |
2366 if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 2398 if ( !HouseUI_CheckIfPlayerCanInteract() ) |
2367 return; | 2399 return; |
2368 | 2400 |
2369 sprintf(pTopic1, "\f%05d", pDialogueWindow->pCurrentPosActiveItem == 2 ? pColorYellow : pColorWhite); | 2401 sprintf(pTopic1, "\f%05d", pDialogueWindow->pCurrentPosActiveItem == 2 ? pColorYellow : pColorWhite); |
2370 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[178], pOutString); // Rent room for %d gold | 2402 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[178], pOutString); // Rent room for %d gold |
2371 strcat(pTopic1, pTmpBuf2.data()); | 2403 strcat(pTopic1, pTmpBuf2.data()); |
2434 pButton->uW = v41; | 2466 pButton->uW = v41; |
2435 } | 2467 } |
2436 pNumActiveItem++; | 2468 pNumActiveItem++; |
2437 if ( pNumActiveItem >= pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ) | 2469 if ( pNumActiveItem >= pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ) |
2438 { | 2470 { |
2439 sprintfex(pTmpBuf.data(), "%s%s%s%s", &pTopic1, &pTopic2, &pTopic3, &pTopic4); | 2471 sprintfex(pTmpBuf.data(), "%s%s%s%s", pTopic1, pTopic2, pTopic3, pTopic4); |
2440 dialog_window.DrawTitleText(pFontArrus, 0, 146, 0, pTmpBuf.data(), 3); | 2472 dialog_window.DrawTitleText(pFontArrus, 0, 146, 0, pTmpBuf.data(), 3); |
2441 } | 2473 } |
2442 } | 2474 } |
2443 while ( pNumActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ); | 2475 while ( pNumActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ); |
2444 } | 2476 } |
2524 break; | 2556 break; |
2525 } | 2557 } |
2526 | 2558 |
2527 case HOUSE_DIALOGUE_LEARN_SKILLS: | 2559 case HOUSE_DIALOGUE_LEARN_SKILLS: |
2528 { | 2560 { |
2529 if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 2561 if ( !HouseUI_CheckIfPlayerCanInteract() ) |
2530 return; | 2562 return; |
2531 v0 = 0; | 2563 v0 = 0; |
2532 v9 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0); | 2564 v9 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0); |
2533 pItemNum = v9 * (100 - pPlayer->GetMerchant()) / 100; | 2565 pItemNum = v9 * (100 - pPlayer->GetMerchant()) / 100; |
2534 if ( pItemNum < v9 / 3 ) | 2566 if ( pItemNum < v9 / 3 ) |
2625 break; | 2657 break; |
2626 } | 2658 } |
2627 | 2659 |
2628 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_MAIN: | 2660 case HOUSE_DIALOGUE_TAVERN_ARCOMAGE_MAIN: |
2629 { | 2661 { |
2630 if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 2662 if ( HouseUI_CheckIfPlayerCanInteract() ) |
2631 { | 2663 { |
2632 v48 = 2; | 2664 v48 = 2; |
2633 pShopOptions[0] = pGlobalTXT_LocalizationStrings[620]; | 2665 pShopOptions[0] = pGlobalTXT_LocalizationStrings[620]; |
2634 pShopOptions[1] = pGlobalTXT_LocalizationStrings[622]; | 2666 pShopOptions[1] = pGlobalTXT_LocalizationStrings[622]; |
2635 pOutString = 0; | 2667 pOutString = 0; |
2762 { | 2794 { |
2763 if ( dialog_menu_id != HOUSE_DIALOGUE_TEMPLE_DONATE ) | 2795 if ( dialog_menu_id != HOUSE_DIALOGUE_TEMPLE_DONATE ) |
2764 { | 2796 { |
2765 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) | 2797 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) |
2766 { | 2798 { |
2767 if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 2799 if ( HouseUI_CheckIfPlayerCanInteract() ) |
2768 { | 2800 { |
2769 v4 = pDialogueWindow; | 2801 v4 = pDialogueWindow; |
2770 v61 = pDialogueWindow; | 2802 v61 = pDialogueWindow; |
2771 v5 = window_SpeakInHouse->ptr_1C; | 2803 v5 = window_SpeakInHouse->ptr_1C; |
2772 v66 = 0; | 2804 v66 = 0; |
3169 if ( v11 < v10 / 3 ) | 3201 if ( v11 < v10 / 3 ) |
3170 v11 = v10 / 3; | 3202 v11 = v10 / 3; |
3171 //i = v11; | 3203 //i = v11; |
3172 } | 3204 } |
3173 | 3205 |
3174 if (sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win()) | 3206 if (HouseUI_CheckIfPlayerCanInteract()) |
3175 { | 3207 { |
3176 if ( dialog_menu_id != HOUSE_DIALOGUE_MAIN ) | 3208 if ( dialog_menu_id != HOUSE_DIALOGUE_MAIN ) |
3177 { | 3209 { |
3178 if ( dialog_menu_id != HOUSE_DIALOGUE_TRAININGHALL_TRAIN ) | 3210 if ( dialog_menu_id != HOUSE_DIALOGUE_TRAININGHALL_TRAIN ) |
3179 { | 3211 { |
3180 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) | 3212 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) |
3181 { | 3213 { |
3182 if (sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win()) | 3214 if (HouseUI_CheckIfPlayerCanInteract()) |
3183 { | 3215 { |
3184 //i = 0; | 3216 //i = 0; |
3185 int _v0 = 0; | 3217 int _v0 = 0; |
3186 v13 = pDialogueWindow; | 3218 v13 = pDialogueWindow; |
3187 //v14 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0); | 3219 //v14 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0); |
3266 } | 3298 } |
3267 } | 3299 } |
3268 } | 3300 } |
3269 return; | 3301 return; |
3270 } | 3302 } |
3271 if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 3303 if ( !HouseUI_CheckIfPlayerCanInteract() ) |
3272 { | 3304 { |
3273 //v31 = pNPCTopics[122].pText; | 3305 //v31 = pNPCTopics[122].pText; |
3274 //v32 = color2; | 3306 //v32 = color2; |
3275 v33 = pFontArrus->CalcTextHeight(pNPCTopics[122].pText, &v65, 0, 0); | 3307 v33 = pFontArrus->CalcTextHeight(pNPCTopics[122].pText, &v65, 0, 0); |
3276 v65.DrawTitleText(pFontArrus, 0, (212 - v33) / 2 + 101, color2, pNPCTopics[122].pText, 3); | 3308 v65.DrawTitleText(pFontArrus, 0, (212 - v33) / 2 + 101, color2, pNPCTopics[122].pText, 3); |
3359 v65.DrawTitleText(pFontArrus, v35, v36, v58, v60, v62); | 3391 v65.DrawTitleText(pFontArrus, v35, v36, v58, v60, v62); |
3360 v63 = 3; | 3392 v63 = 3; |
3361 goto LABEL_55; | 3393 goto LABEL_55; |
3362 } | 3394 } |
3363 | 3395 |
3364 if (sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win()) | 3396 if (HouseUI_CheckIfPlayerCanInteract()) |
3365 { | 3397 { |
3366 v43 = pDialogueWindow; | 3398 v43 = pDialogueWindow; |
3367 v72 = 0; | 3399 v72 = 0; |
3368 pShopOptions[0] = pTmpBuf.data(); | 3400 pShopOptions[0] = pTmpBuf.data(); |
3369 pShopOptions[1] = pGlobalTXT_LocalizationStrings[160];// "Learn Skills" | 3401 pShopOptions[1] = pGlobalTXT_LocalizationStrings[160];// "Learn Skills" |
3491 v4 = v3 / 3; | 3523 v4 = v3 / 3; |
3492 v32 = v3 / 3; | 3524 v32 = v3 / 3; |
3493 } | 3525 } |
3494 if ( dialog_menu_id != HOUSE_DIALOGUE_MAIN) | 3526 if ( dialog_menu_id != HOUSE_DIALOGUE_MAIN) |
3495 { | 3527 { |
3496 if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 3528 if ( HouseUI_CheckIfPlayerCanInteract() ) |
3497 { | 3529 { |
3498 v5 = 0; | 3530 v5 = 0; |
3499 | 3531 |
3500 __debugbreak(); | 3532 __debugbreak(); |
3501 //pSkillAvailabilityPerClass[8 + v58->uClass][4 + v23] | 3533 //pSkillAvailabilityPerClass[8 + v58->uClass][4 + v23] |
3550 v28.DrawTitleText(pFontArrus, 0, (212 - v26) / 2 + 101, v25, v24, 3u); | 3582 v28.DrawTitleText(pFontArrus, 0, (212 - v26) / 2 + 101, v25, v24, 3u); |
3551 pDialogueWindow->pNumPresenceButton = 0; | 3583 pDialogueWindow->pNumPresenceButton = 0; |
3552 return ; | 3584 return ; |
3553 } | 3585 } |
3554 | 3586 |
3555 if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) | 3587 if ( !HouseUI_CheckIfPlayerCanInteract() ) |
3556 return; | 3588 return; |
3557 v8 = pDialogueWindow; | 3589 v8 = pDialogueWindow; |
3558 v33 = 0; | 3590 v33 = 0; |
3559 v34 = 0; | 3591 v34 = 0; |
3560 v29 = pDialogueWindow; | 3592 v29 = pDialogueWindow; |