diff --git a/Speedy Eggbert 2 Source.vcxproj b/Speedy Eggbert 2 Source.vcxproj index 397d1d1..2bb3efe 100644 --- a/Speedy Eggbert 2 Source.vcxproj +++ b/Speedy Eggbert 2 Source.vcxproj @@ -168,6 +168,7 @@ + @@ -206,6 +207,7 @@ + @@ -221,7 +223,6 @@ - diff --git a/Speedy Eggbert 2 Source.vcxproj.filters b/Speedy Eggbert 2 Source.vcxproj.filters index 9cd2dc3..df874e5 100644 --- a/Speedy Eggbert 2 Source.vcxproj.filters +++ b/Speedy Eggbert 2 Source.vcxproj.filters @@ -63,6 +63,9 @@ Resource Files + + Resource Files + @@ -107,9 +110,6 @@ Header Files - - Header Files - Header Files @@ -125,6 +125,9 @@ Header Files + + Header Files + diff --git a/resource/Eggbert2.aps b/resource/Eggbert2.aps index d2e5440..0a412f3 100644 Binary files a/resource/Eggbert2.aps and b/resource/Eggbert2.aps differ diff --git a/resource/Eggbert2.rc b/resource/Eggbert2.rc index 5b40d06..1ad7d3c 100644 Binary files a/resource/Eggbert2.rc and b/resource/Eggbert2.rc differ diff --git a/resource/RCa07276 b/resource/RCa07276 new file mode 100644 index 0000000..3cba63e Binary files /dev/null and b/resource/RCa07276 differ diff --git a/resource/RCa07552 b/resource/RCa07552 new file mode 100644 index 0000000..ca64fbb Binary files /dev/null and b/resource/RCa07552 differ diff --git a/resource/RCb07276 b/resource/RCb07276 new file mode 100644 index 0000000..3cba63e Binary files /dev/null and b/resource/RCb07276 differ diff --git a/resource/RCc07276 b/resource/RCc07276 new file mode 100644 index 0000000..3cba63e Binary files /dev/null and b/resource/RCc07276 differ diff --git a/resource/resource.h b/resource/resource.h new file mode 100644 index 0000000..52fc058 --- /dev/null +++ b/resource/resource.h @@ -0,0 +1,561 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Eggbert2.rc +// +#define TX_IONAMEEX 100 +#define TX_IOFREE 101 +#define TX_OWNMISSION 102 +#define TX_TESTMISSION 103 +#define TX_BUTTON_JOUER 104 +#define TX_BUTTON_APPRENDRE 105 +#define TX_BUTTON_QUITTER 106 +#define TX_BUTTON_PREVP 107 +#define TX_BUTTON_NEXTP 108 +#define TX_BUTTON_PLAYP 109 +#define TX_BUTTON_BUILDP 110 +#define TX_BUTTON_TERM 111 +#define TX_BUTTON_READP 112 +#define TX_BUTTON_WRITEP 113 +#define TX_BUTTON_CANCELP 114 +#define TX_BUTTON_CONTP 115 +#define TX_BUTTON_REPEAT 116 +#define TX_CHOOSEPLAYER 117 +#define TX_PLAYERSNAME 118 +#define TX_BUTTON_TERMC 119 +#define TX_CHOOSESIZE 120 +#define TX_BUTTON_HVSCROLL 121 +#define TX_BUTTON_ONLYHSCROLL 122 +#define TX_BUTTON_ONLYVSCROLL 123 +#define TX_BUTTON_TESTMISSION 124 +#define TX_PAUSE 125 +#define TX_TINY 126 +#define TX_CLEARPLAYER 127 +#define TX_SETTINGS 128 +#define TX_CHOOSEMUSIC 129 +#define TX_BUTTON_SETUP1 130 +#define TX_BUTTON_SETUP2 131 +#define TX_BUTTON_SETUP3 132 +#define TX_BUTTON_SETUP4 133 +#define TX_NOMUSIC 134 +#define TX_MUSIC1 135 +#define TX_MUSIC2 136 +#define TX_MUSIC3 137 +#define TX_MUSIC4 138 +#define TX_MUSIC5 139 +#define TX_MUSIC6 140 +#define TX_MUSIC7 141 +#define TX_MUSIC8 142 +#define TX_MUSIC9 143 +#define TX_BUTTON_REGION 144 +#define TX_CHOOSEBACK 144 +#define TX_DISCARDGAME 145 +#define TX_CONFIRMCLEARGAME 145 +#define TX_EGGBERT 146 +#define TX_BLUPI 146 +#define TX_DESIGNMISSION 147 +#define TX_DESIGNMISSIONS 147 +#define TX_CHOOSEGAMER 148 +#define TX_CHOOSEPLAYER2 148 +#define TX_MUSIC 149 +#define TX_CHOOSEMUSIC2 149 +#define TX_TRAININGNUM 150 +#define TX_MISSIONNUM 151 +#define TX_MISSIONTIME 152 +#define IDS_STRING152 152 +#define TX_SIZE 153 +#define IDS_STRING153 153 +#define TX_BUTTON_SETUP5 154 +#define IDS_STRING154 154 +#define TX_BUTTON_SETUP6 155 +#define IDS_STRING155 155 +#define TX_BUTTON_SETUP7 156 +#define IDS_STRING156 156 +#define TX_BUTTON_SETUP8 157 +#define IDS_STRING157 157 +#define TX_CONFYES 158 +#define IDS_STRING158 158 +#define TX_CONFNO 159 +#define IDS_STRING159 159 +#define TX_SETTING 160 +#define IDS_STRING160 160 +#define TX_SAVECURRENTMISS 161 +#define IDS_STRING161 161 +#define TX_SOUNDVOL 162 +#define IDS_STRING162 162 +#define TX_MUSICVOL 163 +#define IDS_STRING163 163 +#define TX_COLORDEP 164 +#define IDS_STRING164 164 +#define TX_INPUT 165 +#define IDS_STRING165 165 +#define TX_OPENMISS 166 +#define IDS_STRING166 166 +#define TX_READINFO 167 +#define IDS_STRING167 167 +#define TX_PLAYERFREE 168 +#define IDS_STRING168 168 +#define TX_NUMDOOROPEN 169 +#define IDS_STRING169 169 +#define TX_NUMDOORSOPEN 170 +#define IDS_STRING170 170 +#define TX_MUSIC10 171 +#define IDS_STRING171 171 +#define TX_WRITENAME 172 +#define IDS_STRING172 172 +#define TX_NONE 173 +#define IDS_STRING173 173 +#define TX_CONFIRM 174 +#define IDS_STRING174 174 +#define TX_CANCEL 175 +#define IDS_STRING175 175 +#define TX_YES 176 +#define IDS_STRING176 176 +#define TX_NO 177 +#define IDS_STRING177 177 +#define TX_REGION 178 +#define IDS_STRING178 178 +#define TX_SUS 179 +#define IDS_STRING179 179 +#define TX_BUTTON_SETUP 180 +#define IDS_STRING180 180 +#define TX_SAVES 181 +#define IDS_STRING181 181 +#define TX_INSERT 182 +#define IDS_STRING182 182 +#define TX_DELETEMISS 183 +#define IDS_STRING183 183 +#define TX_DELETEMISSION 184 +#define IDS_STRING184 184 +#define TX_NAMEOFMISS 185 +#define IDS_STRING185 185 +#define TX_NAMEOFMISSION 186 +#define IDS_STRING186 186 +#define TX_NONAME 187 +#define IDS_STRING187 187 +#define TX_DESIGN 188 +#define IDS_STRING188 188 +#define TX_MISSNUM 189 +#define IDS_STRING189 189 +#define TX_MISSTIME 190 +#define IDS_STRING190 190 +#define TX_MISSION2D 191 +#define IDS_STRING191 191 +#define TX_SHOWNEXT 192 +#define IDS_STRING192 192 +#define TX_SHOWPREV 193 +#define IDS_STRING193 193 +#define TX_CONTENT 194 +#define IDS_STRING194 194 +#define TX_SINGLEPLAYER 195 +#define IDS_STRING195 195 +#define TX_MUTLIPLAYER 196 +#define TX_MULTIPLAYER 196 +#define IDS_STRING196 196 +#define TX_GAMEPAUSE 197 +#define TX_CANCELLAST 198 +#define TX_PLAYDEMO 199 +#define IDS_STRING199 199 +#define TX_HADFUN 200 +#define IDS_STRING200 200 +#define TX_OGCREATION 201 +#define IDS_STRING201 201 +#define TX_WEBSITE 202 +#define IDS_STRING202 202 +#define TX_FULL_END1 203 +#define IDS_STRING203 203 +#define TX_FULL_END2 204 +#define IDS_STRING204 204 +#define TX_FULL_END3 205 +#define IDS_STRING205 205 +#define TX_FULL_END4 206 +#define IDS_STRING206 206 +#define TX_CHOOSECOLOR 207 +#define IDS_STRING207 207 +#define TX_CLICKREADY 208 +#define IDS_STRING208 208 +#define TX_BUTTON_SKILL 209 +#define IDS_STRING209 209 +#define TX_EASY 210 +#define IDS_STRING210 210 +#define TX_HARD 211 +#define IDS_STRING211 211 +#define TX_BUTTON_DEMO 212 +#define IDS_STRING212 212 +#define TX_DEMOREC 213 +#define TX_DEMOPLAY 214 +#define IDS_STRING215 215 +#define IDS_STRING216 216 +#define IDS_STRING217 217 +#define IDS_STRING218 218 +#define IDS_STRING219 219 +#define IDS_STRING220 220 +#define IDS_STRING221 221 +#define IDS_STRING222 222 +#define IDS_STRING223 223 +#define IDS_STRING224 224 +#define IDS_STRING225 225 +#define IDS_STRING226 226 +#define IDS_STRING227 227 +#define IDS_STRING228 228 +#define IDS_STRING229 229 +#define IDS_STRING230 230 +#define IDS_STRING231 231 +#define IDS_STRING232 232 +#define IDS_STRING233 233 +#define IDS_STRING234 234 +#define IDS_STRING235 235 +#define IDS_STRING236 236 +#define IDS_STRING237 237 +#define IDS_STRING238 238 +#define IDS_STRING239 239 +#define IDS_STRING240 240 +#define IDS_STRING241 241 +#define TX_SHOWCONNECTION 242 +#define IDS_STRING242 242 +#define IDS_STRING243 243 +#define IDS_STRING244 244 +#define IDS_STRING245 245 +#define IDS_STRING246 246 +#define TX_GAMEJOIN 247 +#define IDS_STRING247 247 +#define TX_CREATE_MULTIGAME 248 +#define IDS_STRING248 248 +#define TX_UPDATELIST 249 +#define IDS_STRING249 249 +#define TX_MULTI_CREATE 250 +#define TX_MULTI_GNAME 251 +#define IDS_STRING251 251 +#define IDS_STRING252 252 +#define IDS_STRING253 253 +#define IDS_STRING254 254 +#define IDS_STRING255 255 +#define IDS_STRING256 256 +#define IDS_STRING257 257 +#define IDS_STRING258 258 +#define IDS_STRING259 259 +#define IDS_STRING260 260 +#define IDS_STRING261 261 +#define IDS_STRING262 262 +#define IDS_STRING263 263 +#define TX_OPEN 264 +#define IDS_STRING264 264 +#define IDS_STRING265 265 +#define IDS_STRING266 266 +#define IDS_STRING267 267 +#define TX_HELP 268 +#define IDS_STRING268 268 +#define TX_LOAD_CGAME 269 +#define TX_SAVE_CGAME 270 +#define IDS_STRING271 271 +#define TX_MISSIONFREE 272 +#define IDS_STRING272 272 +#define IDS_STRING273 273 +#define IDS_STRING274 274 +#define IDS_STRING275 275 +#define IDS_STRING276 276 +#define IDS_STRING277 277 +#define IDS_STRING278 278 +#define IDS_STRING279 279 +#define IDS_STRING280 280 +#define IDS_STRING281 281 +#define IDS_STRING282 282 +#define IDS_STRING283 283 +#define IDS_STRING284 284 +#define IDS_STRING285 285 +#define IDS_STRING286 286 +#define IDS_STRING287 287 +#define TX_GAMESAVED 288 +#define IDS_STRING288 288 +#define TX_NOTINDEMO 289 +#define IDS_STRING289 289 +#define IDS_STRING290 290 +#define IDS_STRING291 291 +#define IDS_STRING292 292 +#define IDS_STRING293 293 +#define IDS_STRING294 294 +#define IDS_STRING295 295 +#define IDS_STRING296 296 +#define IDS_STRING297 297 +#define IDS_STRING298 298 +#define IDS_STRING299 299 +#define IDS_STRING300 300 +#define IDS_STRING301 301 +#define IDS_STRING302 302 +#define IDS_STRING303 303 +#define IDS_STRING304 304 +#define IDS_STRING305 305 +#define IDS_STRING306 306 +#define IDS_STRING400 400 +#define IDS_STRING401 401 +#define IDS_STRING402 402 +#define IDS_STRING403 403 +#define IDS_STRING404 404 +#define IDS_STRING405 405 +#define IDS_STRING406 406 +#define IDS_STRING407 407 +#define IDS_STRING408 408 +#define IDS_STRING409 409 +#define IDS_STRING410 410 +#define IDS_STRING411 411 +#define IDS_STRING412 412 +#define TX_REPEAT_CULTIVE 500 +#define IDS_STRING500 500 +#define TX_REPEAT_FLEUR 501 +#define IDS_STRING501 501 +#define TX_REPEAT_FLEURQ 502 +#define IDS_STRING502 502 +#define TX_REPEAT_FABMINE 503 +#define IDS_STRING503 503 +#define TX_REPEAT_FABJEEP 504 +#define IDS_STRING504 504 +#define TX_REPEAT_PALIS 505 +#define IDS_STRING505 505 +#define TX_REPEAT_PALISQ 506 +#define IDS_STRING506 506 +#define TX_REPEAT_PONT 507 +#define IDS_STRING507 507 +#define TX_REPEAT_PONTQ 508 +#define IDS_STRING508 508 +#define TX_REPEAT_BATEAU 509 +#define IDS_STRING509 509 +#define TX_REPEAT_BATEAUQ 510 +#define IDS_STRING510 510 +#define TX_REPEAT_FABARMURE 511 +#define IDS_STRING511 511 +#define TX_DIRECT_N 512 +#define IDS_STRING512 512 +#define TX_DIRECT_S 513 +#define TX_DIRECT_E 514 +#define TX_DIRECT_O 515 +#define IDS_STRING600 600 +#define IDS_STRING601 601 +#define IDS_STRING602 602 +#define IDS_STRING603 603 +#define IDS_STRING604 604 +#define IDS_STRING605 605 +#define IDS_STRING606 606 +#define IDS_STRING607 607 +#define IDS_STRING608 608 +#define IDS_STRING609 609 +#define IDS_STRING610 610 +#define IDS_STRING611 611 +#define IDS_STRING612 612 +#define IDS_STRING613 613 +#define IDS_STRING614 614 +#define IDS_STRING615 615 +#define IDS_STRING616 616 +#define IDS_STRING617 617 +#define IDS_STRING618 618 +#define IDS_STRING619 619 +#define IDS_STRING620 620 +#define IDS_STRING621 621 +#define IDS_STRING622 622 +#define IDS_STRING623 623 +#define IDR_WAVE_BOING 1000 +#define TX_ERROR_MISC 1000 +#define IDS_STRING1000 1000 +#define IDR_WAVE_BLOW 1001 +#define TX_ERROR_GROUND 1001 +#define IDS_STRING1001 1001 +#define TX_ERROR_FREE 1002 +#define IDS_STRING1002 1002 +#define TX_ERROR_PONTOP 1003 +#define IDS_STRING1003 1003 +#define TX_ERROR_PONTTERM 1004 +#define IDS_STRING1004 1004 +#define TX_ERROR_TOURISOL 1005 +#define IDS_STRING1005 1005 +#define TX_ERROR_TOUREAU 1006 +#define IDS_STRING1006 1006 +#define TX_ERROR_TELE2 1007 +#define IDS_STRING1007 1007 +#define IDS_STRING1008 1008 +#define IDS_STRING1009 1009 +#define IDS_STRING1010 1010 +#define IDS_STRING1011 1011 +#define IDS_STRING1012 1012 +#define IDS_STRING1013 1013 +#define IDS_STRING1014 1014 +#define IDS_STRING1015 1015 +#define IDS_STRING1016 1016 +#define IDS_STRING1017 1017 +#define IDS_STRING1018 1018 +#define IDS_STRING1019 1019 +#define IDS_STRING1020 1020 +#define IDS_STRING1021 1021 +#define IDS_STRING1022 1022 +#define IDS_STRING1023 1023 +#define IDS_STRING1024 1024 +#define IDS_STRING1025 1025 +#define IDS_STRING1026 1026 +#define IDS_STRING1027 1027 +#define IDS_STRING1028 1028 +#define IDS_STRING1029 1029 +#define IDS_STRING1030 1030 +#define IDS_STRING1031 1031 +#define IDS_STRING1032 1032 +#define IDS_STRING1033 1033 +#define IDS_STRING1034 1034 +#define IDS_STRING1035 1035 +#define IDS_STRING1036 1036 +#define IDS_STRING1037 1037 +#define IDS_STRING1038 1038 +#define IDS_STRING1039 1039 +#define IDS_STRING1040 1040 +#define IDS_STRING1041 1041 +#define IDS_STRING1042 1042 +#define IDS_STRING1043 1043 +#define IDS_STRING1044 1044 +#define IDS_STRING1045 1045 +#define IDS_STRING1046 1046 +#define IDS_STRING1047 1047 +#define IDS_STRING1048 1048 +#define IDS_STRING1049 1049 +#define IDS_STRING1050 1050 +#define IDS_STRING1051 1051 +#define IDS_STRING1052 1052 +#define IDS_STRING1053 1053 +#define IDS_STRING1054 1054 +#define IDS_STRING1055 1055 +#define IDS_STRING1056 1056 +#define IDS_STRING1057 1057 +#define IDS_STRING1058 1058 +#define IDS_STRING1059 1059 +#define IDS_STRING1060 1060 +#define IDS_STRING1061 1061 +#define IDS_STRING1062 1062 +#define IDS_STRING1063 1063 +#define IDS_STRING1064 1064 +#define IDS_STRING1065 1065 +#define IDS_STRING1066 1066 +#define IDS_STRING1067 1067 +#define IDS_STRING1068 1068 +#define IDS_STRING1069 1069 +#define IDS_STRING1070 1070 +#define IDS_STRING1071 1071 +#define IDS_STRING1072 1072 +#define IDS_STRING1073 1073 +#define IDS_STRING1074 1074 +#define IDS_STRING1075 1075 +#define IDS_STRING1076 1076 +#define IDS_STRING1077 1077 +#define IDS_STRING1078 1078 +#define IDS_STRING1079 1079 +#define IDS_STRING1080 1080 +#define IDS_STRING1081 1081 +#define IDS_STRING1082 1082 +#define IDS_STRING1083 1083 +#define IDS_STRING1084 1084 +#define TX_OBJ_BLUPIm 2000 +#define TX_OBJ_BLUPIf 2001 +#define TX_OBJ_BLUPI 2002 +#define TX_OBJ_BATEAU 2003 +#define TX_OBJ_JEEP 2004 +#define IDS_STRING2004 2004 +#define TX_OBJ_PIEGE 2005 +#define TX_OBJ_POISON 2006 +#define TX_OBJ_DYNAMITE 2007 +#define IDS_STRING2007 2007 +#define TX_OBJ_MINE 2008 +#define TX_OBJ_TOMATE 2009 +#define IDS_STRING2009 2009 +#define TX_OBJ_POTION 2010 +#define TX_OBJ_PLANCHE 2011 +#define TX_OBJ_PIERRE 2012 +#define TX_OBJ_DRAPEAU 2013 +#define TX_OBJ_FER 2014 +#define TX_OBJ_FLEUR1 2015 +#define TX_OBJ_FLEUR2 2016 +#define TX_OBJ_FLEUR3 2017 +#define TX_OBJ_CABANE 2018 +#define TX_OBJ_LABO 2019 +#define TX_OBJ_MINEFER 2020 +#define TX_OBJ_USINE 2021 +#define TX_OBJ_TOUR 2022 +#define TX_OBJ_FEU 2023 +#define TX_OBJ_ROBOT 2024 +#define TX_OBJ_TRACKS 2025 +#define TX_OBJ_BOMBE 2026 +#define TX_OBJ_ARAIGNEE 2027 +#define TX_OBJ_VIRUS 2028 +#define TX_OBJ_ELECTRO 2029 +#define TX_OBJ_ARBRE 2030 +#define IDS_STRING2030 2030 +#define TX_OBJ_MUR 2031 +#define TX_OBJ_ARBREb 2032 +#define TX_OBJ_ROC 2033 +#define IDS_STRING2033 2033 +#define TX_OBJ_OEUF 2034 +#define TX_OBJ_PALISSADE 2035 +#define TX_OBJ_ENNEMIp 2036 +#define TX_OBJ_ENNEMI 2037 +#define TX_OBJ_HERBE 2038 +#define IDS_STRING2038 2038 +#define TX_OBJ_MOUSSE 2039 +#define TX_OBJ_TERRE 2040 +#define TX_OBJ_EAU 2041 +#define IDS_STRING2041 2041 +#define TX_OBJ_RIVE 2042 +#define TX_OBJ_MIXTE 2043 +#define TX_OBJ_PONT 2044 +#define IDS_STRING2044 2044 +#define TX_OBJ_COUVEUSE 2045 +#define TX_OBJ_GLACE 2046 +#define TX_OBJ_MAISON 2047 +#define IDS_STRING2047 2047 +#define TX_OBJ_HACHURE 2048 +#define TX_OBJ_MOUSSEb 2049 +#define TX_OBJ_BOUQUET1 2050 +#define TX_OBJ_BOUQUET2 2051 +#define TX_OBJ_BOUQUET3 2052 +#define TX_OBJ_DALLE 2053 +#define TX_OBJ_ENNEMIs 2054 +#define TX_OBJ_DISCIPLE 2055 +#define TX_OBJ_METAL 2056 +#define TX_OBJ_FUSEE 2057 +#define TX_OBJ_TELEPORTE 2058 +#define TX_OBJ_ARMURE 2059 +#define TX_OBJ_DALLESPEC 2060 +#define TX_OBJ_COUVTELE 2061 +#define TX_OBJ_BATIMENT 2062 +#define TX_OBJ_BATENNEMIS 2063 +#define TX_OBJ_MURPAL 2064 +#define TX_OBJ_OBJET 2065 +#define TX_OBJ_ARME 2066 +#define TX_OBJ_VEHICULE 2067 +#define TX_OBJ_STARTFEU 2068 +#define TX_OBJ_DELOBJ 2069 +#define TX_OBJ_DELPERSO 2070 +#define TX_OBJ_DELFEU 2071 +#define TX_OBJ_PLANTE 2072 +#define IDS_STRING2072 2072 +#define TX_OBJ_BARENNEMIS 2073 +#define TX_WIN1 3000 +#define TX_WIN2 3001 +#define TX_WIN3 3002 +#define TX_WIN4 3003 +#define TX_WIN5 3004 +#define TX_LOST1 3100 +#define TX_LOST2 3101 +#define TX_LOST3 3102 +#define TX_LOST4 3103 +#define TX_LOST5 3104 +#define TX_LASTWIN1 3200 +#define IDS_STRING3200 3200 +#define TX_LASTWIN2 3201 +#define IDS_STRING3201 3201 +#define TX_LASTWIN3 3202 +#define IDS_STRING3202 3202 +#define TX_BUTTON_CREATE 6900 +#define IDM_EXIT 40001 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 195 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/src/resource1.h b/resource/resource1.h similarity index 100% rename from src/resource1.h rename to resource/resource1.h diff --git a/resource/resrc1.h b/resource/resrc1.h deleted file mode 100644 index 6d43f40..0000000 --- a/resource/resrc1.h +++ /dev/null @@ -1,19 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by Blupi-e.rc -// -#define TX_DIRECT_N 512 -#define TX_DIRECT_S 513 -#define TX_DIRECT_E 514 -#define TX_DIRECT_O 515 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 109 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/src/button.cpp b/src/button.cpp index 026444d..d46828e 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -25,7 +25,7 @@ CButton::CButton() m_type = 0; m_bEnable = TRUE; m_bHide = FALSE; - m_bSomething = FALSE; + m_bLocked = FALSE; m_state = 0; m_mouseState = 0; m_nbMenu = 0; @@ -69,7 +69,7 @@ BOOL CButton::Create(HWND hWnd, CPixmap *pPixmap, CSound *pSound, m_bMinimizeRedraw = bMinimizeRedraw; m_bEnable = TRUE; m_bHide = FALSE; - m_bSomething = FALSE; + m_bLocked = FALSE; m_message = message; m_pos.x = pos.x; m_pos.y = pos.y; @@ -126,7 +126,7 @@ void CButton::Draw() } else { - m_pPixmap->DrawIcon(-1, CHBUTTON + m_type, m_bSomething ? 5 : 4, m_pos); + m_pPixmap->DrawIcon(-1, CHBUTTON + m_type, m_bLocked ? 5 : 4, m_pos); } if (m_nbMenu == 0) return; @@ -202,16 +202,6 @@ void CButton::SetEnable(BOOL bEnable) m_bEnable = bEnable; } -void CButton::SetSomething(BOOL bSomething) -{ - if (m_bSomething != bSomething) - { - m_bRedraw = TRUE; - } - - m_bSomething = bSomething; -} - /* // Needed Yet? diff --git a/src/button.h b/src/button.h index b369c71..a896b82 100644 --- a/src/button.h +++ b/src/button.h @@ -29,8 +29,6 @@ public: BOOL GetEnable(); void SetEnable(BOOL bEnable); - void SetSomething(BOOL bSomething); - BOOL GetHide(); void SetHide(BOOL bHide); @@ -52,6 +50,7 @@ protected: CSound* m_pSound; int m_type; // type de bouton BOOL m_bEnable; // TRUE si bouton actif + int m_bLocked; BOOL m_bHide; // TRUE si bouton caché UINT m_message; // message envoyé si bouton actionné POINT m_pos; // coin sup/gauche @@ -63,7 +62,6 @@ protected: int m_nbMenu; // nb de case du sous-menu int m_nbToolTips; // nb d'info-bulles int m_selMenu; - int m_bSomething; // sous-menu sélectionné BOOL m_bMouseDown; // TRUE -> bouton souris pressé BOOL m_bMinimizeRedraw; BOOL m_bRedraw; diff --git a/src/def.h b/src/def.h index 56613d5..1911cfc 100644 --- a/src/def.h +++ b/src/def.h @@ -31,6 +31,7 @@ #define MAXNOTIF 5 #define MAXFIFOPOS 10 #define MAXCHAT 6 +#define MAXSAVE 6 #define LIFT_RANGE_Y 30 #define LXIMAGE 640 // dimensions de la fenêtre de jeu diff --git a/src/event.cpp b/src/event.cpp index a74fb6c..607ec8c 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -1824,8 +1824,6 @@ CEvent::CEvent() m_keyPress = 0; m_menuIndex = 0; ZeroMemory(m_menuDecor, sizeof(m_menuDecor)); - - return; } // Destructor @@ -2405,51 +2403,46 @@ BOOL CEvent::DrawButtons() int lg, sound; BOOL soundEnabled; char res[100]; - char text[100]; + char res2[100]; POINT pos; RECT rect; - - - if (m_phase != WM_PHASE_INSERT && m_phase != WM_PHASE_BYE) + if (m_phase != WM_PHASE_INSERT && m_phase != WM_PHASE_BYE && m_phase != WM_PHASE_INTRO1 && m_phase != WM_PHASE_INTRO2) { m_bChangeCheat = FALSE; - text[0] = 0; + res2[0] = 0; if (m_bBuildOfficialMissions) { - AddCheatCode(text, cheat_code[0]); + AddCheatCode(res2, cheat_code[0]); } if (m_bAllMissions) { - AddCheatCode(text, cheat_code[1]); + AddCheatCode(res2, cheat_code[1]); } if (m_pDecor->GetSuperBlupi()) { - AddCheatCode(text, cheat_code[3]); + AddCheatCode(res2, cheat_code[3]); } if (m_pDecor->GetDrawSecret()) { - AddCheatCode(text, cheat_code[11]); + AddCheatCode(res2, cheat_code[11]); } if (m_pDecor->GetNetPacked()) { - AddCheatCode(text, cheat_code[19]); + AddCheatCode(res2, cheat_code[19]); } if (!m_pDecor->GetNetMovePredict()) { - AddCheatCode(text, cheat_code[21]); + AddCheatCode(res2, cheat_code[21]); } - m_pDecor->OutputNetDebug(text); + m_pDecor->OutputNetDebug(res2); - if (m_phase == WM_PHASE_PLAY || m_phase == WM_PHASE_PLAYTEST || m_phase == WM_PHASE_BUILD) + if (m_phase != WM_PHASE_PLAY && m_phase != WM_PHASE_PLAYTEST && m_phase != WM_PHASE_BUILD) { - DrawTextLeft(m_pPixmap, POINT( 2, 2 ), text, FONTLITTLE); - } - else - { - m_pPixmap->DrawPart(-1, CHBACK, POINT( 2, 2 ), RECT( 2, 2, 302, 14 ), 1, FALSE); + m_pPixmap->DrawPart(-1, CHBACK, POINT(2, 2), RECT(2, 2, 302, 14), 1, FALSE); } + DrawTextLeft(m_pPixmap, POINT(2, 2), res2, FONTLITTLE); } if (m_phase == WM_PHASE_INIT) @@ -2461,23 +2454,36 @@ BOOL CEvent::DrawButtons() { LoadString(TX_CHOOSEGAMER, res, 100); DrawTextLeft(m_pPixmap, POINT( LXIMAGE / 2 - GetTextWidth(res) / 2, 26 ), res, FONTGOLD); - for (i = 0; i < 8; i++) + for (i = 0; i < MAXGAMER; i++) { DrawText(m_pPixmap, POINT( 110, 69 + i * DIMBUTTONY ), m_gamerNameList[i], FONTWHITE); } SetEnable(WM_PHASE_CLEARGAMER, m_gamerExist[m_gamer]); } + if (m_phase == WM_PHASE_CREATE) + { + LoadString(TX_MULTI_CREATE, res, 50); + lg = GetTextWidth(res); + pos.x = (320 - lg) / 2; + pos.y = 103; + DrawTextLeft(m_pPixmap, pos, res, FONTSELECTED); + LoadString(TX_MULTI_GNAME, res, 100); + pos.x = (320 - lg) / 2; + pos.y = 190; + DrawTextLeft(m_pPixmap, pos, res, FONTSELECTED); + } + if (m_phase == WM_PHASE_NAMEGAMER) { LoadString(TX_CHOOSEGAMER, res, 100); lg = GetTextWidth(res, 0); - pos.x = 320 - lg / 2; + pos.x = LXIMAGE / 2 - lg / 2; pos.y = 102; DrawTextLeft(m_pPixmap, pos, res, 1); LoadString(TX_WRITENAME, res, 100); lg = GetTextWidth(res, 100); - pos.x = 320 - lg / 2; + pos.x = LXIMAGE / 2 - lg / 2; pos.y = 190; DrawTextLeft(m_pPixmap, pos, res, 0); @@ -2500,40 +2506,52 @@ BOOL CEvent::DrawButtons() PutTextInputBox(POINT( 320, 232 )); } - // now that the decomp is looking convincingly like the retail game, - // we should clearly differentiate the two when sharing WIP screenshots/videos to reduce confusion. + if (m_phase == WM_PHASE_CLEARGAMER) { - POINT debugMousePos = GetMousePos(); - int debugTextY; - if (debugMousePos.x > LXIMAGE - GetTextWidth("WORK IN PROGRESS") && debugMousePos.x < LXIMAGE && debugMousePos.y < 36 && debugMousePos.y >= 0) - { - debugTextY = 40; - } - else - { - debugTextY = 0; - } - - DrawTextLeft(m_pPixmap, POINT( LXIMAGE - GetTextWidth("DECOMPILATION"), debugTextY ), "DECOMPILATION", FONTGOLD); - DrawTextLeft(m_pPixmap, POINT( LXIMAGE - GetTextWidth("WORK IN PROGRESS"), debugTextY + 11 ), "WORK IN PROGRESS", FONTGOLD); - DrawTextLeft(m_pPixmap, POINT( LXIMAGE - GetTextWidth(__DATE__ " " __TIME__), debugTextY + 22 ), __DATE__ " " __TIME__, FONTGOLD); + LoadString(TX_CHOOSEGAMER, res, 100); + lg = GetTextWidth((char*)res, 0); + pos.y = 102; + pos.x = 320 - lg / 2; + DrawTextLeft(m_pPixmap, pos, (char*)res, 1); + LoadString(TX_DISCARDGAME, res, 100); + lg = GetTextWidth(res, 0); + pos.x = 320 - lg / 2; + pos.y = 210; + DrawTextLeft(m_pPixmap, pos, res, 0); + strcpy(res2, m_gamerName); + strcat(res2, "?"); + lg = GetTextWidth(res2, 0); + pos.x = 320 - lg / 2; + pos.y = 230; + DrawTextLeft(m_pPixmap, pos, res2, 0); } - /////// - if (m_phase != WM_PHASE_PLAY && m_phase != WM_PHASE_PLAYTEST && m_phase != WM_PHASE_BUILD) - m_pPixmap->DrawPart(-1, 0, POINT( 2, 2 ), RECT( 2, 2, 302, 14 ), 1, 0); - if (m_phase == WM_PHASE_CREATE) + if (m_phase == WM_PHASE_CLEARDESIGN) { - LoadString(TX_MULTI_CREATE, res, 50); - lg=GetTextWidth(res); - pos.x = (320 - lg) / 2; - pos.y = 103; - DrawTextLeft(m_pPixmap, pos, res, FONTSLIM); - LoadString(TX_MULTI_GNAME, res, 100); - pos.x = (320 - lg) / 2; - pos.y = 190; - DrawTextLeft(m_pPixmap, pos, res, FONTSLIM); + LoadString(TX_DESIGNMISSION, res, 100); + lg = GetTextWidth(res, 0); + pos.y = 104; + pos.x = 320 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res, 1); + LoadString(TX_DELETEMISSION, res, 100); + sprintf(res2, res, GetWorld()); + lg = GetTextWidth(res2, 0); + pos.y = 210; + pos.x = 320 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res2, 0); + strcpy(res2, m_pDecor->GetMissionTitle()); + + if (res2[0] == '\0') + { + LoadString(TX_NONAME, res, 100); + } + strcat(res2, "?"); + lg = GetTextWidth(res2, 0); + pos.y = 230; + pos.x = 320 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res, 0); } + if (m_phase == WM_PHASE_SETUP || m_phase == WM_PHASE_SETUPp) { sound = m_pSound->GetAudioVolume(); @@ -2543,6 +2561,12 @@ BOOL CEvent::DrawButtons() soundEnabled = FALSE; } } + + for (i = 0; table[m_index].buttons[i].message != 0; i++) + { + m_buttons[i].Draw(); + } + if (m_phase == WM_PHASE_PLAY || m_phase == WM_PHASE_PLAYTEST) { if (m_pDecor->GetPause() == 0) @@ -2579,6 +2603,36 @@ BOOL CEvent::DrawButtons() pos.y = 103; DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); } + if (m_phase == WM_PHASE_HELP) + { + LoadString(TX_HELP, res, 100); + lg = GetTextWidth(res, 0); + pos.x = LXIMAGE / 2 - lg / 2; + pos.y = 65; + DrawTextLeft(m_pPixmap, pos, res, 1); + lg = 140; + UINT j; + for (j = 601; j < 625; j += 3) + { + if (m_somethingJoystick == NULL) + { + pos.y = j - 1; + } + else + { + pos.y = j; + } + LoadString(pos.y, res, 100); + pos.x = 110; + pos.y = lg; + DrawTextLeft(m_pPixmap, pos, res, 1); + LoadString(j + 1, res, 100); + pos.x = 230; + pos.y = lg; + DrawTextLeft(m_pPixmap, pos, res, 0); + lg += 20; + } + } if (m_phase == WM_PHASE_MUSIC) { LoadString(TX_MUSIC, res, 100); @@ -2595,6 +2649,39 @@ BOOL CEvent::DrawButtons() pos.y = 26; DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); } + if (m_phase == WM_PHASE_INFO) + { + LoadString(TX_DESIGNMISSION, res, 100); + lg = GetTextWidth(res, 0); + pos.y = 37; + pos.x = 320 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res, 0); + if (m_bDrawMap != FALSE) + { + pos.x = 148; + pos.y = 96; + m_pPixmap->DrawIcon(-1, 8, 0, pos, 0, FALSE); + } + LoadString(TX_MISSNUM, res, 100); + if (m_bPrivate) + m_private = m_private; + else + m_private = m_mission; + sprintf(res2, res, m_private); + lg = GetTextWidth(res2, 0); + pos.y = 106; + pos.x = 250 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res2, 1); + strcpy(res2, m_pDecor->GetMissionTitle()); + if (res2[0] == '\0') + { + LoadString(TX_NONAME, res, 100); + } + lg = GetTextWidth(res, 0); + pos.y = 269; + pos.x = 250 - lg / 2; + DrawTextLeft(m_pPixmap, pos, res, 0); + } if (m_phase == WM_PHASE_LOST || m_phase == WM_PHASE_LOSTDESIGN || m_phase == WM_PHASE_WINMULTI) { LoadString(TX_LOST1 + GetWorld() % 5, res, 50); @@ -2605,118 +2692,20 @@ BOOL CEvent::DrawButtons() LoadString(TX_WIN1 + GetWorld() % 5, res, 50); DrawTextLeft(m_pPixmap, pos, res, FONTWHITE); } - if (m_phase == WM_PHASE_READDESIGN) + if (m_phase == WM_PHASE_LASTWIN) { - LoadString(TX_OPENMISS, res, 100); - lg = GetTextWidth(res, 0); - pos.x = 320 - lg / 2; - pos.y = 31; - DrawTextLeft(m_pPixmap, pos, res, 1); - LoadString(TX_CONTENT, res, 100); - pos.x = 190; - pos.y = 79; - DrawTextLeft(m_pPixmap, pos, res, 0); - - pos.x = 240; - pos.y = 122; - for (i=0; i < m_nbChoices; i++) - { - if (i >= 6) break; - if (m_choicePageOffset + i >= m_nbChoices) break; - strncpy(text, m_filenameBuffer[m_choicePageOffset + i], 100); - strcpy(text + 26, "..."); - DrawText(m_pPixmap, pos, text, m_choiceIndex == m_choicePageOffset + i ? 0 : 2); - pos.y += 40; - } - } - if (m_phase == WM_PHASE_GREAD || m_phase == WM_PHASE_GREADp || m_phase == WM_PHASE_GWRITE) - { - if (m_phase == WM_PHASE_GREAD) - { - LoadString(TX_SAVE_CGAME, res, 50); - } - else - { - LoadString(TX_LOAD_CGAME, res, 50); - } - } - if (m_phase == WM_PHASE_BYE) - { - LoadString(TX_FULL_END1, res, 100); - lg = GetTextWidth(res); - pos.x = (320 - lg) / 2; - pos.y = 20; - DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); - LoadString(TX_FULL_END2, res, 100); - lg = GetTextWidth(res); - pos.x = (320 - lg) / 2; - pos.y = 40; - DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); - LoadString(TX_FULL_END3, res, 100); - lg = GetTextWidth(res); - pos.x = (320 - lg) / 2; - pos.y = 430; - DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); - LoadString(TX_FULL_END4, res, 100); - lg = GetTextWidth(res); - pos.x = (320 - lg) / 2; - pos.y = 450; - DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); - } - if (m_phase == WM_PHASE_INSERT) - { - DrawTextCenter(TX_INSERT, LXIMAGE / 2, 20); - } - if (m_textToolTips[0] != '\0') - { - DrawTextLeft(m_pPixmap, m_posToolTips, m_textToolTips, FONTWHITE); - } - if (m_phase == WM_PHASE_CLEARGAMER) - { - LoadString(TX_CHOOSEGAMER, res, 100); - lg = GetTextWidth((char*)res, 0); - pos.y = 102; - pos.x = 320 - lg / 2; - DrawTextLeft(m_pPixmap, pos, (char*)res, 1); - LoadString(TX_DISCARDGAME, res, 100); - lg = GetTextWidth(res, 0); - pos.x = 320 - lg / 2; - pos.y = 210; - DrawTextLeft(m_pPixmap, pos, res, 0); - strcpy(text, m_gamerName); - strcat(text, "?"); - lg = GetTextWidth(text, 0); - pos.x = 320 - lg / 2; - pos.y = 230; - DrawTextLeft(m_pPixmap, pos, text, 0); - } - if (m_phase == WM_PHASE_CLEARDESIGN) - { - LoadString(TX_DESIGNMISSION, res, 100); - lg = GetTextWidth(res, 0); - pos.y = 104; - pos.x = 320 - lg / 2; - DrawTextLeft(m_pPixmap, pos, res, 1); - LoadString(TX_DELETEMISSION, res, 100); - sprintf(text, res, GetWorld()); - lg = GetTextWidth(text, 0); - pos.y = 210; - pos.x = 320 - lg / 2; - DrawTextLeft(m_pPixmap, pos, text, 0); - strcpy(text, m_pDecor->GetMissionTitle()); - - if (text[0] == '\0') - { - LoadString(TX_NONAME, res, 100); - } - strcat(text, "?"); - lg = GetTextWidth(text, 0); - pos.y = 230; - pos.x = 320 - lg / 2; - DrawTextLeft(m_pPixmap, pos, res, 0); - } + int string; - if ((m_phase == WM_PHASE_SETUP) || (m_phase == WM_PHASE_SETUPp)) + if (m_bPrivate) + string = TX_LASTWIN3; + else + string = TX_LASTWIN2; + LoadString(string, res, 100); + pos.x = 60; + pos.y = 443; + DrawTextLeft(m_pPixmap, pos, res, 0); + } + if (m_phase == WM_PHASE_SETUP || m_phase == WM_PHASE_SETUPp) { lg = m_pSound->GetAudioVolume(); i = 1; @@ -2745,153 +2734,220 @@ BOOL CEvent::DrawButtons() SetState(j + WM_BUTTON7, ((int)m_somethingJoystick == j)); } } - - if (m_phase == WM_PHASE_INFO) + if (m_phase == WM_PHASE_SERVICE) { - LoadString(TX_DESIGNMISSION, res, 100); - lg = GetTextWidth(res, 0); - pos.y = 37; - pos.x = 320 - lg / 2; - DrawTextLeft(m_pPixmap, pos, res, 0); - if (m_bDrawMap != FALSE) + LoadString(0xEF, res, 100); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE / 2 - GetTextWidth(res) / 2, 31), res, FONTGOLD); + LoadString(0xF0, res, 100); + DrawTextLeft(m_pPixmap, POINT(140, 79), res, FONTWHITE); + m_nbChoices = m_pNetwork->GetNbProviders(); + pos = POINT(190, 122); + for (i = 0; i < m_nbChoices && i < 6; i++) { - pos.x = 148; - pos.y = 96; - m_pPixmap->DrawIcon(-1, 8, 0, pos, 0, FALSE); + if (m_choicePageOffset + i > m_nbChoices) break; + strncpy(res, m_pNetwork->GetProviderName(m_choicePageOffset + i), 100); + strcpy(res + 45, "..."); + DrawTextLeft(m_pPixmap, pos, res, m_choicePageOffset + i == m_choiceIndex ? FONTSELECTED : FONTWHITE); + pos.y += 40; } - LoadString(TX_MISSNUM, res, 100); - if (m_bPrivate) - m_private = m_private; - else - m_private = m_mission; - sprintf(text, res, m_private); - lg = GetTextWidth(text, 0); - pos.y = 106; - pos.x = 250 - lg / 2; - DrawTextLeft(m_pPixmap, pos, text, 1); - strcpy(text, m_pDecor->GetMissionTitle()); - if (text[0] == '\0') - { - LoadString(TX_NONAME, res, 100); - } - lg = GetTextWidth(res, 0); - pos.y = 269; - pos.x = 250 - lg / 2; - DrawTextLeft(m_pPixmap, pos, res, 0); } - - if (m_phase == WM_PHASE_HELP) + if (m_phase == WM_PHASE_SESSION) { - LoadString(TX_HELP, res, 100); - lg = GetTextWidth(res, 0); - pos.x = LXIMAGE / 2 - lg / 2; - pos.y = 65; - DrawTextLeft(m_pPixmap, pos, res, 1); - lg = 140; - UINT j; - for (j = 601; j < 625; j+= 3) + LoadString(0xF3, res, 100); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE / 2 - GetTextWidth(res) / 2, 31), res, FONTGOLD); + LoadString(0xF4, res, 100); + DrawTextLeft(m_pPixmap, POINT(120, 79), res, FONTWHITE); + m_nbChoices = m_pNetwork->GetNbSessions(); + pos = POINT(170, 122); + for (i = 0; i < m_nbChoices && i < 6; i++) { - if (m_somethingJoystick == NULL) + if (m_choicePageOffset + i > m_nbChoices) break; + strncpy(res, m_pNetwork->GetSessionName(m_choicePageOffset + i), 100); + strcpy(res + 45, "..."); + DrawTextLeft(m_pPixmap, pos, res, m_choicePageOffset + i == m_choiceIndex ? FONTSELECTED : FONTWHITE); + pos.y += 40; + } + } + if (m_phase == WM_PHASE_MULTI) + { + LoadString(0xFD, res, 100); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE / 2 - GetTextWidth(res) / 2, 32), res, FONTGOLD); + LoadString(0xFE, res, 100); + DrawTextLeft(m_pPixmap, POINT(130, 82), res, FONTWHITE); + LoadString(0x11E, res, 100); + DrawTextLeft(m_pPixmap, POINT(288, 82), res, FONTWHITE); + LoadString(0x100, res, 100); + DrawTextLeft(m_pPixmap, POINT(80, 301), res, FONTWHITE); + if (m_bDrawMap) + { + m_pPixmap->DrawIcon(-1, CHMAP, 0, POINT(377, 75)); + } + LoadString(0xFF, res, 100); + sprintf(res2, res, m_multi); + DrawTextLeft(m_pPixmap, POINT(479 - GetTextWidth(res2), 217), res, FONTWHITE); + pos = POINT(130, 110); + for (i = 0; i < MAXNETPLAYER; i++) + { + if (m_pNetwork->m_players[i].bIsPresent) { - pos.y = j - 1; + DrawTextLeft(m_pPixmap, pos, m_pNetwork->m_players[i].name, FONTLITTLE); + } + pos.y += 42; + } + pos = POINT(323, 80); + for (i = 0; i < MAXCHAT; i++) + { + if (m_chatZone[i][0] != '\0') + { + DrawText(m_pPixmap, pos, m_chatZone[i], FONTLITTLE); + } + pos.y += DIMLITTLEY; + } + PutTextInputBox(POINT(221, 418)); + SetEnable(WM_BUTTON20, m_textInput[0] != '\0'); + } + if (m_phase == WM_PHASE_READDESIGN) + { + LoadString(TX_OPENMISS, res, 100); + lg = GetTextWidth(res, 0); + pos.x = 320 - lg / 2; + pos.y = 31; + DrawTextLeft(m_pPixmap, pos, res, 1); + LoadString(TX_CONTENT, res, 100); + pos.x = 190; + pos.y = 79; + DrawTextLeft(m_pPixmap, pos, res, 0); + + pos.x = 240; + pos.y = 122; + for (i = 0; i < m_nbChoices && i < 6; i++) + { + if (m_choicePageOffset + i >= m_nbChoices) break; + strncpy(res, m_filenameBuffer[m_choicePageOffset + i], 100); + strcpy(res + 45, "..."); + DrawText(m_pPixmap, pos, res, m_choiceIndex == m_choicePageOffset + i ? FONTSELECTED : FONTWHITE); + pos.y += 40; + } + } + if (m_phase == WM_PHASE_WRITEDESIGN) + { + LoadString(0xA1, res, 100); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE / 2 - GetTextWidth(res) / 2, 32), res, FONTGOLD); + LoadString(0xC2, res, 100); + DrawTextLeft(m_pPixmap, POINT(190, 79), res, FONTGOLD); + + pos.x = 190; + pos.y = 107; + for (i = 0; i < m_nbChoices && i < 12; i++) + { + if (m_choicePageOffset + i >= m_nbChoices) break; + strncpy(res, m_filenameBuffer[m_choicePageOffset + i], 100); + strcpy(res + 45, "..."); + DrawText(m_pPixmap, pos, res, FONTWHITE); + pos.y += DIMTEXTY; + } + } + if (m_phase == WM_PHASE_GREAD || m_phase == WM_PHASE_GREADp || m_phase == WM_PHASE_GWRITE) + { + if (m_phase == WM_PHASE_GWRITE) + { + LoadString(TX_SAVE_CGAME, res, 100); + } + else + { + LoadString(TX_LOAD_CGAME, res, 100); + } + DrawTextLeft(m_pPixmap, POINT(415 - GetTextWidth(res) / 2, 31), res, FONTGOLD); + LoadString(0x10F, res, 100); + DrawTextLeft(m_pPixmap, POINT(280, 78), res, FONTWHITE); + pos.y = 122; + for (i = 0; i < m_nbChoices && i < MAXSAVE; i++) + { + pos.x = 296; + sprintf(res, "%d", i + 1); + DrawTextLeft(m_pPixmap, pos, res, m_choiceIndex == i ? FONTGOLD : FONTWHITE); + + // manually split the string into two draw calls if it contains a newline + char* line2 = strchr(m_filenameBuffer[i], '\n'); + if (line2) + { + strcpy(res, m_filenameBuffer[i]); + res[line2 - res] = '\0'; // janky. pls verify + pos.x = 330; + pos.y -= DIMTEXTY / 2; + DrawTextLeft(m_pPixmap, pos, res, m_choiceIndex == i ? FONTSELECTED : FONTWHITE); + pos.y += DIMTEXTY; + DrawTextLeft(m_pPixmap, pos, line2 + 1, m_choiceIndex == i ? FONTSELECTED : FONTWHITE); + pos.y += DIMBUTTONY - DIMTEXTY / 2; } else { - pos.y = j; + pos.x = 330; + DrawTextLeft(m_pPixmap, pos, res, m_choiceIndex == i ? FONTSELECTED : FONTWHITE); + pos.y += DIMBUTTONY; + } + } + + if (m_choiceIndex >= 0) + { + if (m_bNamesExist[m_choiceIndex]) + { + m_pPixmap->DrawIcon(-1, CHMAP, 0, POINT(19, 149)); } - LoadString(pos.y, res, 100); - pos.x = 110; - pos.y = lg; - DrawTextLeft(m_pPixmap, pos, res, 1); - LoadString(j + 1, res, 100); - pos.x = 230; - pos.y = lg; - DrawTextLeft(m_pPixmap, pos, res, 0); - lg += 20; } } - if (m_phase == WM_PHASE_PLAY || m_phase == WM_PHASE_PLAYTEST) + if (m_phase == WM_PHASE_BYE) { - if (m_pDecor->GetPause()) - { - if (m_pDecor->GetTime() % 20 < 15) - DrawTextCenter(TX_PAUSE, 320, 240, 0); - } - else - { - if (m_bDemoRec) - { - LoadString(TX_DEMOREC, res, 100); - pos.x = 10; - pos.y = 10; - DrawTextLeft(m_pPixmap, pos, res, 1); - } - if (m_bDemoPlay) - { - LoadString(TX_DEMOPLAY, res, 100); - pos.x = 10; - pos.y = 10; - DrawTextLeft(m_pPixmap, pos, res, 1); - } - } - if (m_speed > 1) - { - sprintf(res, "x%d", m_speed); - pos.x = 64; - pos.y = 465; - DrawTextLeft(m_pPixmap, pos, res, 0); - } - } - if (m_phase == WM_PHASE_REGION) - { - LoadString(TX_REGION, res, 100); - lg = GetTextWidth(res, 0); + LoadString(TX_FULL_END1, res, 100); + lg = GetTextWidth(res); pos.x = 320 - lg / 2; - pos.y = 26; - DrawTextLeft(m_pPixmap, pos, res, 1); + pos.y = 20; + DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); + LoadString(TX_FULL_END2, res, 100); + lg = GetTextWidth(res); + pos.x = 320 - lg / 2; + pos.y = 40; + DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); + LoadString(TX_FULL_END3, res, 100); + lg = GetTextWidth(res); + pos.x = 320 - lg / 2; + pos.y = 430; + DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); + LoadString(TX_FULL_END4, res, 100); + lg = GetTextWidth(res); + pos.x = 320 - lg / 2; + pos.y = 450; + DrawTextLeft(m_pPixmap, pos, res, FONTGOLD); + } + if (m_phase == WM_PHASE_INSERT) + { + DrawTextCenter(TX_INSERT, LXIMAGE / 2, 20); } - if (m_phase == WM_PHASE_STOP) + if (m_textToolTips[0] != '\0') { - LoadString(TX_GAMEPAUSE, res, 100); - lg = GetTextWidth(res, 0); - pos.x = 319 - lg / 2; - pos.y = 103; - DrawTextLeft(m_pPixmap, pos, res, 1); + DrawTextLeft(m_pPixmap, m_posToolTips, m_textToolTips, FONTWHITE); } - - if (m_phase == WM_PHASE_LOST || m_phase == WM_PHASE_LOSTDESIGN || m_phase == WM_PHASE_LOSTMULTI) - { - LoadString(GetWorld() % 5 + 3100, res, 100); - pos.x = 50; - pos.y = 424; - DrawTextLeft(m_pPixmap, pos, res, 0); - } - if (m_phase == WM_PHASE_WIN || m_phase == WM_PHASE_WINDESIGN || m_phase == WM_PHASE_WINMULTI) - { - LoadString(GetWorld() % 5 + 3000, res, 100); - pos.x = 50; - pos.y = 424; - DrawTextLeft(m_pPixmap, pos, res, 0); - } - if (m_phase == WM_PHASE_LASTWIN) - { - int string; - if (m_bPrivate) - string = 3202; + // now that the decomp is looking convincingly like the retail game, + // we should clearly differentiate the two when sharing WIP screenshots/videos to reduce confusion. + { + POINT debugMousePos = GetMousePos(); + int debugTextY; + if (debugMousePos.x > LXIMAGE - GetTextWidth("WORK IN PROGRESS") && debugMousePos.x < LXIMAGE && debugMousePos.y < 36 && debugMousePos.y >= 0) + { + debugTextY = 40; + } else - string = 3201; - LoadString(string, res, 100); - pos.x = 60; - pos.y = 443; - DrawTextLeft(m_pPixmap, pos, res, 0); - } + { + debugTextY = 0; + } - for (i = 0; table[m_index].buttons[i].message != 0; i++) - { - m_buttons[i].Draw(); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE - GetTextWidth("DECOMPILATION"), debugTextY), "DECOMPILATION", FONTGOLD); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE - GetTextWidth("WORK IN PROGRESS"), debugTextY + 11), "WORK IN PROGRESS", FONTGOLD); + DrawTextLeft(m_pPixmap, POINT(LXIMAGE - GetTextWidth(__DATE__ " " __TIME__), debugTextY + 22), __DATE__ " " __TIME__, FONTGOLD); } + /////// return TRUE; } @@ -3956,36 +4012,6 @@ BOOL CEvent::EventButtons(UINT message, WPARAM wParam, LPARAM lParam) oldx = m_posToolTips.x; m_posToolTips.x = -1; if (m_phase != WM_PHASE_PLAY && m_phase != WM_PHASE_PLAYTEST && table[m_index].buttons[0].message) - { - /* // ???? - for (i = 0; i < 2; i++) - { - if (!m_jauges[i].GetHide()) - { - - uid = 0xFFFFFFF; - - if (uid < 0) - { - LoadString(TX_NOTINDEMO + i, m_textToolTips, 50); - lg = GetTextWidth(m_textToolTips); - test.x += (DIMJAUGEX - lg) / 2; - test.y += 4; - m_posToolTips = test; - break; - } - } - } - if (oldx != m_posToolTips.x) - { - for (i = 0; i < 2; i++) - { - m_jauges[i].Redraw(); - } - } - */ - } - else { i = 0; while (table[m_index].buttons[i].message != 0) @@ -4335,7 +4361,7 @@ BOOL CEvent::ChangePhase(UINT phase) m_phase = phase; m_index = SearchPhase(phase); - if (table[m_index].bUnk && !CheckWorld1()) + if (table[m_index].bLocked && !CheckWorld1()) { m_tryInsertCount = 40; m_tryPhase = m_phase; @@ -4620,15 +4646,77 @@ BOOL CEvent::ChangePhase(UINT phase) m_choicePageOffset = 0; m_choiceIndex = 0; SetHide(WM_BUTTON10, TRUE); - // ... + SetHide(WM_BUTTON11, m_choicePageOffset + 6 >= (m_nbChoices + 5) / 6 * 6); + for (i = 0; i < 6; ++i) + { + if (m_choicePageOffset + i >= m_nbChoices) + { + SetHide(WM_BUTTON1 + i, TRUE); + } + else + { + SetHide(WM_BUTTON1 + i, FALSE); + SetState(WM_BUTTON1 + i, m_choicePageOffset + i == m_choiceIndex); + } + } + SetEnable(WM_PHASE_DP_DOSERVICE, m_nbChoices != 0); } if (m_phase == WM_PHASE_SESSION) { - // ... + m_nbChoices = m_pNetwork->GetNbSessions(); + m_choicePageOffset = 0; + m_choiceIndex = 0; + SetHide(WM_BUTTON10, 1); + SetHide(WM_BUTTON11, m_choicePageOffset + 6 >= (m_nbChoices + 5) / 6 * 6); + for (i = 0; i < 6; ++i) + { + if (m_choicePageOffset + i >= m_nbChoices) + { + SetHide(WM_BUTTON1 + i, TRUE); + } + else + { + SetHide(WM_BUTTON1, FALSE); + SetState(WM_BUTTON1 + i, m_choicePageOffset + i == m_choiceIndex); + } + } + SetEnable(WM_PHASE_DP_JOIN, m_nbChoices != 0); } if (m_phase == WM_PHASE_MULTI) { - // ... + m_bDrawMap = m_pDecor->Read(m_gamer, m_multi + 200, 0); + for (i = 0; i < MAXNETPLAYER; i++) + { + m_pNetwork->m_players[i].bIsPresent = FALSE; + } + if (m_pNetwork->IsHost()) + { + m_pNetwork->m_players[0].bIsPresent = TRUE; + m_pNetwork->m_players[0].ready = FALSE; + m_pNetwork->m_players[0].dpid = m_pNetwork->m_dpid; + m_pNetwork->m_players[0].team = 0; + strncpy(m_pNetwork->m_players[0].name, m_gamerName, 20); + m_pNetwork->m_players[0].name[19] = '\0'; + } + else + { + char data[28]; + data[0] = 28; + data[1] = MESS_2; + *&data[4] = m_pNetwork->m_dpid; + strncpy(data + 8, m_gamerName, 20); + m_pNetwork->Send(data, 28, 1); + } + if (m_bDrawMap) + { + DrawMap(); + } + NetAdjustLobbyButtons(); + ChatFlush(); + m_textHiliStart = 0; + m_textInput[0] = 0; + m_textCursorIndex = 0; + m_textHiliEnd = strlen(m_textInput); } if (m_phase == WM_PHASE_CREATE) { diff --git a/src/event.h b/src/event.h index eb475cd..2c684ea 100644 --- a/src/event.h +++ b/src/event.h @@ -24,7 +24,7 @@ typedef struct UINT phase; char backName[36]; BOOL bCDrom; - BOOL bUnk; + BOOL bLocked; Button buttons[MAXBUTTON]; } Phase; @@ -310,7 +310,6 @@ protected: int m_nbChoices; int m_0008; int m_6D30; - //BOOL m_b6D34; int m_96B4; int m_nbVies; }; diff --git a/src/menu.cpp b/src/menu.cpp index 7b5843b..753d71d 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -61,16 +61,6 @@ static short table_button_icon[] = 106, // fabarmure }; -void GetText(int rank, char *pBuffer, int lgBuffer) -{ - LoadString(TX_ACTION_GO+rank, pBuffer, lgBuffer); -} - -void GetErr(int rank, char *pBuffer, int lgBuffer) -{ - LoadString(TX_ERROR_MISC+rank, pBuffer, lgBuffer); -} - ///////////////////////////////////////////////////////////////////////////// CMenu::CMenu() diff --git a/src/network.cpp b/src/network.cpp index 47aab95..4366610 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -38,7 +38,7 @@ static BOOL EnumProvidersCallback(LPGUID lpguidSP, LPSTR lpSPName, NamedGUID* lpGuid; if (lpContext->nb < MAXSESSION) { - lpGuid = lpContext->pList[lpContext->nb]; + lpGuid = &(*lpContext->pList)[lpContext->nb]; lpGuid->guid = *lpguidSP; strcpy(lpGuid->name, lpSPName); lpContext->nb++; @@ -73,7 +73,7 @@ int CNetwork::GetNbProviders() char* CNetwork::GetProviderName(int index) { if (index >= m_providers.nb) return NULL; - return m_providers.pList[index]->name; + return (*m_providers.pList)[index].name; } BOOL CNetwork::CreateProvider(int index) @@ -112,7 +112,7 @@ static BOOL EnumSessionsCallback(LPDPSESSIONDESC2 lpThisSD, if (lpContext->nb < MAXSESSION) { - lpGuid = lpContext->pList[lpContext->nb]; + lpGuid = &(*lpContext->pList)[lpContext->nb]; lpGuid->guid = lpThisSD->guidInstance; strcpy(lpGuid->name, lpThisSD->lpszSessionNameA); lpContext->nb++; @@ -144,10 +144,16 @@ BOOL CNetwork::EnumSessions() return TRUE; } + +int CNetwork::GetNbSessions() +{ + return m_sessions.nb; +} + char* CNetwork::GetSessionName(int index) { if (index >= m_sessions.nb) return NULL; - return m_sessions.pList[index]->name; + return (*m_sessions.pList)[index].name; } BOOL CNetwork::JoinSession(int index, char* pPlayerName) diff --git a/src/network.h b/src/network.h index 3d0b7cf..afb4b44 100644 --- a/src/network.h +++ b/src/network.h @@ -41,11 +41,12 @@ public: ~CNetwork(); BOOL EnumProviders(); - BOOL GetNbProviders(); + int GetNbProviders(); char* GetProviderName(int index); BOOL CreateProvider(int index); void FreeProviderList(); BOOL EnumSessions(); + int GetNbSessions(); char* GetSessionName(int index); BOOL JoinSession(int index, char* pPlayerName); void FreeSessionList(); diff --git a/src/pixmap.cpp b/src/pixmap.cpp index c8b93ac..258dc75 100644 --- a/src/pixmap.cpp +++ b/src/pixmap.cpp @@ -953,7 +953,7 @@ BOOL CPixmap::CacheAll(BOOL cache, HWND hWnd, BOOL bFullScreen, BOOL bTrueColor, return FALSE; } - OutputDebug("Image:_init\n"); + OutputDebug("Image: init\n"); if (BackgroundCache(0, "init.blp", totalDim, iconDim, TRUE) == FALSE) { return FALSE; diff --git a/src/resource.h b/src/resource.h index f64b6ef..7f8aefa 100644 --- a/src/resource.h +++ b/src/resource.h @@ -4,119 +4,7 @@ // #pragma once -#define TX_ACTION_GO 1 -#define TX_ACTION_STOP 2 -#define TX_ACTION_MANGE 3 -#define TX_ACTION_CARRY 4 -#define TX_ACTION_DEPOSE 5 -#define TX_ACTION_ABAT 6 -#define TX_ACTION_ROC 7 -#define TX_ACTION_CULTIVE 8 -#define TX_ACTION_BUILD1 9 -#define TX_ACTION_BUILD2 10 -#define TX_ACTION_BUILD3 11 -#define TX_ACTION_BUILD4 12 -#define TX_ACTION_BUILD5 13 -#define TX_ACTION_BUILD6 14 -#define TX_ACTION_MUR 15 -#define TX_ACTION_PALIS 16 -#define TX_ACTION_ABATn 17 -#define TX_ACTION_ROCn 18 -#define TX_ACTION_PONT 19 -#define TX_ACTION_TOUR 20 -#define TX_ACTION_BOIT 21 -#define TX_ACTION_LABO 22 -#define TX_ACTION_FLEUR 23 -#define TX_ACTION_FLEURn 24 -#define TX_ACTION_DYNAMITE 25 -#define TX_ACTION_BATEAU 26 -#define TX_ACTION_DJEEP 27 -#define TX_ACTION_DRAPEAU 28 -#define TX_ACTION_EXTRAIT 29 -#define TX_ACTION_FABJEEP 30 -#define TX_ACTION_FABMINE 31 -#define TX_ACTION_FABDISC 32 -#define TX_ACTION_REPEAT 33 -#define TX_ACTION_QARMURE 34 -#define TX_ACTION_FABARMURE 35 -#define TX_IONAMEEX 100 -#define TX_IOFREE 101 -#define TX_OWNMISSION 102 -#define TX_TESTMISSION 103 -#define TX_BUTTON_JOUER 104 -#define TX_BUTTON_APPRENDRE 105 -#define TX_BUTTON_QUITTER 106 -#define TX_BUTTON_PREVP 107 -#define TX_BUTTON_NEXTP 108 -#define TX_BUTTON_PLAYP 109 -#define TX_BUTTON_BUILDP 110 -#define TX_BUTTON_TERM 111 -#define TX_BUTTON_READP 112 -#define TX_BUTTON_WRITEP 113 -#define TX_BUTTON_CANCELP 114 -#define TX_BUTTON_CONTP 115 -#define TX_BUTTON_REPEAT 116 -#define TX_CHOOSEPLAYER 117 -#define TX_PLAYERSNAME 118 -#define TX_BUTTON_TERMC 119 -#define TX_CHOOSESIZE 120 -#define TX_BUTTON_HVSCROLL 121 -#define TX_BUTTON_ONLYHSCROLL 122 -#define TX_BUTTON_ONLYVSCROLL 123 -#define TX_BUTTON_TESTMISSION 124 -#define TX_PAUSE 125 -#define TX_CLEARPLAYER 127 -#define TX_SETTINGS 128 -#define TX_BUTTON_SETUP1 130 -#define TX_BUTTON_SETUP2 131 -#define TX_BUTTON_SETUP3 132 -#define TX_BUTTON_SETUP4 133 -#define TX_BUTTON_REGION 144 -#define TX_DISCARDGAME 145 -#define TX_DESIGNMISSION 147 -#define TX_CHOOSEGAMER 148 -#define TX_MUSIC 149 -#define TX_BUTTON_SETUP5 154 -#define TX_BUTTON_SETUP6 155 -#define TX_BUTTON_SETUP7 156 -#define TX_BUTTON_SETUP8 157 -#define TX_READINFO 167 -#define TX_CONFIRM 174 -#define TX_CANCEL 175 -#define TX_YES 176 -#define TX_NO 177 -#define TX_REGION 178 -#define TX_BUTTON_SETUP 180 -#define TX_INSERT 182 -#define TX_DELETEMISSION 184 -#define TX_NONAME 187 -#define TX_DESIGN 188 -#define TX_MISSIONNUM 189 -#define TX_SINGLEPLAYER 195 -#define TX_MUTLIPLAYER 196 -#define TX_GAMEPAUSE 197 -#define TX_FULL_END1 203 -#define TX_FULL_END2 204 -#define TX_FULL_END3 205 -#define TX_FULL_END4 206 -#define TX_BUTTON_SKILL 209 -#define TX_BUTTON_DEMO 212 -#define TX_DEMOREC 213 -#define TX_DEMOPLAY 214 -#define TX_SHOWNEXT 241 -#define TX_SHOWCONNECTION 242 -//#define TX_SHOWNEXT 245 -#define TX_SHOWPREV 246 -#define TX_GAMEJOIN 247 -#define TX_CREATE_MULTIGAME 248 -#define TX_UPDATELIST 249 -#define TX_MULTI_CREATE 250 -#define TX_MULTI_GNAME 251 -#define TX_OPEN 264 -#define TX_LOAD_CGAME 269 -#define TX_SAVE_CGAME 270 -#define TX_GAMESAVED 288 -#define TX_NOTINDEMO 289 + #define TX_IONAMEEX 100 #define TX_IOFREE 101 #define TX_OWNMISSION 102 diff --git a/src/text.cpp b/src/text.cpp index 0824195..973f554 100644 --- a/src/text.cpp +++ b/src/text.cpp @@ -74,7 +74,7 @@ int GetCharWidth(char c, int font) } // Affiche un texte. - +/* void DrawText(CPixmap *pPixmap, POINT pos, char *pText, int font) { int rank; @@ -100,36 +100,53 @@ void DrawText(CPixmap *pPixmap, POINT pos, char *pText, int font) pos.x += GetCharWidth(*pText++, font); } } -} +}*/ -void DrawTextLeft(CPixmap* pPixmap, POINT pos, char *text, int font) +void DrawText(CPixmap* pPixmap, POINT pos, char *pText, int font) { - DrawText(pPixmap, pos, text, font); - return; + char c; + + c = *pText; + while (c != '\0') { + pText ++; + DrawChar(pPixmap, &pos, c, font); + c = *pText; + } } +void DrawTextLeft(CPixmap* pPixmap, POINT pos, char *pText, int font) +{ + DrawText(pPixmap, pos, pText, font); +} -//Implement later void DrawChar(CPixmap* pPixmap, POINT* pos, char c, int font) { + POINT pos0; POINT pos1; - int width; - UINT index; + unsigned index; - index = (UINT)(BYTE)c; - + index = c; + pos0.y = table_char[index * 6 + 2] + pos->y; + pos0.x = table_char[index * 6 + 1] + pos->x; + DrawCharSingle(pPixmap, pos0, table_char[index * 6], font); + if (table_char[index * 6 + 3] != -1) + { + pos1.y = table_char[index * 6 + 4] + pos->y; + pos1.x = table_char[index * 6 + 5] + pos->x; + DrawCharSingle(pPixmap, pos1, table_char[index * 6 + 3], font); + } + pos->x += GetCharWidth(c, font); } -void DrawCharSingle(CPixmap pPixmap, POINT pos, char* pText, int font) +void DrawCharSingle(CPixmap* pPixmap, POINT pos, int rank, int font) { if (font == FONTLITTLE) { - pPixmap.DrawIcon(-1, CHLITTLE, (int)pText, pos, 0, FALSE); + pPixmap->DrawIcon(-1, CHLITTLE, rank, pos, 0, FALSE); return; } - pPixmap.DrawIcon(-1, CHTEXT, (int)(pText + font * 128), pos, 0, FALSE); - return; + pPixmap->DrawIcon(-1, CHTEXT, (int)(rank + font * 128), pos, 0, FALSE); } // Affiche un texte pench�. diff --git a/src/text.h b/src/text.h index 43a30ad..404774e 100644 --- a/src/text.h +++ b/src/text.h @@ -4,7 +4,7 @@ #define FONTWHITE 0 #define FONTGOLD 1 -#define FONTSLIM 2 +#define FONTSELECTED 2 #define FONTLITTLE 10 typedef struct @@ -28,10 +28,10 @@ extern void DrawTextNew(CPixmap *pPixmap, POINT pos, char* pText, int font); extern -void DrawChar(CPixmap* pPixmap, POINT pos, char* pText, double size); +void DrawChar(CPixmap* pPixmap, POINT* pos, char c, int font); extern -void DrawCharSingle(CPixmap* pPixmap, POINT pos, int rank, double size); +void DrawCharSingle(CPixmap* pPixmap, POINT pos, int rank, int font); extern void DrawTextNew(CPixmap* pPixmap, POINT pos, char* pText, int font);