Mercurial > mm7
comparison GUIWindow.cpp @ 423:88c30918eef7
NPC_EventProcessor
author | Gloval |
---|---|
date | Sat, 23 Feb 2013 23:09:48 +0400 |
parents | c0700eaabeb8 |
children | afad358dc684 |
comparison
equal
deleted
inserted
replaced
416:233f9cfc32a3 | 423:88c30918eef7 |
---|---|
1758 unsigned int uNextFreeWindowID; // ebp@1 | 1758 unsigned int uNextFreeWindowID; // ebp@1 |
1759 //int *v8; // eax@1 | 1759 //int *v8; // eax@1 |
1760 //GUIWindow *pWindow; // esi@4 | 1760 //GUIWindow *pWindow; // esi@4 |
1761 int v10; // eax@4 | 1761 int v10; // eax@4 |
1762 unsigned int v11; // ebx@15 | 1762 unsigned int v11; // ebx@15 |
1763 NPCData *v12; // ebp@15 | 1763 NPCData *speakingNPC; // ebp@15 |
1764 void *v13; // ecx@18 | 1764 int v14; // eax@20 |
1765 bool v14; // eax@20 | 1765 int v16; // eax@25 |
1766 void *v15; // ecx@23 | 1766 int v18; // eax@30 |
1767 bool v16; // eax@25 | 1767 int v20; // eax@35 |
1768 void *v17; // ecx@28 | 1768 int v22; // eax@40 |
1769 bool v18; // eax@30 | 1769 int v24; // eax@45 |
1770 void *v19; // ecx@33 | |
1771 bool v20; // eax@35 | |
1772 void *v21; // ecx@38 | |
1773 bool v22; // eax@40 | |
1774 void *v23; // ecx@43 | |
1775 bool v24; // eax@45 | |
1776 int v25; // eax@65 | 1770 int v25; // eax@65 |
1777 unsigned int v26; // ebx@65 | 1771 unsigned int v26; // ebx@65 |
1778 char *v27; // eax@71 | 1772 char *v27; // eax@71 |
1779 const char *v29; // [sp-8h] [bp-18h]@68 | 1773 const char *v29; // [sp-8h] [bp-18h]@68 |
1780 char *v30; // [sp-4h] [bp-14h]@68 | 1774 char *v30; // [sp-4h] [bp-14h]@68 |
1781 int uWidtha; // [sp+14h] [bp+4h]@66 | 1775 int uWidtha; // [sp+14h] [bp+4h]@66 |
1782 int a4a; // [sp+20h] [bp+10h]@15 | 1776 int num_menu_buttons; // [sp+20h] [bp+10h]@15 |
1783 | 1777 |
1784 for (uNextFreeWindowID = 0; uNextFreeWindowID < 20; ++uNextFreeWindowID) | 1778 for (uNextFreeWindowID = 0; uNextFreeWindowID < 20; ++uNextFreeWindowID) |
1785 { | 1779 { |
1786 if (pWindowList[uNextFreeWindowID].eWindowType == WINDOW_null) | 1780 if (pWindowList[uNextFreeWindowID].eWindowType == WINDOW_null) |
1787 break; | 1781 break; |
1817 pCurrentScreen = SCREEN_NPC_DIALOGUE; | 1811 pCurrentScreen = SCREEN_NPC_DIALOGUE; |
1818 pBtn_ExitCancel = pWindow->CreateButton(0x1D7u, 0x1BDu, 0xA9u, 0x23u, 1, 0, 0x71u, 0, 0, pGlobalTXT_LocalizationStrings[79], //"Exit" | 1812 pBtn_ExitCancel = pWindow->CreateButton(0x1D7u, 0x1BDu, 0xA9u, 0x23u, 1, 0, 0x71u, 0, 0, pGlobalTXT_LocalizationStrings[79], //"Exit" |
1819 (Texture *)(uTextureID_506438 != -1 ? &pIcons_LOD->pTextures[uTextureID_506438] : 0), 0); | 1813 (Texture *)(uTextureID_506438 != -1 ? &pIcons_LOD->pTextures[uTextureID_506438] : 0), 0); |
1820 if ( pWindow->ptr_1C != (void *)1 ) | 1814 if ( pWindow->ptr_1C != (void *)1 ) |
1821 { | 1815 { |
1822 a4a = 0; | 1816 num_menu_buttons = 0; |
1823 v11 = LOBYTE(pFontArrus->uFontHeight) - 3; | 1817 v11 = LOBYTE(pFontArrus->uFontHeight) - 3; |
1824 v12 = GetNPCData(uDialogue_SpeakingActorNPC_ID); | 1818 speakingNPC = GetNPCData(uDialogue_SpeakingActorNPC_ID); |
1825 if ( sub_445C8B(uDialogue_SpeakingActorNPC_ID) == 1 ) | 1819 if ( sub_445C8B(uDialogue_SpeakingActorNPC_ID) == 1 ) |
1826 { | 1820 { |
1827 if ( v12->joins ) | 1821 if ( speakingNPC->joins ) |
1828 { | 1822 { |
1829 pWindow->CreateButton(480, 130, 140, v11, 1, 0, 0x88u, 0xDu, 0, "", 0); | 1823 pWindow->CreateButton(480, 130, 140, v11, 1, 0, 0x88u, 0xDu, 0, "", 0); |
1830 a4a = 1; | 1824 num_menu_buttons = 1; |
1831 } | 1825 } |
1832 v13 = (void *)v12->evt_A; | 1826 if ( speakingNPC->evt_A ) |
1833 if ( v13 ) | |
1834 { | 1827 { |
1835 if ( a4a < 4 ) | 1828 if ( num_menu_buttons < 4 ) |
1836 { | 1829 { |
1837 v14 = sub_4466C4(v13); | 1830 v14 = NPC_EventProcessor(speakingNPC->evt_A); |
1838 if ( v14 == 1 || v14 == 2 ) | 1831 if ( v14 == 1 || v14 == 2 ) |
1839 pWindow->CreateButton(0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x13u, 0, "", 0); | 1832 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x13u, 0, "", 0); |
1840 } | 1833 } |
1841 } | 1834 } |
1842 v15 = (void *)v12->evt_B; | 1835 if ( speakingNPC->evt_B ) |
1843 if ( v15 ) | |
1844 { | 1836 { |
1845 if ( a4a < 4 ) | 1837 if ( num_menu_buttons < 4 ) |
1846 { | 1838 { |
1847 v16 = sub_4466C4(v15); | 1839 v16 = NPC_EventProcessor(speakingNPC->evt_B); |
1848 if ( v16 == 1 || v16 == 2 ) | 1840 if ( v16 == 1 || v16 == 2 ) |
1849 pWindow->CreateButton(0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x14u, 0, "", 0); | 1841 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x14u, 0, "", 0); |
1850 } | 1842 } |
1851 } | 1843 } |
1852 v17 = (void *)v12->evt_C; | 1844 if ( speakingNPC->evt_C ) |
1853 if ( v17 ) | |
1854 { | 1845 { |
1855 if ( a4a < 4 ) | 1846 if ( num_menu_buttons < 4 ) |
1856 { | 1847 { |
1857 v18 = sub_4466C4(v17); | 1848 v18 = NPC_EventProcessor(speakingNPC->evt_C); |
1858 if ( v18 == 1 || v18 == 2 ) | 1849 if ( v18 == 1 || v18 == 2 ) |
1859 pWindow->CreateButton( 0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x15u, 0, "", 0); | 1850 pWindow->CreateButton( 0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x15u, 0, "", 0); |
1860 } | 1851 } |
1861 } | 1852 } |
1862 v19 = (void *)v12->evt_D; | 1853 if ( speakingNPC->evt_D ) |
1863 if ( v19 ) | |
1864 { | 1854 { |
1865 if ( a4a < 4 ) | 1855 if ( num_menu_buttons < 4 ) |
1866 { | 1856 { |
1867 v20 = sub_4466C4(v19); | 1857 v20 = NPC_EventProcessor(speakingNPC->evt_D); |
1868 if ( v20 == 1 || v20 == 2 ) | 1858 if ( v20 == 1 || v20 == 2 ) |
1869 pWindow->CreateButton(0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x16u, 0, "", 0); | 1859 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x16u, 0, "", 0); |
1870 } | 1860 } |
1871 } | 1861 } |
1872 v21 = (void *)v12->evt_E; | 1862 if ( speakingNPC->evt_E ) |
1873 if ( v21 ) | |
1874 { | 1863 { |
1875 if ( a4a < 4 ) | 1864 if ( num_menu_buttons < 4 ) |
1876 { | 1865 { |
1877 v22 = sub_4466C4(v21); | 1866 v22 = NPC_EventProcessor(speakingNPC->evt_E); |
1878 if ( v22 == 1 || v22 == 2 ) | 1867 if ( v22 == 1 || v22 == 2 ) |
1879 pWindow->CreateButton(0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x17u, 0, "", 0); | 1868 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x17u, 0, "", 0); |
1880 } | 1869 } |
1881 } | 1870 } |
1882 v23 = (void *)v12->evt_F; | 1871 if (speakingNPC->evt_F ) |
1883 if ( v23 ) | |
1884 { | 1872 { |
1885 if ( a4a < 4 ) | 1873 if ( num_menu_buttons < 4 ) |
1886 { | 1874 { |
1887 v24 = sub_4466C4(v23); | 1875 v24 = NPC_EventProcessor(speakingNPC->evt_F); |
1888 if ( v24 == 1 || v24 == 2 ) | 1876 if ( v24 == 1 || v24 == 2 ) |
1889 pWindow->CreateButton(0x1E0u, a4a++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x18u, 0, "", 0); | 1877 pWindow->CreateButton(0x1E0u, num_menu_buttons++ * v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x18u, 0, "", 0); |
1890 } | 1878 } |
1891 } | 1879 } |
1892 } | 1880 } |
1893 else | 1881 else |
1894 { | 1882 { |
1895 if ( v12->joins ) | 1883 if ( speakingNPC->joins ) |
1896 { | 1884 { |
1897 pWindow->CreateButton(0x1E0u, 0x82u, 0x8Cu, v11, 1, 0, 0x88u, 0x4Du, 0, pGlobalTXT_LocalizationStrings[407], 0);//Подробнее | 1885 pWindow->CreateButton(0x1E0u, 0x82u, 0x8Cu, v11, 1, 0, 0x88u, 0x4Du, 0, pGlobalTXT_LocalizationStrings[407], 0);//Подробнее |
1898 if (v12->Hired()) | 1886 if (speakingNPC->Hired()) |
1899 { | 1887 { |
1900 sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[408], v12->pName); //Отпустить | 1888 sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[408], speakingNPC->pName); //Отпустить |
1901 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x4Cu, 0, pTmpBuf, 0); | 1889 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x4Cu, 0, pTmpBuf, 0); |
1902 } | 1890 } |
1903 else | 1891 else |
1904 { | 1892 { |
1905 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x4Cu, 0, pGlobalTXT_LocalizationStrings[406], 0);//Нанять | 1893 pWindow->CreateButton(0x1E0u, v11 + 130, 0x8Cu, v11, 1, 0, 0x88u, 0x4Cu, 0, pGlobalTXT_LocalizationStrings[406], 0);//Нанять |
1906 } | 1894 } |
1907 a4a = 2; | 1895 num_menu_buttons = 2; |
1908 } | 1896 } |
1909 } | 1897 } |
1910 pWindow->_41D08F(a4a, 1, 0, 1); | 1898 pWindow->_41D08F(num_menu_buttons, 1, 0, 1); |
1911 } | 1899 } |
1912 break; | 1900 break; |
1913 case WINDOW_ChangeLocation: | 1901 case WINDOW_ChangeLocation: |
1914 pMainScreenNum = pCurrentScreen; | 1902 pMainScreenNum = pCurrentScreen; |
1915 pCurrentScreen = SCREEN_CHANGE_LOCATION; | 1903 pCurrentScreen = SCREEN_CHANGE_LOCATION; |
1953 { | 1941 { |
1954 uWidtha = v26 + 1; | 1942 uWidtha = v26 + 1; |
1955 if ( v26 + 1 == v25 && uHouse_ExitPic ) | 1943 if ( v26 + 1 == v25 && uHouse_ExitPic ) |
1956 { | 1944 { |
1957 v30 = pMapStats->pInfos[uHouse_ExitPic].pName; | 1945 v30 = pMapStats->pInfos[uHouse_ExitPic].pName; |
1958 v29 = (char*)pGlobalTXT_LocalizationStrings[411];//Войти в ^Pv[%s] | 1946 v29 = (char*)pGlobalTXT_LocalizationStrings[LOCSTR_ENTER_S];//Войти в ^Pv[%s] |
1959 } | 1947 } |
1960 else | 1948 else |
1961 { | 1949 { |
1962 if ( v26 || !dword_591080 ) | 1950 if ( v26 || !dword_591080 ) |
1963 v27 = array_5913D8[v26 - (dword_591080 != 0)]->pName; | 1951 v27 = array_5913D8[v26 - (dword_591080 != 0)]->pName; |
1964 else | 1952 else |
1965 //v27 = (char *)p2DEvents_minus1_::08[13 * a4]; | 1953 //v27 = (char *)p2DEvents_minus1_::08[13 * a4]; |
1966 v27 = (char *)p2DEvents[pButton - 1].pProprieterName; | 1954 v27 = (char *)p2DEvents[pButton - 1].pProprieterName; |
1967 v30 = v27; | 1955 v30 = v27; |
1968 v29 = (char*)pGlobalTXT_LocalizationStrings[435];//Побеседовать с ^Pt[%s] | 1956 v29 = (char*)pGlobalTXT_LocalizationStrings[435];// "Converse with %s" Побеседовать с ^Pt[%s] |
1969 } | 1957 } |
1970 sprintf(&byte_591180[100 * v26], v29, v30); | 1958 sprintf(&byte_591180[100 * v26], v29, v30); |
1971 array_5913D8[v26 + 7] = (NPCData *)pWindow->CreateButton(*(&pNPCPortraits_x + v26 + 6 * uNumDialogueNPCPortraits - 6), | 1959 array_5913D8[v26 + 7] = (NPCData *)pWindow->CreateButton(*(&pNPCPortraits_x + v26 + 6 * uNumDialogueNPCPortraits - 6), |
1972 *(&pNPCPortraits_y + v26 + 6 * uNumDialogueNPCPortraits - 6), | 1960 *(&pNPCPortraits_y + v26 + 6 * uNumDialogueNPCPortraits - 6), |
1973 0x3Fu, 0x49u, 1, 0, 0x19Au, v26, 0, &byte_591180[100 * v26], 0, 0, 0); | 1961 0x3Fu, 0x49u, 1, 0, 0x19Au, v26, 0, &byte_591180[100 * v26], 0, 0, 0); |