Mercurial > mm7
changeset 247:fb8a876f41e1
Merge
author | Nomad |
---|---|
date | Mon, 18 Feb 2013 03:59:31 +0200 |
parents | 1bfe546561c4 (diff) f070b49d40dd (current diff) |
children | 37dcbe8f3cca 48f21f569328 92a551e4dbeb |
files | mm7_2.cpp mm7_5.cpp mm7_data.h |
diffstat | 8 files changed, 1440 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/Sprites.cpp Mon Feb 18 00:39:18 2013 +0000 +++ b/Sprites.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -11,8 +11,6 @@ -//extern int (__cdecl *sprintfex)(char *a1, const char *a2, ...); - struct SpriteFrameTable *pSpriteFrameTable;
--- a/mm7_2.cpp Mon Feb 18 00:39:18 2013 +0000 +++ b/mm7_2.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -12888,18 +12888,6 @@ srand(GetTickCount()); - /*GetDiskFreeSpaceA(0, &SectorsPerCluster, &BytesPerSector, &hdc, &TotalNumberOfClusters); - v4 = hdc * BytesPerSector * SectorsPerCluster; - if ( (unsigned int)v4 < 0x1E00000 ) - { - sprintfex( - pTmpBuf, - "Due to Window Virtual Memory requirements Might and Magic� VII\nrequires 30MB of free hard drive space to operate properly.\n\nAvailable on Current Drive = %luk", - (unsigned int)v4 / 1024i64); - v41 = 48; - v40 = "More Hard Drive Space Required"; - v39 = pTmpBuf; -*/ WNDCLASSEXW wcxw; { @@ -13402,11 +13390,9 @@ unsigned int startms; // [sp+8h] [bp-24h]@55 RECT Rect; // [sp+Ch] [bp-20h]@15 int a2[4]; // [sp+1Ch] [bp-10h]@15 -#ifdef MM7_TEXT_DLL - auto mm7text_dll = LoadLibraryW(L"mm7text.dll"); - sprintfex = (int (__cdecl *)(char *a1, const char *a2, ...))GetProcAddress(mm7text_dll, "_sprintfex"); -#endif - + + char test[1024]; + sprintfex(test, "^Pi[%s]: ������^R[�;��;]", "������"); if (pCmdLine && *pCmdLine) {
--- a/mm7_5.cpp Mon Feb 18 00:39:18 2013 +0000 +++ b/mm7_5.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -3479,7 +3479,7 @@ v158 = pParty->uNumGold + pParty->uNumGoldInBank; v146 = pGlobalTXT_LocalizationStrings[489];// "You have %d total gold, %d in the Bank"" //goto _sprintex_draw_status_and_continue; - sprintf(pTmpBuf, v146, v158, v174); + sprintfex(pTmpBuf, v146, v158, v174); sub_41C0B8_set_status_string(pTmpBuf); continue; case UIMSG_ShowStatus_DateTime:
--- a/mm7_data.cpp Mon Feb 18 00:39:18 2013 +0000 +++ b/mm7_data.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -321,8 +321,6 @@ //------------------------------------------------------------------------- // Data declarations -int (__cdecl *sprintfex)(char *a1, const char *a2, ...) = nullptr; - int pWindowList_at_506F50_minus1_indexing[1]; int dword_4C9890[10]; // weak int dword_4C9920[16]; // weak
--- a/mm7_data.h Mon Feb 18 00:39:18 2013 +0000 +++ b/mm7_data.h Mon Feb 18 03:59:31 2013 +0200 @@ -310,7 +310,6 @@ //------------------------------------------------------------------------- // Data declarations -//extern int (__cdecl *sprintfex)(char *a1, const char *a2, ...); extern int pWindowList_at_506F50_minus1_indexing[1]; extern int dword_4C9890[10]; // weak
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mm7text_ru.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -0,0 +1,1417 @@ +#include <string.h> +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> + +#include "Log.h" + + +struct GenderTableEntry +{ + const char *name; + int gender; +} gender_table_caps[] = +{ + {"�����", 0}, + {"����", 0}, + {"������", 0}, + {"��������", 0}, + {"������", 1}, + {"���", 0}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"���������", 0}, + {"����", 0}, + {"���������", 0}, + {"�����", 1}, + {"�������", 0}, + {"������", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 1}, + {"�����", 1}, + {"��������", 0}, + {"������", 1}, + {"����", 0}, + {"�����", 0}, + {"������", 1}, + {"������", 0}, + {"������", 1}, + {"�����", 1}, + {"����", 1}, + {"�����", 0}, + {"�������", 0}, + {"����", 0}, + {"����", 0}, + {"�����", 0}, + {"�����", 1}, + {"�������", 0}, + {"���������", 0}, + {"����", 0}, + {"������", 0}, + {"�����", 0}, + {"����", 0}, + {"������", 0}, + {"�������", 0}, + {"����", 0}, + {"�����", 0}, + {"��������", 0}, + {"�������", 0}, + {"�����", 0}, + {"������", 0}, + {"���", 0}, + {"������", 0}, + {"������", 0}, + {"���", 0}, + {"�������", 1}, + {"������", 0}, + {"����", 0}, + {"����", 0}, + {"�������", 1}, + {"�������", 1}, + {"����", 1}, + {"�������", 1}, + {"���", 0}, + {"���������", 0}, + {"��������", 0}, + {"������", 0}, + {"������", 0}, + {"�����", 0}, + {"�����", 0}, + {"����������", 1}, + {"�������", 0}, + {"�����", 0}, + {"������", 1}, + {"�������", 0}, + {"����", 0}, + {"�������", 0}, + {"���", 1}, + {"�����", 1}, + {"�����", 1}, + {"�����", 0}, + {"������", 1}, + {"�����", 0}, + {"�����", 0}, + {"�����", 0}, + {"������", 0}, + {"��", 0}, + {"���", 0}, + {"�����", 0}, + {"����", 0}, + {"��������", 0}, + {"�������", 0}, + {"�����", 1}, + {"��������", 0}, + {"�����", 0}, + {"������", 0}, + {"�����", 0}, + {"����", 0}, + {"�����", 0}, + {"������", 1}, + {"�������", 0}, + {"�����", 0}, + {"����", 0}, + {"�������", 0}, + {"���������", 0}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"������", 0}, + {"��������", 0}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"�����", 0}, + {"���", 0}, + {"�������", 1}, + {"�������", 0}, + {"�����", 1}, + {"�������", 1}, + {"�������", 1}, + {"����", 0}, + {"����", 0}, + {"�������", 0}, + {"�������", 0}, + {"�����", 1}, + {"����", 1}, + {"����", 0}, + {"������", 0}, + {"��������", 1}, + {"���������", 1}, + {"�����", 0}, + {"������", 0}, + {"������", 1}, + {"����", 1}, + {"������", 0}, + {"��������", 0}, + {"��������", 1}, + {"�����", 0}, + {"����", 0}, + {"�������", 0}, + {"������", 1}, + {"��������", 0}, + {"������", 0}, + {"������", 0}, + {"�������", 0}, + {"��������", 0}, + {"������", 1}, + {"��������", 0}, + {"��������", 1}, + {"�����", 0}, + {"��������", 0}, + {"���������", 0}, + {"������", 0}, + {"�������", 2}, + {"���������", 1}, + {"���������", 0}, + {"�����", 0}, + {"�����", 0}, + {"����������", 0}, + {"�����", 1}, + {"�����", 0}, + {"��������", 0}, + {"������", 1}, + {"����", 0}, + {"��������", 0}, + {"���", 0}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"������", 1}, + {"�����", 0}, + {"���������", 1}, + {"�����", 1}, + {"����", 0}, + {"����", 1}, + {"������", 0}, + {"�������", 0}, + {"�������", 1}, + {"�����", 0}, + {"��������", 1}, + {"����", 0}, + {"�������", 0}, + {"������", 0}, + {"��������", 1}, + {"����", 0}, + {"����������", 1}, + {"�������", 1}, + {"��������", 0}, + {"�������", 0}, + {"��������������", 0}, + {"�������", 2}, + {"����", 0}, + {"������", 1}, + {"��������", 0}, + {"������", 1}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"������", 0}, + {"���", 0}, + {"�����", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 0}, + {"������", 0}, + {"���������", 0}, + {"�����", 0}, + {"������", 0}, + {"����", 0}, + {"�������", 0}, + {"����", 0}, + {"�������", 1}, + {"������", 0}, + {"��������", 0}, + {"���", 0}, + {"�����", 0}, + {"������", 1}, + {"���", 0}, + {"������", 0}, + {"������", 0}, + {"����", 1}, + {"�������", 0}, + {"�����", 0}, + {"����", 1}, + {"������", 1}, + {"�����", 0}, + {"�����", 1}, + {"������", 0}, + {"�����", 1}, + {"�����", 0}, + {"�����", 0}, + {"������", 1}, + {"�����", 1}, + {"������", 1}, + {"�����", 0}, + {"����", 0}, + {"����", 0}, + {"���", 0}, + {"�������", 1}, + {"�����", 1}, + {"�����", 0}, + {"�����������", 0}, + {"������", 2}, + {"�����", 0}, + {"�������", 0}, + {"������", 1}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"����", 0}, + {"�����", 0}, + {"������", 0}, + {"�����", 1}, + {"�������", 0}, + {"����", 0}, + {"�����", 1}, + {"�����", 0}, + {"��������", 1}, + {"������", 1}, + {"��������", 0}, + {"�����������", 1}, + {"������", 0}, + {"�������", 0}, + {"������", 0}, + {"�����", 0}, + {"������", 1}, + {"��������", 1}, + {"�������", 0}, + {"����", 0}, + {"����", 1}, + {"�����", 1}, + {"�������", 1}, + {"������", 1}, + {"�����", 0}, + {"���", 2}, + {"�����", 1}, + {"������", 1}, + {"�������", 1}, + {"������", 0}, + {"����", 0}, + {"�����", 1}, + {"�������", 1}, + {"����", 0}, + {"��������", 0}, + {"������", 0}, + {"����", 0}, + {"������", 0}, + {"������", 0}, + {"����", 0}, + {"�����", 1}, + {"������", 1}, + {"�����", 1}, + {"����", 1}, + {"�����", 1}, + {"�����", 0}, + {"���", 0}, + {"�����", 0}, + {"�������", 0}, + {"���", 0}, + {"�������", 1}, + {"�����", 0}, + {"���", 0}, + {"�������", 0}, + {"��������", 1}, + {"���", 0}, + {"������", 1}, + {"�������", 0}, + {"�����", 1}, + {"�����", 1}, + {"�����", 1}, + {"������", 1}, + {"����������", 1}, + {"�������", 2}, + {"�������", 0}, + {"�����", 0}, + {"���", 0}, + {"������", 0}, + {"������", 0}, + {"������", 0}, + {"����", 0}, + {"���", 0}, + {"�����", 0}, + {"�����", 0}, + {"���", 0}, + {"���", 1}, + {"�������", 0}, + {"���������", 1}, + {"���-����", 0}, + {"���-����", 0}, + {"������", 1}, + {"������", 1}, + {"�������", 1}, + {"�����", 1}, + {"�����", 1}, + {"�����", 1}, + {"������", 1}, + {"����", 1}, + {"�����", 1}, + {"�������", 0}, + {"������", 0}, + {"����", 0}, + {"���", 0}, + {"�����", 0}, + {"������������", 2}, + {"�������", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 0}, + {"�����", 0}, + {"���", 0}, + {"������", 2}, + {"���", 0}, + {"�������", 0}, + {"������", 0}, + {"������", 0}, + {"��", 0}, + {"����", 0}, + {"����", 0}, + {"�������", 0}, + {"������", 1}, + {"�������", 0}, + {"�����", 0}, + {"���", 1}, + {"�������", 0}, + {"������", 0}, + {"����������", 0}, + {"���", 0}, + {"�����", 1}, + {"����", 0}, + {"������", 2}, + {"���������", 0}, + {"�������", 1}, + {"���", 0}, + {"����", 0}, + {"������", 0}, + {"�����", 0}, + {"������", 0}, + {"�����", 1}, + {"�����", 1}, + {"����", 1}, + {"����", 1}, + {"�����", 0}, + {"����", 0}, + {"������", 0}, + {"����", 0}, + {"���", 0}, + {"�����", 0}, + {"�������", 0}, + {"��������", 1}, + {"��������", 0}, + {"�������", 1}, + {"�������", 0}, + {"�����", 1}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"�����", 1}, + {"�����", 0}, + {"������", 0}, + {"������", 0}, + {"������", 1}, + {"������", 0}, + {"��������", 1}, + {"��������", 1}, + {"����", 1}, + {"������", 1}, + {"����", 0}, + {"�������", 0}, + {"�����", 0}, + {"�����", 0}, + {"�������", 0}, + {"������", 1}, + {"����", 0}, + {"���", 0}, + {"�����", 1}, + {"���", 0}, + {"������", 0}, + {"����", 1}, + {"����", 0}, + {"�����", 0}, + {"���", 1}, + {"��������", 1}, + {"����", 0}, + {"�����", 0}, + {"�����", 0}, + {"�������", 0}, + {"�����", 0}, + {"������", 0}, + {"��������", 0}, + {"����", 0}, + {"����", 1}, + {"����", 0}, + {"�����", 0}, + {"�������", 1}, + {"�����", 1}, + {"������", 0}, + {"������", 0}, + {"����������", 0}, + {"����������", 1}, + {"����", 2}, + {"����", 1}, + {"������", 0}, + {"����", 0}, + {"����", 0}, + {"������", 0}, + {"��������", 1}, + {"��������", 0}, + {"��������", 1}, + {"�����������", 0}, + {"������", 0}, + {"�����", 1}, + {"�������", 0}, + {"�����", 0}, + {"����", 0}, + {"������", 1}, + {"�������", 1}, + {"��������", 1}, + {"�������", 1}, + {"���������", 0}, + {"��������", 0}, + {"�����", 0}, + {"�����", 0}, + {"������", 0}, + {"������", 1}, + {"���", 1}, + {"����", 1}, + {"���", 0}, + {"�����", 0}, + {"�������", 0}, + {"�����", 1}, + {"����", 1}, + {"�����", 1}, + {"�������", 1}, + {"�������", 1}, + {"�����", 1}, + {"����", 0}, + {"��������", 0}, + {"�����������", 1}, + {"������", 0}, + {"�������", 0}, + {"����", 0}, + {"����", 1}, + {"����", 0}, + {"����", 1}, + {"�����", 0}, + {"����", 0}, + {"�����", 1}, + {"�����", 1}, + {"���", 1}, + {"�����", 1}, + {"����", 0}, + {"���", 0}, + {"�������", 0}, + {"�����", 1}, + {"�����", 0}, + {"�����", 1}, + {"������", 0}, + {"�������", 1}, + {"��", 0}, + {"��", 1}, + {"����", 0}, + {"�����", 1}, + {"����", 1}, + {"����", 1}, + {"������", 0}, + {"�����", 1}, + {"�����", 0}, + {"�����", 1}, + {"������", 0}, + {"�������", 0}, + {"����", 1}, + {"����", 0}, + {"���", 0}, + {"�����", 0}, + {"������", 0}, + {"�����", 0}, + {"������", 2}, + {"���", 0}, + {"�����", 0}, + {"����", 1}, + {"����", 0}, + {"�����", 1}, + {"������", 1}, + {"���", 0}, + {"�������", 0}, + {"��������", 0}, + {"���", 0}, + {"������", 0}, + {"�����", 1}, + {"����", 0}, + {"�����", 1}, + {"������", 0}, + {"�����", 0}, + {"������", 0}, + {"���", 0}, + {"������", 1}, + {"�����", 0}, + {"��������", 1}, + {"����", 0}, + {"�����", 0}, + {"�����", 0}, + {"���", 0}, + {"�����", 0}, + {"����", 0}, + {"��������", 0}, + {"��������", 0}, + {"�����", 0}, + {"����", 1}, + {"�����", 0}, + {"���������", 1}, + {"�������", 0}, + {"������", 0}, + {"���������", 1}, + {"��������", 1}, + {"����", 1}, + {"�������", 1}, + {"��������", 1}, + {"�����", 0}, + {"������", 0}, + {"�����", 1}, + {"������", 1}, + {"��������", 1}, + {"�����", 1}, + {"����", 0}, + {"�����", 0}, + {"�������", 0}, + {"������", 0}, + {"������", 1}, + {"������", 0}, + {"�����", 1}, + {"�����", 1}, + {"������", 1}, + {"�����", 1}, + {"������", 1}, + {"������", 0}, + {"������", 0}, + {"��������", 0}, + {"�����", 1}, + {"������", 0}, + {"������", 0}, + {"������", 0}, + {"������������", 2}, + {"����", 0}, + {"����������", 0}, + {"������", 0}, + {"������", 1}, + {"����", 1}, + {"������", 1}, + {"������", 0}, + {"�������", 1}, + {"�������", 1}, + {"����������", 2}, + {"������", 1}, + {"�������", 0}, + {"�������", 0}, + {"�������", 1}, + {"�������", 0}, + {"���", 0}, + {"�����", 1}, + {"�����������", 2}, + {"��������", 1}, + {"�����", 1}, + {"������", 1}, + {"����", 0}, + {"������", 1}, + {"�������", 0}, + {"�����", 1}, + {"�����", 0}, + {"������", 1}, + {"�����", 0}, + {"�����", 0}, + {"������", 1}, + {"������", 0}, + {"������", 0}, + {"��������", 0}, + {"���������", 1}, + {"������", 0}, + {"���", 0}, + {"�����", 1}, + {"����", 1}, + {"����", 1}, + {"�������", 1}, + {"������", 1}, + {"������", 0}, + {"������", 1}, + {"�������", 0}, + {"�����", 1}, + {"������", 1}, + {"�����", 0}, + {"���������", 0}, + {"���������", 1}, + {"������", 1}, + {"���", 0}, + {"���������", 0}, + {"�������", 0}, + {"������������", 0}, + {"���", 0}, + {"����", 1}, + {"�������", 0}, + {"�������", 0}, + {"������", 1}, + {"���", 0}, + {"����������", 0}, + {"���", 0}, + {"������", 1}, + {"����", 0}, + {"�����", 1}, + {"������", 0}, + {"������", 0}, + {"����", 0}, + {"����", 0}, + {"�����", 1}, + {"������", 1}, + {"������������", 1}, + {"��������", 0}, + {"����", 0}, + {"������", 0}, + {"������", 1}, + {"�����", 0}, + {"�������", 0}, + {"�����", 0}, + {"����", 0}, + {"�����", 0}, + {"�������", 0}, + {"�����", 0}, + {"���", 1}, + {"������", 1}, + {"������", 0}, + {"�����", 1}, + {"������", 0}, + {"��������", 1}, + {"���", 1}, + {"�����", 1}, + {"�����", 1}, + {"�����", 1}, + {"�����", 0}, + {"�����", 0}, + {"���������", 0}, + {"�����", 0}, + {"�����", 1}, + {"����", 0}, + {"���", 0}, + {"��������", 0}, + {"�����", 2}, + {"���", 0}, + {"�����������", 0}, + {"�����������", 0}, + {"���������", 0}, + {"���������", 0}, + {"���������", 0}, + {"������������", 0}, + {"�������", 0}, + {"����������", 2}, + {"�����������", 0}, + {"�������", 0}, + {"���������", 2}, + {"����", 0}, + {"���", 0}, + {"�����", 1}, + {"����", 0}, + {"���������", 0}, + {"�����", 0}, + {"�������", 0}, + {"�����", 0}, + {"�����", 0}, + {"�����", 0}, + {"��������", 0}, + {"������", 0}, + {"�����", 0}, + {"������", 1}, + {"�����", 0}, + {"�������", 0}, + {"������", 1}, + {"�������", 1}, + {"����", 1}, + {"���", 0}, + {"������", 1}, + {"����������", 0}, + {"����", 0}, + {"����", 0}, + {"����", 1}, + {"�����", 0}, + {"�������", 1}, + {"������", 0}, + {"����", 0}, + {"��������", 0}, + {"����", 1}, + {"������", 0}, + {"���", 0}, + {"�����", 0}, + {"������", 0}, + {"�������", 1}, + {"�����", 0}, + {"�������", 0}, + {"�����", 0}, + {"����", 1}, + {"������", 1}, + {"�������", 1}, + {"����", 1}, + {"�������", 1}, + {"���������", 1}, + {"���", 0}, + {"����", 0}, + {"������", 0}, + {"������", 1}, + {"���", 0}, + {"�������", 0}, + {"�����", 1}, + {"����", 0}, + {"����", 0}, + {"����", 1}, + {"������", 1}, + {"������", 1}, + {"����", 0}, + {"������", 0}, + {"���", 1}, + {"����", 1}, + {"������", 0}, + {"�����", 0}, + {"����", 0}, + {"�������", 1}, + {"����", 1}, + {"���", 0}, + {"�����", 1}, + {"����������", 0}, + {"�������", 0}, + {"������", 0}, + {"������", 1}, + {"������", 0}, + {"����������", 0}, + {"����", 1}, + {"����", 0}, + {"����", 0}, + {"��������", 1}, + {"����������", 0}, + {"���������", 2}, + {"���������", 1}, + {"���������", 0}, + {"���������", 0}, + {"������", 0}, + {"������", 0}, + {"������", 1}, + {"������", 1}, + {"������", 0}, + {"�����", 0}, + {"������", 0}, + {"���", 0}, + {"������", 0}, + {"���������", 0}, + {"��������", 1}, + {"�����", 0}, + {"������", 1}, + {"�����", 1}, + {"������", 1}, + {"�����", 0}, + {"������", 1}, + {"������", 0}, + {"������", 0}, + {"����������", 1}, + {"�����", 0}, + {"������", 0}, + {"�����", 0}, + {"������", 1}, + {"�����", 0}, + {"���", 0}, + {"������", 2}, + {"�����", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 1}, + {"�����", 0}, + {"������", 0}, + {"�������", 1}, + {"����", 0}, + {"������", 0}, + {"����������", 1}, + {"�����", 0}, + {"��������", 0}, + {"����������", 0}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"������", 0}, + {"������", 1}, + {"�����", 0}, + {"��������", 0}, + {"����������", 0}, + {"������", 1}, + {"�����", 1}, + {"���", 0}, + {"�����", 1}, + {"������", 1}, + {"����", 1}, + {"�������", 1}, + {"������", 0}, + {"������", 0}, + {"������", 0}, + {"����", 0}, + {"������", 1}, + {"�����", 1}, + {"����", 1}, + {"����", 1}, + {"����", 0}, + {"������", 0}, + {"������", 1}, + {"������", 1}, + {"�������", 0}, + {"�����", 1}, + {"���", 0}, + {"������", 0}, + {"����", 1}, + {"�������", 1}, + {"������", 0}, + {"����", 0}, + {"���", 0}, + {"�����", 0}, + {"���", 0}, + {"����", 0}, + {"����", 0}, + {"������", 1}, + {"�����", 0}, + {"�������", 0}, + {"�����", 1}, + {"����", 0}, + {"������", 1}, + {"���������", 0}, + {"�������", 0}, + {"������", 0}, + {"������", 0}, + {"��������", 0}, + {"���", 0}, + {"�����", 1}, + {"������", 1}, + {"������", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 1}, + {"������", 0}, + {"������", 0}, + {"�����", 0}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"���������", 0}, + {"������", 0}, + {"������", 0}, + {"����", 1}, + {"������", 0}, + {"�������", 1}, + {"���������", 0}, + {"���", 0}, + {"�����", 0}, + {"������", 1}, + {"��������", 1}, + {"�������", 0}, + {"�����", 0}, + {"���������", 1}, + {"������", 1}, + {"�������", 0}, + {"�����", 0}, + {"��������", 0}, + {"�����", 0}, + {"��������", 0}, + {"���������", 1}, + {"����", 0}, + {"��������", 0}, + {"������", 0}, + {"������", 0}, + {"�����", 1}, + {"���", 0}, + {"����", 0}, + {"����", 0}, + {"����", 0}, + {"�����", 0}, + {"�����", 0}, + {"��������", 1}, + {"������", 0}, + {"������", 0}, + {"�������", 0}, + {"��������", 0}, + {"�����", 1}, + {"������", 1}, + {"���", 0}, + {"�����", 1}, + {"�����", 0}, + {"������", 1}, + {"�������", 0}, + {"���", 0}, + {"������", 0}, + {"�����", 1}, + {"����", 0}, + {"���������", 2}, + {"���", 0}, + {"�����", 0}, + {"���", 0}, + {"�������", 0}, + {"����", 0}, + {"������", 0}, + {"������", 0}, + {"��������", 1}, + {"���", 0}, + {"���", 0}, + {"���", 0}, + {"������", 1}, + {"�����", 0}, + {"������", 0}, + {"�������", 0}, + {"�������", 0}, + {"�������", 0}, + {"������", 1}, + {"������������", 0}, + {"������", 0}, + {"������", 0}, + {"���", 0}, + {"���", 0}, + {"������", 2}, + {"�����", 0}, + {"����������", 1}, + {"�����", 1}, + {"�������", 1}, + {"������", 0}, + {"����", 0}, + {"�����", 1}, + {"������", 1}, + {"������", 0}, + {"�����", 1}, + {"������", 0}, + {"�����", 1}, + {"������", 1}, + {"�����", 0}, + {"�����", 1}, + {"���", 0}, + {"�����", 1}, + {"����", 0}, + {"�����", 1}, + {"����", 1}, + {"�����", 1}, + {"����", 0}, + {"������", 1}, + {"��", 0}, + {"�����", 0}, + {"����", 0}, + {"������", 0}, + {"����", 1}, + {"������", 0}, + {"����", 1}, + {"���", 0}, + {"�����", 1}, + {"������", 1}, + {"����������", 1}, + {"��", 0}, + {"�����", 0}, + {"����������", 0}, + {"����", 1}, + {"��������", 1}, + {"�����", 0}, + {"������", 1}, + {"������", 1}, + {"�������", 0}, + {"����", 1}, + {"�����", 1}, + {"����", 1}, + {"�����", 0}, + {"����", 0}, + {"���", 1}, + {"�����", 0}, + {"����", 1}, + {"��������", 0}, + {"�����", 0}, + {"�����", 1}, + {"����", 0}, + {"���", 1}, + {"���", 2}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"����", 1}, + {"���", 0}, + {"������", 0}, + {"����", 0}, + {"�����", 0}, + {"����", 0}, + {"����", 0}, + {"�����", 1}, + {"��", 0}, + {"�����", 0}, + {"�����", 1}, + {"����", 0}, + {"��������", 0}, + {"����", 0}, + {"��", 0}, + {"����", 0}, + {"����", 0}, + {"�����", 0} +}, + gender_table[] = +{ + {"��", 0}, {"�����", 1}, {"����", 0}, {"�����", 1}, {"�������", 0}, {"������", 0}, {"�����", 1}, {"������", 1}, {"���������", 0}, {"�������", 0}, {"���������", 1}, + {"����", 0}, {"���", 0}, {"�����", 1}, {"����", 0}, {"�����", 0}, {"����", 1}, {"��������", 1}, {"�����", 0}, {"��������", 1}, {"����", 0}, {"�����", 0}, + {"������", 0}, {"���", 0}, {"������", 0}, {"����������", 1}, {"���", 0}, {"��������", 0}, {"�����", 1}, {"��������", 0}, {"�����", 0}, {"��������", 1}, {"��������", 1}, + {"��������", 0}, {"�����", 1}, {"���������", 0}, {"����", 1}, {"������", 0}, {"�����", 0}, {"���", 0}, {"������", 0}, {"��������", 0}, {"����", 1}, {"�������", 0}, + {"��������", 1}, {"�����", 0}, {"���", 0}, {"����", 0}, {"������", 1}, {"������", 1}, {"����������", 0}, {"������", 0}, {"�������", 0}, {"�����", 0}, {"�����", 1}, + {"������", 0}, {"��������", 0}, {"���", 0}, {"��������", 0}, {"���", 0}, {"�������", 0}, {"������", 0}, {"�����", 0}, {"�������", 0}, {"������", 0}, {"������", 0}, + {"����", 0}, {"�������", 2}, {"�����", 1}, {"���������", 0} +}; + + + +#include <mbstring.h> + +int GetGender(char *ansi_name, int name_len) +{ + auto name = (unsigned char *)ansi_name; + + GenderTableEntry *table = nullptr; + unsigned int table_size = 0; + if (name[0] >= (unsigned char)'�' && name[0] <= (unsigned char)'�') + { + table = gender_table; + table_size = sizeof(gender_table) / sizeof(*gender_table); + } + else if (name[0] >= (unsigned char)'�' && name[0] <= (unsigned char)'�') + { + table = gender_table_caps; + table_size = sizeof(gender_table_caps) / sizeof(*gender_table_caps); + } + else return 0; + + int left = 0, + right = table_size - 1, + match = 0; + while (left <= right) + { + match = left + (right - left) / 2; + switch (_mbsncmp(name, (unsigned char *)table[match].name, name_len)) + { + case -1: right = match; break; + case 0: return table[match].gender; + case 1: left = match; break; + } + } + assert(false); + return 0; +} + + +bool IsSpecialName(const char *ansi_name) +{ + auto name = (unsigned char *)ansi_name; + return !_mbsncmp(name, (unsigned char *)"���� ���", 8) || !_mbsncmp(name, (unsigned char *)"�� ���", 6) || + !_mbsncmp(name, (unsigned char *)"����� � ������", 14) || !_mbsncmp(name, (unsigned char *)"����� ������", 12); +} +int GetSpecialGender(const char *ansi_name) +{ + auto name = (unsigned char *)ansi_name; + if (!_mbsncmp(name, (unsigned char *)"���� ���", 8)) + return 1; + if (!_mbsncmp(name, (unsigned char *)"�� ���", 6)) + return 1; + if (!_mbsncmp(name, (unsigned char *)"����� � ������", 14)) + return 1; + if (!!_mbsncmp(name, (unsigned char *)"����� ������", 12)) + return 0; + return 0; +} +const char *GetSpecialCase(const char *ansi_name, char c) +{ + auto name = (unsigned char *)ansi_name; + + if (!_mbsncmp(name, (unsigned char *)"���� ���", 8)) + return "���� ���"; + if (!_mbsncmp(name, (unsigned char *)"�� ���", 6)) + return "�� ���"; + + if (!_mbsncmp(name, (unsigned char *)"����� � ������", 14)) + switch (c) + { + case 'I': case 'i': return "����� � ������"; + case 'R': case 'r': return "���� � ������"; + case 'D': case 'd': return "������ � ������"; + case 'V': case 'v': return "���� � ������"; + case 'T': case 't': return "������� � ������"; + case 'P': case 'p': return "������ � ������"; + } + + if (!_mbsncmp(name, (unsigned char *)"����� ������", 12)) + switch (c) + { + case 'I': case 'i': return "����� ������"; + case 'R': case 'r': return "���� ������"; + case 'D': case 'd': return "������ ������"; + case 'V': case 'v': return "����� ������"; + case 'T': case 't': return "������� ������"; + case 'P': case 'p': return "������ ������"; + } + + return nullptr; +} + +int __cdecl sprintfex_internal(char *str) +{ + auto p = strstr(str, "^"); + if (!p) + return strlen(str); + + char buf[8192]; + assert(strlen(str) < sizeof(buf)); + + bool integer_token_defined = false; + int integer_token = 0; + + bool gender_token_defined = false; + int gender_token = 0; + + auto src = buf, + dst = p; + strcpy(buf, str + (p - str)); + while (true) + { + switch (src[1]) + { + case 'I': + { + if (src[2] != '[') + goto _invalid_token; + src += 3; // ^I[ + + if (sscanf(src, "%d", &integer_token)) + integer_token_defined = true; + + auto int_begin = src; + while (*src++ != ']'); + + int int_len = src - int_begin - 1; + strncpy(dst, int_begin, int_len); + dst += int_len; + } + break; + + case 'L': + { + if (src[2] != '[') + goto _invalid_token; + assert(integer_token_defined); + src += 3; // ^L[ + + auto ending1 = src; + while (*src++ != ';'); + auto ending2 = src; + while (*src++ != ';'); + auto ending3 = src; + while (*src++ != ']'); + + char *actual_ending = nullptr; + int actual_ending_len = 0; + + int modulo = abs(integer_token) % 10; + if (modulo == 1) + { + actual_ending = ending1; + actual_ending_len = ending2 - ending1 - 1; + } + else if (modulo >= 2 && modulo <= 4) + { + actual_ending = ending2; + actual_ending_len = ending3 - ending2 - 1; + } + else + { + actual_ending = ending3; + actual_ending_len = src - ending3 - 1; + } + + strncpy(dst, actual_ending, actual_ending_len); + dst += actual_ending_len; + } + break; + + case 'R': + { + if (src[2] != '[') + goto _invalid_token; + assert(gender_token_defined); + + src += 3; // ^R[ + + auto ending1 = src; + while (*src++ != ';'); + auto ending2 = src; + while (*src++ != ';'); + auto ending3 = src; + while (*src++ != ']'); + + char *actual_ending = nullptr; + int actual_ending_len = 0; + + if (gender_token == 0) + { + actual_ending = ending1; + actual_ending_len = ending2 - ending1 - 1; + } + else if (gender_token == 1) + { + actual_ending = ending2; + actual_ending_len = ending3 - ending2 - 1; + } + else if (gender_token == 2) + { + actual_ending = ending3; + actual_ending_len = src - ending3 - 1; + } + else assert(false); + + strncpy(dst, actual_ending, actual_ending_len); + dst += actual_ending_len; + } + break; + + case 'P': + { + if (src[3] != '[') + goto _invalid_token; + switch (src[2]) + { + case 'I': case 'i': + case 'R': case 'r': + case 'D': case 'd': + case 'V': case 'v': + case 'T': case 't': + case 'P': case 'p': break; + default: + goto _invalid_token; + } + + if (IsSpecialName(src + 4)) + { + __debugbreak(); // check this is ok + auto name = GetSpecialCase(src + 4, src[2]); + int name_len = strlen(name); + + gender_token = GetSpecialGender(src + 4); + gender_token_defined = true; + + strncpy(dst, name, name_len); + dst += name_len; + while (*src++ != ']'); + break; + } + + auto name_begin = src + 4; + int name_len = 0; + for (int i = 0; name_begin[i] != ']'; ++i) + name_len++; + gender_token = GetGender(name_begin, name_len); + gender_token_defined = true; + + switch (src[2]) + { + case 'I': case 'i': + { + strncpy(dst, name_begin, name_len); + dst += name_len; + } + break; + + case 'R': case 'r': + case 'D': case 'd': + case 'V': case 'v': + case 'T': case 't': + case 'P': case 'p': + { + auto token_begin = src; + int token_len = 0; + for (int i = 0; token_begin[i] != ']'; ++i) + token_len++; + strncpy(dst, token_begin, token_len); + dst += token_len; + } + } + while (*src++ != ']'); + } + break; + + default: + { +_invalid_token: + auto token_begin = src; + while (*src++ != ']'); + + int token_len = src - token_begin; + char token[1024]; + strncpy(token, token_begin, token_len); + token[token_len] = 0; + + Log::Warning(L"Invalid format token: %S", token); + assert(false); + } + break; + } + + *dst = 0; + + auto copy_begin = src; + src = strstr(src, "^"); + if (!src) + { + strcpy(dst, copy_begin); // just copy the rest + break; + } + + int copy_len = src - copy_begin; + strncpy(dst, copy_begin, copy_len); + dst += copy_len; + } + + return dst - str; +} + + + + + + +//mm6text.non -> c structure array + /*FILE *f = fopen("_1.txt", "w+t"); + FILE *in = fopen("mm6text.non", "rt"); + fscanf(in, "%*[^\n]\n"); + + int idx = 0; + auto pairs = new NameGender[8000]; + + char line[1024]; + while (fscanf(in, "%[^\n]\n", line) && !feof(in)) + { + char name1[100], name2[100], name3[100]; + int e = sscanf(line, "%s\t%s\t%s", pairs[idx].name, pairs[idx + 1].name, pairs[idx + 2].name); + pairs[idx].gender = 0; + pairs[idx+1].gender = 1; + pairs[idx+2].gender = 2; + idx += e; + } + + for (int i = 0; i < idx; ++i) + for (int j = 0; j < i; ++j) + { + if (_mbsicmp(pairs[i].name, pairs[j].name) < 0) + { + char n[1024]; + strcpy(n, (char *)pairs[j].name); + auto g = pairs[j].gender; + + strcpy((char *)pairs[j].name, (char *)pairs[i].name); + pairs[j].gender = pairs[i].gender; + + strcpy((char *)pairs[i].name, n); + pairs[i].gender = g; + } + } + + for (int i = 0; i < idx; ++i) + { + fprintf(f, " {\"%s\", %u},\n", pairs[i].name, pairs[i].gender); + } + fclose(f);*/ \ No newline at end of file
--- a/texts.cpp Mon Feb 18 00:39:18 2013 +0000 +++ b/texts.cpp Mon Feb 18 03:59:31 2013 +0200 @@ -15,6 +15,20 @@ char *pGlobalTXT_LocalizationStrings[MAX_LOC_STRINGS]; + +int __cdecl sprintfex(char *buf, const char *format, ...) +{ + va_list args_ptr; + va_start(args_ptr, format); + { + vsprintf(buf, format, args_ptr); + } + va_end(args_ptr); + + extern int __cdecl sprintfex_internal(char *buf); + return sprintfex_internal(buf); +} + //----- (00452B95) -------------------------------------------------------- void __cdecl SetSomeItemsNames() {