From 01201734890fde9ef1c7ab96a6a6b3c1f28fa57e Mon Sep 17 00:00:00 2001 From: jummy Date: Thu, 7 Nov 2024 16:19:16 -0600 Subject: [PATCH] text is working + progress on multiplayer menus --- Speedy Eggbert 2 Source.vcxproj | 3 +- Speedy Eggbert 2 Source.vcxproj.filters | 9 +- resource/Eggbert2.aps | Bin 16580 -> 50000 bytes resource/Eggbert2.rc | Bin 15386 -> 47850 bytes resource/RCa07276 | Bin 0 -> 15432 bytes resource/RCa07552 | Bin 0 -> 15466 bytes resource/RCb07276 | Bin 0 -> 15432 bytes resource/RCc07276 | Bin 0 -> 15432 bytes resource/resource.h | 561 ++++++++++++++++++ {src => resource}/resource1.h | 0 resource/resrc1.h | 19 - src/button.cpp | 16 +- src/button.h | 4 +- src/def.h | 1 + src/event.cpp | 728 +++++++++++++----------- src/event.h | 3 +- src/menu.cpp | 10 - src/network.cpp | 14 +- src/network.h | 3 +- src/pixmap.cpp | 2 +- src/resource.h | 114 +--- src/text.cpp | 45 +- src/text.h | 6 +- 23 files changed, 1031 insertions(+), 507 deletions(-) create mode 100644 resource/RCa07276 create mode 100644 resource/RCa07552 create mode 100644 resource/RCb07276 create mode 100644 resource/RCc07276 create mode 100644 resource/resource.h rename {src => resource}/resource1.h (100%) delete mode 100644 resource/resrc1.h 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 d2e54406f81cb05dbfd1b0f85701d12cdc6e2b52..0a412f39e2a80498239038d72e86314b0f41e83e 100644 GIT binary patch literal 50000 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 Ur`FOt^dSUtv32q4Uvatr0+|&c1^@s6 diff --git a/resource/Eggbert2.rc b/resource/Eggbert2.rc index 5b40d06fe68c8c71497d98e9b87cc901ed94aa06..1ad7d3c60a2a10ae0f4acbe959273ee73ac62ed8 100644 GIT binary patch literal 47850 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 Dfo!#d delta 1179 zcmY*Y?MqW}7`@Z$vbpA3>w3Mr+MMR*GTq#aT%pq*Zd%yn5mKN+JXktzM_`7= zyNDivt4btJsB`S$g*ih7H!2J>i#ySQIB+ufk64%KI-;)}IYIrP8(>S=bktAji3h{`wwqZuY z!Cl%ccIw92)Y*%rvOA(K9⪚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 GhUb4v^J+i< literal 0 HcmV?d00001 diff --git a/resource/RCa07552 b/resource/RCa07552 new file mode 100644 index 0000000000000000000000000000000000000000..ca64fbbb7b315972d4ce1f791b534ce7b04ca4ee GIT binary patch literal 15466 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 AegFUf literal 0 HcmV?d00001 diff --git a/resource/RCb07276 b/resource/RCb07276 new file mode 100644 index 0000000000000000000000000000000000000000..3cba63e5feb24eee200db7e9cc77766a16d19211 GIT binary patch literal 15432 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 GhUb4v^J+i< literal 0 HcmV?d00001 diff --git a/resource/RCc07276 b/resource/RCc07276 new file mode 100644 index 0000000000000000000000000000000000000000..3cba63e5feb24eee200db7e9cc77766a16d19211 GIT binary patch literal 15432 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 GhUb4v^J+i< literal 0 HcmV?d00001 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);