Mercurial > mm7
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 } |