comparison UI/UIHouses.cpp @ 1639:b60ddd777d50

Merge
author Nomad
date Tue, 17 Sep 2013 15:40:36 +0200
parents ccde94f02b75 ff3d7af671ec
children afc1c3514dd5
comparison
equal deleted inserted replaced
1638:ccde94f02b75 1639:b60ddd777d50
2985 int v8; // edx@4 2985 int v8; // edx@4
2986 double v9; // st7@6 2986 double v9; // st7@6
2987 signed int v10; // esi@6 2987 signed int v10; // esi@6
2988 int pPrice; // ecx@6 2988 int pPrice; // ecx@6
2989 signed int v14; // esi@14 2989 signed int v14; // esi@14
2990 unsigned int v15; // esi@16 2990 //unsigned int v15; // esi@16
2991 int v16; // eax@16 2991 int v16; // eax@16
2992 unsigned int v17; // eax@17 2992 //unsigned int v17; // eax@17
2993 int v19; // ecx@24 2993 int v19; // ecx@24
2994 GUIButton *v20; // eax@26 2994 //GUIButton *v20; // eax@26
2995 GUIButton *v21; // esi@26 2995 //GUIButton *v21; // esi@26
2996 int v22; // eax@26 2996 //int v22; // eax@26
2997 const char *v23; // eax@28 2997 //const char *v23; // eax@28
2998 int v24; // eax@28 2998 //int v24; // eax@28
2999 unsigned int v25; // ecx@28 2999 //unsigned int v25; // ecx@28
3000 int v26; // eax@28 3000 //int v26; // eax@28
3001 unsigned __int16 v27; // ax@28 3001 //unsigned __int16 v27; // ax@28
3002 unsigned __int16 v29; // ST14_2@34 3002 //unsigned __int16 v29; // ST14_2@34
3003 int v30; // eax@34 3003 //int v30; // eax@34
3004 int v33; // eax@36 3004 int v33; // eax@36
3005 unsigned int v36; // eax@38 3005 unsigned int v36; // eax@38
3006 unsigned int v42; // eax@46 3006 unsigned int v42; // eax@46
3007 int index; 3007 int index;
3008 int all_text_height; // eax@68 3008 int all_text_height; // eax@68
3009 int v49; // ebx@69 3009 int v49; // ebx@69
3010 GUIButton *pButton; // eax@71 3010 GUIButton *pButton; // eax@71
3011 int pTextHeight; // eax@71 3011 int pTextHeight; // eax@71
3012 unsigned __int16 pTextColor; // ax@71 3012 unsigned __int16 pTextColor; // ax@71
3013 GUIWindow training_dialog_window; // [sp+Ch] [bp-78h]@1 3013 GUIWindow training_dialog_window; // [sp+Ch] [bp-78h]@1
3014 int v68; // [sp+6Ch] [bp-18h]@3 3014 //int v68; // [sp+6Ch] [bp-18h]@3
3015 int v69; // [sp+70h] [bp-14h]@6 3015 int v69; // [sp+70h] [bp-14h]@6
3016 int v73; // [sp+80h] [bp-4h]@14 3016 int v73; // [sp+80h] [bp-4h]@14
3017 3017
3018 memcpy(&training_dialog_window, window_SpeakInHouse, sizeof(training_dialog_window)); 3018 memcpy(&training_dialog_window, window_SpeakInHouse, sizeof(training_dialog_window));
3019 training_dialog_window.uFrameX = 483; 3019 training_dialog_window.uFrameX = 483;
3020 training_dialog_window.uFrameWidth = 148; 3020 training_dialog_window.uFrameWidth = 148;
3021 training_dialog_window.uFrameZ = 334; 3021 training_dialog_window.uFrameZ = 334;
3022 v5 = 1000ui64 * pPlayers[uActiveCharacter]->uLevel * (pPlayers[uActiveCharacter]->uLevel + 1) / 2; // E n = n(n + 1) / 2 3022 v5 = 1000ui64 * pPlayers[uActiveCharacter]->uLevel * (pPlayers[uActiveCharacter]->uLevel + 1) / 2; // E n = n(n + 1) / 2
3023 v68 = pMaxLevelPerTrainingHallType[(unsigned int)window_SpeakInHouse->ptr_1C - HOUSE_TRAINING_HALL_EMERALD_ISLE]; 3023 //v68 = pMaxLevelPerTrainingHallType[(unsigned int)window_SpeakInHouse->ptr_1C - HOUSE_TRAINING_HALL_EMERALD_ISLE];
3024 if (pPlayers[uActiveCharacter]->uExperience >= v5) 3024 if (pPlayers[uActiveCharacter]->uExperience >= v5)
3025 { 3025 {
3026 v8 = pPlayers[uActiveCharacter]->classType % 4 + 1; 3026 v8 = pPlayers[uActiveCharacter]->classType % 4 + 1;
3027 if ( v8 == 4 ) 3027 if ( v8 == 4 )
3028 v8 = 3; 3028 v8 = 3;
3049 for ( int i = pDialogueWindow->pStartingPosActiveItem; 3049 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3050 i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i ) 3050 i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
3051 { 3051 {
3052 if ( pDialogueWindow->GetControl(i)->msg_param == HOUSE_DIALOGUE_TRAININGHALL_TRAIN ) 3052 if ( pDialogueWindow->GetControl(i)->msg_param == HOUSE_DIALOGUE_TRAININGHALL_TRAIN )
3053 { 3053 {
3054 if (pPlayers[uActiveCharacter]->uLevel >= v68) 3054 if (pPlayers[uActiveCharacter]->uLevel >= pMaxLevelPerTrainingHallType[(unsigned int)window_SpeakInHouse->ptr_1C - HOUSE_TRAINING_HALL_EMERALD_ISLE])
3055 sprintfex(pShopOptions[index], "%s\n \n%s", pGlobalTXT_LocalizationStrings[536], pGlobalTXT_LocalizationStrings[529]); //"With your skills, you should be working here as a teacher." "Sorry, but we are unable to train you." 3055 sprintfex(pShopOptions[index], "%s\n \n%s", pGlobalTXT_LocalizationStrings[536], pGlobalTXT_LocalizationStrings[529]); //"With your skills, you should be working here as a teacher." "Sorry, but we are unable to train you."
3056 else 3056 else
3057 { 3057 {
3058 if (pPlayers[uActiveCharacter]->uExperience < v5) 3058 if (pPlayers[uActiveCharacter]->uExperience < v5)
3059 sprintfex(pShopOptions[index], pGlobalTXT_LocalizationStrings[538], (uint)(v5 - pPlayers[uActiveCharacter]->uExperience), pPlayers[uActiveCharacter]->uLevel + 1); // "You need %d more experience to train to level %d" 3059 sprintfex(pShopOptions[index], pGlobalTXT_LocalizationStrings[538], (uint)(v5 - pPlayers[uActiveCharacter]->uExperience), pPlayers[uActiveCharacter]->uLevel + 1); // "You need %d more experience to train to level %d"
3066 } 3066 }
3067 } 3067 }
3068 v49 = (2 * (87 - (174 - all_text_height) / 2) - all_text_height) / 2 - (174 - all_text_height) / 2 / 2 + 138; 3068 v49 = (2 * (87 - (174 - all_text_height) / 2) - all_text_height) / 2 - (174 - all_text_height) / 2 / 2 + 138;
3069 if (pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton) 3069 if (pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton)
3070 { 3070 {
3071 int pCurrentItem = 2; 3071 //int pCurrentItem = 2;
3072 index = 0; 3072 index = 0;
3073 for ( int i = pDialogueWindow->pStartingPosActiveItem; 3073 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3074 i < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton; ++i ) 3074 i < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton; ++i )
3075 { 3075 {
3076 pButton = pDialogueWindow->GetControl(i); 3076 pButton = pDialogueWindow->GetControl(i);
3078 pTextHeight = pFontArrus->CalcTextHeight(pShopOptions[index], &training_dialog_window, 0, 0); 3078 pTextHeight = pFontArrus->CalcTextHeight(pShopOptions[index], &training_dialog_window, 0, 0);
3079 pButton->uHeight = pTextHeight; 3079 pButton->uHeight = pTextHeight;
3080 pButton->uW = pTextHeight + pButton->uY - 1; 3080 pButton->uW = pTextHeight + pButton->uY - 1;
3081 v49 = pButton->uW; 3081 v49 = pButton->uW;
3082 pTextColor = TargetColor(0xE1u, 0xCDu, 0x23u); 3082 pTextColor = TargetColor(0xE1u, 0xCDu, 0x23u);
3083 if ( pDialogueWindow->pCurrentPosActiveItem != pCurrentItem ) 3083 if ( pDialogueWindow->pCurrentPosActiveItem != i )
3084 pTextColor = TargetColor(255, 255, 255); 3084 pTextColor = TargetColor(255, 255, 255);
3085 training_dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pShopOptions[index], 3); 3085 training_dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pShopOptions[index], 3);
3086 ++pCurrentItem; 3086 //++pCurrentItem;
3087 ++index; 3087 ++index;
3088 } 3088 }
3089 } 3089 }
3090 } 3090 }
3091 } 3091 }
3098 training_dialog_window.DrawTitleText(pFontArrus, 0, (212 - v33) / 2 + 101, TargetColor(0xE1u, 0xCDu, 0x23u), pNPCTopics[122].pText, 3); 3098 training_dialog_window.DrawTitleText(pFontArrus, 0, (212 - v33) / 2 + 101, TargetColor(0xE1u, 0xCDu, 0x23u), pNPCTopics[122].pText, 3);
3099 pDialogueWindow->pNumPresenceButton = 0; 3099 pDialogueWindow->pNumPresenceButton = 0;
3100 return; 3100 return;
3101 } 3101 }
3102 //v34 = pPlayers[uActiveCharacter]->uLevel; 3102 //v34 = pPlayers[uActiveCharacter]->uLevel;
3103 if ( pPlayers[uActiveCharacter]->uLevel < v68 ) 3103 if ( pPlayers[uActiveCharacter]->uLevel < pMaxLevelPerTrainingHallType[(unsigned int)window_SpeakInHouse->ptr_1C - HOUSE_TRAINING_HALL_EMERALD_ISLE] )
3104 { 3104 {
3105 if ( (signed __int64)pPlayers[uActiveCharacter]->uExperience >= v5 ) 3105 if ( (signed __int64)pPlayers[uActiveCharacter]->uExperience >= v5 )
3106 { 3106 {
3107 if ( pParty->uNumGold >= pPrice) 3107 if ( pParty->uNumGold >= pPrice)
3108 { 3108 {
3163 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) 3163 if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS )
3164 { 3164 {
3165 if (HouseUI_CheckIfPlayerCanInteract()) 3165 if (HouseUI_CheckIfPlayerCanInteract())
3166 { 3166 {
3167 v14 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0); 3167 v14 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0);
3168 v73 = v14 * (100 - pPlayers[uActiveCharacter]->GetMerchant()) / 100; 3168 pPrice = v14 * (100 - pPlayers[uActiveCharacter]->GetMerchant()) / 100;
3169 if ( v73 < v14 / 3 ) 3169 if ( pPrice < v14 / 3 )
3170 v73 = v14 / 3; 3170 pPrice = v14 / 3;
3171 v15 = pDialogueWindow->pStartingPosActiveItem;
3172 v16 = pDialogueWindow->pNumPresenceButton;
3173 index = 0; 3171 index = 0;
3174 if ( (signed int)v15 >= (signed int)(v15 + v16) ) 3172 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3175 goto LABEL_76; 3173 (signed int)i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
3176 do 3174 {
3177 { 3175 if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][pDialogueWindow->GetControl(i)->msg_param - 36]
3178 v17 = pDialogueWindow->GetControl(v15)->msg_param - 36; 3176 && !pPlayers[uActiveCharacter]->pActiveSkills[pDialogueWindow->GetControl(i)->msg_param - 36] )
3179 if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v17] && !pPlayers[uActiveCharacter]->pActiveSkills[v17] ) 3177 {
3180 { 3178 all_text_height += pFontArrus->CalcTextHeight(pSkillNames[pDialogueWindow->GetControl(i)->msg_param - 36], &training_dialog_window, 0, 0);
3181 all_text_height += pFontArrus->CalcTextHeight(pSkillNames[v17], &training_dialog_window, 0, 0);
3182 ++index; 3179 ++index;
3183 } 3180 }
3184 ++v15; 3181 }
3185 }
3186 while ( (signed int)v15 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem );
3187 if ( index ) 3182 if ( index )
3188 { 3183 {
3189 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[401], v73);// "Skill Cost: %lu" 3184 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[401], pPrice);// "Skill Cost: %lu"
3190 training_dialog_window.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf.data(), 3); 3185 training_dialog_window.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf.data(), 3);
3191 v73 = (signed int)(149 - all_text_height) / index; 3186 v73 = (signed int)(149 - all_text_height) / index;
3192 if ( v73 > 32 ) 3187 if ( v73 > 32 )
3193 v73 = 32; 3188 v73 = 32;
3194 v19 = (signed int)(149 - index * v73 - all_text_height) / 2 - v73 / 2 + 162; 3189 v19 = (signed int)(149 - index * v73 - all_text_height) / 2 - v73 / 2 + 162;
3195 int _v1 = pDialogueWindow->pStartingPosActiveItem; 3190 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3196 v68 = v19; 3191 (signed int)i < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton; ++i )
3197 if (pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) 3192 {
3198 { 3193 pButton = pDialogueWindow->GetControl(i);
3199 index = 2; 3194 if ( !byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][pButton->msg_param - 36]
3200 do 3195 || pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param - 36] )
3201 { 3196 {
3202 v20 = pDialogueWindow->GetControl(_v1); 3197 pButton->uW = 0;
3203 v21 = v20; 3198 pButton->uHeight = 0;
3204 v22 = v20->msg_param - 36; 3199 pButton->uY = 0;
3205 if ( !byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v22] || pPlayers[uActiveCharacter]->pActiveSkills[v22] )
3206 {
3207 v21->uW = 0;
3208 v21->uHeight = 0;
3209 v21->uY = 0;
3210 }
3211 else
3212 {
3213 v23 = pSkillNames[v22];
3214 v21->uY = v73 + v68;
3215 //HIDWORD(v66) = (int)v23;
3216 v24 = pFontArrus->CalcTextHeight(v23, &training_dialog_window, 0, 0);
3217 v25 = v21->uY;
3218 v21->uHeight = v24;
3219 v26 = v25 + v24 - 1;
3220 v21->uW = v26;
3221 v68 = v26;
3222 v27 = TargetColor(0xE1u, 0xCDu, 0x23u);
3223 if ( pDialogueWindow->pCurrentPosActiveItem != index )
3224 v27 = TargetColor(255, 255, 255);
3225 training_dialog_window.DrawTitleText(pFontArrus, 0, v25, v27, v23, 3);
3226 }
3227 ++_v1;
3228 ++index;
3229 } 3200 }
3230 while ( (signed int)_v1 < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ); 3201 else
3202 {
3203 pButton->uY = v73 + v19;
3204 pTextHeight = pFontArrus->CalcTextHeight(pSkillNames[pButton->msg_param - 36], &training_dialog_window, 0, 0);
3205 pButton->uHeight = pTextHeight;
3206 pButton->uW = pButton->uY + pTextHeight - 1;
3207 v19 = pButton->uY + pTextHeight - 1;
3208 pTextColor = TargetColor(0xE1u, 0xCDu, 0x23u);
3209 if ( pDialogueWindow->pCurrentPosActiveItem != i )
3210 pTextColor = TargetColor(255, 255, 255);
3211 training_dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pSkillNames[pButton->msg_param - 36], 3);
3212 }
3231 } 3213 }
3232 } 3214 }
3233 else 3215 else
3234 { 3216 {
3235 LABEL_76:
3236 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);// 3217 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);//
3237 // "Seek knowledge elsewhere %s the %s" 3218 // "Seek knowledge elsewhere %s the %s"
3238 strcat(pTmpBuf.data(), "\n \n"); 3219 strcat(pTmpBuf.data(), "\n \n");
3239 strcat(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further." 3220 strcat(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further."
3240 v29 = TargetColor(0xE1u, 0xCDu, 0x23u); 3221 pTextHeight = pFontArrus->CalcTextHeight(pTmpBuf.data(), &training_dialog_window, 0, 0);
3241 v30 = pFontArrus->CalcTextHeight(pTmpBuf.data(), &training_dialog_window, 0, 0); 3222 training_dialog_window.DrawTitleText(pFontArrus, 0, (174 - pTextHeight) / 2 + 138, TargetColor(0xE1u, 0xCDu, 0x23u), pTmpBuf.data(), 3);
3242 training_dialog_window.DrawTitleText(pFontArrus, 0, (174 - v30) / 2 + 138, v29, pTmpBuf.data(), 3);
3243 } 3223 }
3244 } 3224 }
3245 } 3225 }
3246 return; 3226 return;
3247 } 3227 }
3248 3228
3249 //----- (004B6478) -------------------------------------------------------- 3229 //----- (004B6478) --------------------------------------------------------
3250 void sub_4B6478() 3230 void sub_4B6478()
3251 { 3231 {
3252 GUIWindow *v0; // ebx@1
3253 Player *v1; // edi@1
3254 unsigned int v2; // eax@1 3232 unsigned int v2; // eax@1
3255 signed int v3; // esi@1 3233 signed int v3; // esi@1
3256 int v4; // ebx@1 3234 int pPrice; // ebx@1
3257 unsigned int v5; // esi@5 3235 unsigned int v5; // esi@5
3258 int v6; // edi@6 3236 int v6; // edi@6
3259 int result; // eax@13 3237 int result; // eax@13
3260 GUIWindow *v8; // ebx@17
3261 int v9; // eax@17
3262 int v10; // ecx@17
3263 unsigned int v11; // ecx@18
3264 int v12; // eax@20 3238 int v12; // eax@20
3265 int v13; // eax@21 3239 int v13; // eax@21
3266 GUIButton *v14; // esi@27 3240 GUIButton *pButton; // esi@27
3267 int v15; // ecx@27
3268 unsigned int v16; // eax@28 3241 unsigned int v16; // eax@28
3269 const char *v17; // ebx@29 3242 int pTextHeight; // eax@29
3270 int v18; // eax@29 3243 unsigned __int16 pTextColor; // ax@29
3271 unsigned int v19; // ecx@29
3272 int v20; // eax@29
3273 unsigned __int16 v21; // ax@29
3274 unsigned __int16 v22; // ST14_2@36 3244 unsigned __int16 v22; // ST14_2@36
3275 int v23; // eax@36
3276 const char *v24; // ST18_4@37
3277 unsigned __int16 v25; // ST14_2@37
3278 int v26; // eax@37
3279 int v27; // [sp-4h] [bp-80h]@8 3245 int v27; // [sp-4h] [bp-80h]@8
3280 GUIWindow v28; // [sp+Ch] [bp-70h]@1 3246 GUIWindow dialog_window; // [sp+Ch] [bp-70h]@1
3281 GUIWindow *v29; // [sp+60h] [bp-1Ch]@17
3282 unsigned int v30; // [sp+64h] [bp-18h]@1
3283 int v31; // [sp+68h] [bp-14h]@1
3284 int v32; // [sp+6Ch] [bp-10h]@1 3247 int v32; // [sp+6Ch] [bp-10h]@1
3285 int v33; // [sp+70h] [bp-Ch]@17
3286 int v34; // [sp+74h] [bp-8h]@17 3248 int v34; // [sp+74h] [bp-8h]@17
3287 int v35; // [sp+78h] [bp-4h]@17 3249
3288 3250 memcpy(&dialog_window, window_SpeakInHouse, sizeof(dialog_window));
3289 v0 = window_SpeakInHouse; 3251 dialog_window.uFrameX = 483;
3290 memcpy(&v28, window_SpeakInHouse, sizeof(v28)); 3252 dialog_window.uFrameWidth = 148;
3291 v1 = pPlayers[uActiveCharacter]; 3253 dialog_window.uFrameZ = 334;
3292 v28.uFrameX = 483; 3254 v2 = 52 * (unsigned int)window_SpeakInHouse->ptr_1C;
3293 v28.uFrameWidth = 148; 3255 v32 = (unsigned __int8)(((p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].uType != 18) - 1) & 0x96) + 100;
3294 v28.uFrameZ = 334; 3256 v3 = (signed __int64)((double)v32 * p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier);
3295 v30 = TargetColor(0xFFu, 0xFFu, 0xFFu); 3257 pPrice = v3 * (100 - pPlayers[uActiveCharacter]->GetMerchant()) / 100;
3296 v31 = TargetColor(0xFFu, 0xFFu, 0x9Bu); 3258 if ( pPrice < v3 / 3 )
3297 v2 = 52 * (unsigned int)v0->ptr_1C; 3259 pPrice = v3 / 3;
3298 //v32 = (unsigned __int8)(((p2DEvents_minus1___00[v2 / 2] != 18) - 1) & 0x96) + 100; 3260 if ( dialog_menu_id == HOUSE_DIALOGUE_MAIN)
3299 v32 = (unsigned __int8)(((p2DEvents[(unsigned int)v0->ptr_1C - 1].uType != 18) - 1) & 0x96) + 100; 3261 {
3300 //v3 = (signed __int64)((double)v32 * p2DEvents_minus1__20[v2 / 4]); 3262 if ( !(unsigned __int16)_449B57_test_bit((unsigned __int8 *)pPlayers[uActiveCharacter]->_achieved_awards_bits, word_4F0754[2 * (unsigned int)window_SpeakInHouse->ptr_1C]) )
3301 v3 = (signed __int64)((double)v32 * p2DEvents[(unsigned int)v0->ptr_1C - 1].fPriceMultiplier); 3263 {
3302 v4 = v3 * (100 - v1->GetMerchant()) / 100; 3264 pTextHeight = pFontArrus->CalcTextHeight(pNPCTopics[171].pText, &dialog_window, 0, 0);//
3303 v32 = v4; 3265 dialog_window.DrawTitleText(pFontArrus, 0, (212 - pTextHeight) / 2 + 101, TargetColor(0xFFu, 0xFFu, 0x9Bu), pNPCTopics[171].pText, 3);
3304 if ( v4 < v3 / 3 ) 3266 pDialogueWindow->pNumPresenceButton = 0;
3305 { 3267 return;
3306 v4 = v3 / 3; 3268 }
3307 v32 = v3 / 3; 3269 if ( !HouseUI_CheckIfPlayerCanInteract() )
3308 } 3270 return;
3309 if ( dialog_menu_id != HOUSE_DIALOGUE_MAIN) 3271 v34 = 0;
3310 { 3272 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3311 if ( HouseUI_CheckIfPlayerCanInteract() ) 3273 i < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
3312 { 3274 {
3313 v5 = 0; 3275 if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType / 3][pDialogueWindow->GetControl(i)->msg_param - 36]
3314 3276 && !pPlayers[uActiveCharacter]->pActiveSkills[pDialogueWindow->GetControl(i)->msg_param - 36] )
3315 __debugbreak(); 3277 {
3316 //pSkillAvailabilityPerClass[8 + v58->uClass][4 + v23] 3278 v12 += pFontArrus->CalcTextHeight(pSkillNames[pDialogueWindow->GetControl(i)->msg_param - 36], &dialog_window, 0, 0);
3317 // or 3279 ++v34;
3318 //byte_4ED970_skill_learn_ability_by_class_table[v58->uClass][v23 - 36] 3280 }
3319 // or 3281 }
3320 //byte_4ED970_skill_learn_ability_by_class_table[v58->uClass - 1][v23 + 1] 3282 if ( !v34 )
3321 __debugbreak(); // whacky condition - fix 3283 {
3322 if (false 3284 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);
3323 //if ( !*(&byte_4ED94C[37 * v1->uClass / 3] + dword_F8B19C) 3285 strcat(pTmpBuf.data(), "\n \n");
3324 || (v6 = (int)(&v1->uIntelligence + dialog_menu_id), *(short *)v6) ) 3286 strcat(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[528]);//Больше ничего не могу предложить.
3325 { 3287 pTextHeight = pFontArrus->CalcTextHeight(pTmpBuf.data(), &dialog_window, 0, 0);
3326 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); 3288 dialog_window.DrawTitleText(pFontArrus, 0, (174 - pTextHeight) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
3289 return;
3290 }
3291 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[401], pPrice);//Стоимость навыка: %lu
3292 dialog_window.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf.data(), 3);
3293 v32 = (149 - v12) / v34;
3294 if ( (149 - v12) / v34 > 32 )
3295 v32 = 32;
3296 v34 = (149 - v34 * v32 - v12) / 2 - v32 / 2 + 162;
3297 if ( pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton )
3298 {
3299 for ( int i = pDialogueWindow->pStartingPosActiveItem;
3300 i <pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem; ++i )
3301 {
3302 pButton = pDialogueWindow->GetControl(i);
3303 if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType / 3][pButton->msg_param - 36] )
3304 {
3305 if ( !pPlayers[uActiveCharacter]->pActiveSkills[pButton->msg_param - 36] )
3306 {
3307 pButton->uY = v32 + v34;
3308 pTextHeight = pFontArrus->CalcTextHeight(pSkillNames[pButton->msg_param - 36], &dialog_window, 0, 0);
3309 pButton->uHeight = pTextHeight;
3310 pButton->uW = pButton->uY + pTextHeight - 1;
3311 v34 = pButton->uY + pTextHeight - 1;
3312 pTextColor = TargetColor(0xFFu, 0xFFu, 0x9Bu);
3313 if ( pDialogueWindow->pCurrentPosActiveItem != i )
3314 pTextColor = TargetColor(0xFFu, 0xFFu, 0xFFu);
3315 dialog_window.DrawTitleText(pFontArrus, 0, pButton->uY, pTextColor, pSkillNames[pButton->msg_param - 36], 3);
3316 }
3317 }
3318 else
3319 {
3320 pButton->uW = 0;
3321 pButton->uHeight = 0;
3322 pButton->uY = 0;
3323 }
3324 }
3325 }
3326 return;
3327 }
3328
3329 if ( HouseUI_CheckIfPlayerCanInteract() )
3330 {
3331 v5 = 0;
3332 __debugbreak();
3333 //pSkillAvailabilityPerClass[8 + v58->uClass][4 + v23]
3334 // or
3335 //byte_4ED970_skill_learn_ability_by_class_table[v58->uClass][v23 - 36]
3336 // or
3337 //byte_4ED970_skill_learn_ability_by_class_table[v58->uClass - 1][v23 + 1]
3338 __debugbreak(); // whacky condition - fix
3339 if (false
3340 //if ( !*(&byte_4ED94C[37 * v1->uClass / 3] + dword_F8B19C)
3341 || (v6 = (int)(&pPlayers[uActiveCharacter]->uIntelligence + dialog_menu_id), *(short *)v6) )
3342 {
3343 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0);
3344 }
3345 else
3346 {
3347 if ( pParty->uNumGold < pPrice )
3348 {
3349 ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2);//У вас не хватает золота
3350 v27 = 4;
3327 } 3351 }
3328 else 3352 else
3329 { 3353 {
3330 if ( pParty->uNumGold < v4 ) 3354 Party::TakeGold(pPrice);
3331 { 3355 *(short *)v6 = 1;
3332 ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u); 3356 v27 = 2;
3333 v27 = 4; 3357 }
3334 } 3358 PlayHouseSound((unsigned int)window_SpeakInHouse->ptr_1C, (HouseSoundID)v27);
3335 else 3359 }
3336 { 3360 }
3337 Party::TakeGold(v4); 3361 else
3338 *(short *)v6 = 1; 3362 {
3339 v27 = 2; 3363 v5 = 0;
3340 } 3364 }
3341 PlayHouseSound((unsigned int)window_SpeakInHouse->ptr_1C, (HouseSoundID)v27); 3365 pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 1, v5);
3342 } 3366 return; // void func
3343 }
3344 else
3345 {
3346 v5 = 0;
3347 }
3348 /*result = pMessageQueue_50CBD0->uNumMessages;
3349 if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
3350 {
3351 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
3352 pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].param = 1;
3353 result = 3 * pMessageQueue_50CBD0->uNumMessages + 3;
3354 *(&pMessageQueue_50CBD0->uNumMessages + result) = v5;
3355 ++pMessageQueue_50CBD0->uNumMessages;
3356 }*/
3357 pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, 1, v5);
3358 return; // void func
3359 }
3360 if ( !(unsigned __int16)_449B57_test_bit((unsigned __int8 *)v1->_achieved_awards_bits, word_4F0754[2 * (unsigned int)window_SpeakInHouse->ptr_1C]) )
3361 {
3362 v24 = pNPCTopics[171].pText;
3363 v25 = v31;
3364 v26 = pFontArrus->CalcTextHeight(pNPCTopics[171].pText, &v28, 0, 0);
3365 v28.DrawTitleText(pFontArrus, 0, (212 - v26) / 2 + 101, v25, v24, 3u);
3366 pDialogueWindow->pNumPresenceButton = 0;
3367 return ;
3368 }
3369
3370 if ( !HouseUI_CheckIfPlayerCanInteract() )
3371 return;
3372 v8 = pDialogueWindow;
3373 v33 = 0;
3374 v34 = 0;
3375 v29 = pDialogueWindow;
3376 v9 = pDialogueWindow->pStartingPosActiveItem;
3377 v10 = v9 + pDialogueWindow->pNumPresenceButton;
3378 v35 = pDialogueWindow->pStartingPosActiveItem;
3379 if ( v9 >= v10 )
3380 goto LABEL_40;
3381 do
3382 {
3383 v11 = v8->GetControl(v35)->msg_param - 36;
3384 if ( byte_4ED970_skill_learn_ability_by_class_table[v1->classType / 3][v11] && !v1->pActiveSkills[v11] )
3385 {
3386 v12 = pFontArrus->CalcTextHeight(pSkillNames[v11], &v28, 0, 0);
3387 v33 += v12;
3388 ++v34;
3389 }
3390 v13 = v8->pStartingPosActiveItem;
3391 ++v35;
3392 }
3393 while ( v35 < v8->pNumPresenceButton + v13 );
3394 if ( !v34 )
3395 {
3396 LABEL_40:
3397 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[544], v1->pName, pClassNames[v1->classType]);
3398 strcat(pTmpBuf.data(), "\n \n");
3399 strcat(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[528]);
3400 v22 = v31;
3401 v23 = pFontArrus->CalcTextHeight(pTmpBuf.data(), &v28, 0, 0);
3402 v28.DrawTitleText(pFontArrus, 0, (174 - v23) / 2 + 138, v22, pTmpBuf.data(), 3u);
3403 return;
3404 }
3405 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[401], v32);
3406 v28.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf.data(), 3u);
3407 v32 = (149 - v33) / v34;
3408 if ( (149 - v33) / v34 > 32 )
3409 v32 = 32;
3410
3411 v35 = v8->pStartingPosActiveItem;
3412 v34 = (149 - v34 * v32 - v33) / 2 - v32 / 2 + 162;
3413 if ( v8->pStartingPosActiveItem < v8->pStartingPosActiveItem+ v8->pNumPresenceButton )
3414 {
3415 v33 = 2;
3416 do
3417 {
3418 v14 = v8->GetControl(v35);
3419 v15 = v14->msg_param - 36;
3420 if ( byte_4ED970_skill_learn_ability_by_class_table[v1->classType / 3][v15] )
3421 {
3422 v16 = 0;
3423 if ( !v1->pActiveSkills[v15] )
3424 {
3425 v17 = pSkillNames[v15];
3426 v14->uY = v32 + v34;
3427 v18 = pFontArrus->CalcTextHeight(v17, &v28, 0, 0);
3428 v19 = v14->uY;
3429 v14->uHeight = v18;
3430 v20 = v19 + v18 - 1;
3431 v14->uW = v20;
3432 v34 = v20;
3433 v21 = v31;
3434 if ( pDialogueWindow->pCurrentPosActiveItem != v33 )
3435 v21 = v30;
3436 v28.DrawTitleText(pFontArrus, 0, v19, v21, v17, 3u);
3437 goto LABEL_34;
3438 }
3439 }
3440 else
3441 {
3442 v16 = 0;
3443 }
3444 v14->uW = v16;
3445 v14->uHeight = v16;
3446 v14->uY = v16;
3447 LABEL_34:
3448 v8 = v29;
3449 ++v35;
3450 ++v33;
3451 }
3452 while ( v35 <v29->pNumPresenceButton + v29->pStartingPosActiveItem );
3453 }
3454 return;
3455 } 3367 }
3456 3368
3457 //----- (004B2A74) -------------------------------------------------------- 3369 //----- (004B2A74) --------------------------------------------------------
3458 void SimpleHouseAndBoatsDialog() 3370 void SimpleHouseDialog()
3459 { 3371 {
3460 char *v2; // eax@3 3372 char *v2; // eax@3
3461 unsigned int i; // eax@5 3373 unsigned int i; // eax@5
3462 NPCData *pNPC; // esi@6 3374 NPCData *pNPC; // esi@6
3463 char *v15; // esi@14 3375 char *v15; // esi@14
3476 unsigned int v45; // ecx@60 3388 unsigned int v45; // ecx@60
3477 unsigned __int16 v46; // ax@60 3389 unsigned __int16 v46; // ax@60
3478 GUIFont *v47; // ebx@64 3390 GUIFont *v47; // ebx@64
3479 int v48; // esi@64 3391 int v48; // esi@64
3480 GUIWindow w; // [sp+Ch] [bp-110h]@64 3392 GUIWindow w; // [sp+Ch] [bp-110h]@64
3481 GUIWindow v52; // [sp+60h] [bp-BCh]@13 3393 GUIWindow right_panel_window; // [sp+60h] [bp-BCh]@13
3482 GUIWindow house_window; // [sp+B4h] [bp-68h]@1 3394 GUIWindow house_window; // [sp+B4h] [bp-68h]@1
3483 char *pInString; // [sp+114h] [bp-8h]@12 3395 char *pInString; // [sp+114h] [bp-8h]@12
3484 3396
3485 memcpy(&house_window, pDialogueWindow, sizeof(house_window)); 3397 memcpy(&house_window, pDialogueWindow, sizeof(house_window));
3486 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic ) 3398 if ( pDialogueNPCCount == uNumDialogueNPCPortraits && uHouse_ExitPic )
3525 pDialogueWindow->DrawText(pFontArrus, 13, 354 - (pFontArrus->CalcTextHeight(pInString, &house_window, 13, 0) + 7), 3437 pDialogueWindow->DrawText(pFontArrus, 13, 354 - (pFontArrus->CalcTextHeight(pInString, &house_window, 13, 0) + 7),
3526 0, FitTextInAWindow(pInString, pFontArrus, &house_window, 0xDu, 0), 0, 0, 0); 3438 0, FitTextInAWindow(pInString, pFontArrus, &house_window, 0xDu, 0), 0, 0, 0);
3527 } 3439 }
3528 } 3440 }
3529 } 3441 }
3530 memcpy(&v52, pDialogueWindow, sizeof(v52)); 3442 //for right panel
3531 v52.uFrameX = 483; 3443 memcpy(&right_panel_window, pDialogueWindow, sizeof(right_panel_window));
3532 v52.uFrameWidth = 148; 3444 right_panel_window.uFrameX = 483;
3533 v52.uFrameZ = 334; 3445 right_panel_window.uFrameWidth = 148;
3534 3446 right_panel_window.uFrameZ = 334;
3535 if ( v52.pStartingPosActiveItem < v52.pStartingPosActiveItem + v52.pNumPresenceButton ) 3447 for ( int i = right_panel_window.pStartingPosActiveItem;
3536 { 3448 i < right_panel_window.pStartingPosActiveItem + right_panel_window.pNumPresenceButton; ++i )
3537 v15 = ""; 3449 {
3538 for ( int i = v52.pStartingPosActiveItem; i < v52.pStartingPosActiveItem + v52.pNumPresenceButton; ++i ) 3450 pButton = right_panel_window.GetControl(i);
3539 { 3451 switch ( pButton->msg_param )
3540 pButton = v52.GetControl(i); 3452 {
3541 if ( (signed int)pButton->msg_param > 24 ) 3453 case 19://evt_A
3542 { 3454 v15 = (char *)pNPCTopics[pNPC->evt_A-1].pTopic;
3543 if ( pButton->msg_param == 76 ) 3455 if ( !v15 )
3544 { 3456 {
3545 v15 = pGlobalTXT_LocalizationStrings[406];//Нанять 3457 pButton->msg_param = 0;
3546 strcpy(pButton->pButtonName, v15); 3458 v15 = "";
3547 continue; 3459 }
3548 } 3460 strcpy(pButton->pButtonName, v15);
3549 if ( pButton->msg_param == 77 ) 3461 continue;
3550 { 3462 case 20://evt_B
3551 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[407]);//Подробнее 3463 v15 = (char *)pNPCTopics[pNPC->evt_B-1].pTopic;
3552 continue; 3464 if ( !v15 )
3553 } 3465 {
3554 if ( pButton->msg_param == 79 ) 3466 pButton->msg_param = 0;
3555 { 3467 v15 = "";
3556 strcpy(pButton->pButtonName, _4B254D_SkillMasteryTeacher((int)v52.ptr_1C));
3557 continue;
3558 }
3559 if ( pButton->msg_param == 82 )
3560 {
3561 strcpy(pButton->pButtonName, ContractSelectText((int)v52.ptr_1C));
3562 continue;
3563 }
3564 if ( pButton->msg_param == 83 )
3565 {
3566 v29 = pMonsterStats->pInfos[bountyHunting_monster_id_for_hunting].pName;
3567 v31 = *(int *)v29;
3568 sprintfex(pTmpBuf.data(), "\f%05d%s\f%05d", TargetColor(0xFFu, 0xFFu, 0x9Bu), v31, TargetColor(0xFFu, 0xFFu, 0xFFu));
3569 sprintfex(pTmpBuf2.data(), bountyHunting_text, pTmpBuf.data(), 100 * (unsigned __int8)v29[8]);
3570 current_npc_text = pTmpBuf2.data();
3571 strcpy(pButton->pButtonName, "");
3572 continue;
3573 }
3574 if ( pButton->msg_param != 93 )
3575 {
3576 strcpy(pButton->pButtonName, "");
3577 continue;
3578 }
3579 }
3580 else
3581 {
3582 if ( pButton->msg_param == 24 )//evt_F
3583 {
3584 v15 = (char *)pNPCTopics[pNPC->evt_F-1].pTopic;
3585 if ( !v15 )
3586 {
3587 pButton->msg_param = 0;
3588 v15 = "";
3589 }
3590 strcpy(pButton->pButtonName, v15);
3591 continue;
3592 }
3593 v18 = pButton->msg_param - 13;
3594 if ( v18 )
3595 {
3596 if ( pButton->msg_param == 19 )//evt_A
3597 {
3598 v15 = (char *)pNPCTopics[pNPC->evt_A-1].pTopic;
3599 if ( !v15 )
3600 {
3601 pButton->msg_param = 0;
3602 v15 = "";
3603 }
3604 strcpy(pButton->pButtonName, v15);
3605 continue;
3606 }
3607 if ( pButton->msg_param == 20 )//evt_B
3608 {
3609 v15 = (char *)pNPCTopics[pNPC->evt_B-1].pTopic;
3610 if ( !v15 )
3611 {
3612 pButton->msg_param = 0;
3613 v15 = "";
3614 } 3468 }
3615 if ( uDialogueType != 84 ) 3469 if ( uDialogueType != 84 )
3616 { 3470 {
3617 strcpy(pButton->pButtonName, v15); 3471 strcpy(pButton->pButtonName, v15);
3618 continue; 3472 continue;
3620 sprintf(pTmpBuf.data(), format_4E2D80, TargetColor(0xE1u, 0xCDu, 0x23u), pItemsTable->pItems[contract_approved].pUnidentifiedName); 3474 sprintf(pTmpBuf.data(), format_4E2D80, TargetColor(0xE1u, 0xCDu, 0x23u), pItemsTable->pItems[contract_approved].pUnidentifiedName);
3621 sprintf(pTmpBuf2.data(), current_npc_text, pTmpBuf.data()); 3475 sprintf(pTmpBuf2.data(), current_npc_text, pTmpBuf.data());
3622 current_npc_text = pTmpBuf2.data(); 3476 current_npc_text = pTmpBuf2.data();
3623 strcpy(pButton->pButtonName, v15); 3477 strcpy(pButton->pButtonName, v15);
3624 continue; 3478 continue;
3625 } 3479 case 21://evt_C
3626 if ( pButton->msg_param == 21 )//evt_C
3627 {
3628 v15 = (char *)pNPCTopics[pNPC->evt_C-1].pTopic; 3480 v15 = (char *)pNPCTopics[pNPC->evt_C-1].pTopic;
3629 if ( !v15 ) 3481 if ( !v15 )
3630 { 3482 {
3631 pButton->msg_param = 0; 3483 pButton->msg_param = 0;
3632 v15 = ""; 3484 v15 = "";
3633 } 3485 }
3634 strcpy(pButton->pButtonName, v15); 3486 strcpy(pButton->pButtonName, v15);
3635 continue; 3487 continue;
3636 } 3488 case 22://evt_D
3637 if ( pButton->msg_param == 22 )//evt_D
3638 {
3639 v15 = (char *)pNPCTopics[pNPC->evt_D-1].pTopic; 3489 v15 = (char *)pNPCTopics[pNPC->evt_D-1].pTopic;
3640 if ( !v15 ) 3490 if ( !v15 )
3641 { 3491 {
3642 pButton->msg_param = 0; 3492 pButton->msg_param = 0;
3643 v15 = ""; 3493 v15 = "";
3644 } 3494 }
3645 strcpy(pButton->pButtonName, v15); 3495 strcpy(pButton->pButtonName, v15);
3646 continue; 3496 continue;
3647 } 3497 case 23://evt_E
3648 if ( pButton->msg_param == 23 )//evt_E
3649 {
3650 v15 = (char *)pNPCTopics[pNPC->evt_E-1].pTopic; 3498 v15 = (char *)pNPCTopics[pNPC->evt_E-1].pTopic;
3651 if ( !v15 ) 3499 if ( !v15 )
3652 { 3500 {
3653 pButton->msg_param = 0; 3501 pButton->msg_param = 0;
3654 v15 = ""; 3502 v15 = "";
3655 } 3503 }
3656 strcpy(pButton->pButtonName, v15); 3504 strcpy(pButton->pButtonName, v15);
3657 continue; 3505 continue;
3658 } 3506 case 24://evt_F
3507 v15 = (char *)pNPCTopics[pNPC->evt_F-1].pTopic;
3508 if ( !v15 )
3509 {
3510 pButton->msg_param = 0;
3511 v15 = "";
3512 }
3513 strcpy(pButton->pButtonName, v15);
3514 continue;
3515 case 76:
3516 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[406]);//Нанять
3517 continue;
3518 case 77:
3519 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[407]);//Подробнее
3520 continue;
3521 case 79:
3522 strcpy(pButton->pButtonName, _4B254D_SkillMasteryTeacher((int)right_panel_window.ptr_1C));
3523 continue;
3524 case 82:
3525 strcpy(pButton->pButtonName, ContractSelectText((int)right_panel_window.ptr_1C));
3526 continue;
3527 case 83:
3528 v29 = pMonsterStats->pInfos[bountyHunting_monster_id_for_hunting].pName;
3529 v31 = *(int *)v29;
3530 sprintfex(pTmpBuf.data(), "\f%05d%s\f%05d", TargetColor(0xFFu, 0xFFu, 0x9Bu), v31, TargetColor(0xFFu, 0xFFu, 0xFFu));
3531 sprintfex(pTmpBuf2.data(), bountyHunting_text, pTmpBuf.data(), 100 * (unsigned __int8)v29[8]);
3532 current_npc_text = pTmpBuf2.data();
3533 strcpy(pButton->pButtonName, "");
3534 continue;
3535 }
3536 if ( pButton->msg_param < 13 )
3537 {
3538 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[122]);//Вступить
3539 continue;
3540 }
3541 if ( pButton->msg_param > 13 && pButton->msg_param < 19 )
3542 {
3659 strcpy(pButton->pButtonName, ""); 3543 strcpy(pButton->pButtonName, "");
3660 continue; 3544 continue;
3661 } 3545 }
3662 strcpy(pButton->pButtonName, pGlobalTXT_LocalizationStrings[122]);//Вступить 3546 if ( pButton->msg_param != 93 )
3663 } 3547 {
3664 } 3548 strcpy(pButton->pButtonName, "");
3665 } 3549 continue;
3550 }
3551 }
3666 v34 = 0; 3552 v34 = 0;
3667 v36 = pDialogueWindow->pStartingPosActiveItem; 3553 v36 = pDialogueWindow->pStartingPosActiveItem;
3668 for ( i = v36 + pDialogueWindow->pNumPresenceButton; (signed int)v36 < (signed int)i; i = pDialogueWindow->pNumPresenceButton 3554 for ( i = v36 + pDialogueWindow->pNumPresenceButton; (signed int)v36 < (signed int)i; i = pDialogueWindow->pNumPresenceButton
3669 + pDialogueWindow->pStartingPosActiveItem ) 3555 + pDialogueWindow->pStartingPosActiveItem )
3670 { 3556 {
3671 v37 = pDialogueWindow->GetControl(v36); 3557 v37 = pDialogueWindow->GetControl(v36);
3672 v38 = pFontArrus->CalcTextHeight(v37->pButtonName, &v52, 0, 0); 3558 v38 = pFontArrus->CalcTextHeight(v37->pButtonName, &right_panel_window, 0, 0);
3673 v34 += v38; 3559 v34 += v38;
3674 ++v36; 3560 ++v36;
3675 } 3561 }
3676 v39 = pDialogueWindow->pNumPresenceButton; 3562 v39 = pDialogueWindow->pNumPresenceButton;
3677 if ( v39 ) 3563 if ( v39 )
3685 { 3571 {
3686 pButton = pDialogueWindow->GetControl(i); 3572 pButton = pDialogueWindow->GetControl(i);
3687 //v42 = v41; 3573 //v42 = v41;
3688 v43 = pButton->pButtonName; 3574 v43 = pButton->pButtonName;
3689 pButton->uY = (unsigned int)((char *)pNPC + v40); 3575 pButton->uY = (unsigned int)((char *)pNPC + v40);
3690 v44 = pFontArrus->CalcTextHeight(pButton->pButtonName, &v52, 0, 0); 3576 v44 = pFontArrus->CalcTextHeight(pButton->pButtonName, &right_panel_window, 0, 0);
3691 v45 = pButton->uY; 3577 v45 = pButton->uY;
3692 pButton->uHeight = v44; 3578 pButton->uHeight = v44;
3693 v40 = v45 + v44 - 1; 3579 v40 = v45 + v44 - 1;
3694 pButton->uW = v40; 3580 pButton->uW = v40;
3695 v46 = TargetColor(0xE1u, 0xCDu, 0x23u); 3581 v46 = TargetColor(0xE1u, 0xCDu, 0x23u);
3696 if ( (char *)pDialogueWindow->pCurrentPosActiveItem != pInString ) 3582 if ( (char *)pDialogueWindow->pCurrentPosActiveItem != pInString )
3697 v46 = TargetColor(0xFFu, 0xFFu, 0xFFu); 3583 v46 = TargetColor(0xFFu, 0xFFu, 0xFFu);
3698 v52.DrawTitleText(pFontArrus, 0, v45, v46, v43, 3); 3584 right_panel_window.DrawTitleText(pFontArrus, 0, v45, v46, v43, 3);
3699 ++pInString; 3585 ++pInString;
3700 } 3586 }
3701 } 3587 }
3702 if ( current_npc_text ) 3588 if ( current_npc_text )
3703 { 3589 {
3724 memcpy(&jail_dialogue_window, window_SpeakInHouse, sizeof(jail_dialogue_window)); 3610 memcpy(&jail_dialogue_window, window_SpeakInHouse, sizeof(jail_dialogue_window));
3725 jail_dialogue_window.uFrameX = 483; 3611 jail_dialogue_window.uFrameX = 483;
3726 jail_dialogue_window.uFrameWidth = 148; 3612 jail_dialogue_window.uFrameWidth = 148;
3727 jail_dialogue_window.uFrameZ = 334; 3613 jail_dialogue_window.uFrameZ = 334;
3728 jail_dialogue_window.DrawTitleText(pFontArrus, 0, (310 - pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[672], &jail_dialogue_window, 0, 0)) / 2 + 18, 3614 jail_dialogue_window.DrawTitleText(pFontArrus, 0, (310 - pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[672], &jail_dialogue_window, 0, 0)) / 2 + 18,
3729 TargetColor(0xFFu, 0xFFu, 0x9Bu), pGlobalTXT_LocalizationStrings[672], 3); 3615 TargetColor(0xFFu, 0xFFu, 0x9Bu), pGlobalTXT_LocalizationStrings[672], 3);//"За многочисленные преступления и злодеяния вы были приговорены к одному году заключения."
3730 } 3616 }