|
|
1.1 ! root 1: //** ! 2: //** READCFG.C - Utilities to read and write the CONTROLS.CFG file. ! 3: //** ! 4: //** 02/20/96 Les Bird ! 5: //** ! 6: ! 7: #include <stdio.h> ! 8: #include <stdlib.h> ! 9: #include <string.h> ! 10: #include <dos.h> ! 11: #include <io.h> ! 12: #include <ctype.h> ! 13: #include <sys\types.h> ! 14: #include "sos.h" ! 15: #include "profile.h" ! 16: ! 17: #include "whdcntrl.h" ! 18: ! 19: char controlConfigFile[_MAX_PATH]; ! 20: ! 21: static ! 22: char tempBuf[256]; ! 23: ! 24: char *controlAction[MAXACTIONS+1]={ ! 25: "MOVE FORWARD ", ! 26: "MOVE BACKWARD", ! 27: "TURN LEFT ", ! 28: "TURN RIGHT ", ! 29: "RUN MODE ", ! 30: "STRAFE MODE ", ! 31: "USE WEAPON ", ! 32: "OPEN/CLOSE ", ! 33: "JUMP ", ! 34: "CROUCH ", ! 35: "LOOK UP ", ! 36: "LOOK DOWN ", ! 37: "LOOK CENTER ", ! 38: "STRAFE LEFT ", ! 39: "STRAFE RIGHT ", ! 40: "USE POTION ", ! 41: "CAST SPELL ", ! 42: "FLY UP ", ! 43: "FLY DOWN ", ! 44: "USE SHIELD ", ! 45: NULL ! 46: }; ! 47: ! 48: #ifdef CON_MOUSE ! 49: char *mouseControlLabel[MAXMOUSEBUTTONS]={ ! 50: "LEFT BUTTON ", ! 51: "MIDDLE BUTTON", ! 52: "RIGHT BUTTON " ! 53: }; ! 54: #endif ! 55: ! 56: #ifdef CON_JOYSTICK ! 57: char *joystickControlLabel[MAXJOYSTICKBUTTONS]={ ! 58: "BUTTON 1", ! 59: "BUTTON 2", ! 60: "BUTTON 3", ! 61: "BUTTON 4" ! 62: }; ! 63: #endif ! 64: ! 65: #ifdef CON_AVENGER ! 66: char *avengerControlLabel[MAXAVENGERBUTTONS]={ ! 67: "BUTTON A", ! 68: "BUTTON B", ! 69: "BUTTON C", ! 70: "BUTTON D", ! 71: "BUTTON E", ! 72: "BUTTON F" ! 73: }; ! 74: #endif ! 75: ! 76: #ifdef CON_GAMEPAD ! 77: char *gamepadControlLabel[MAXGAMEPADBUTTONS]={ ! 78: "BUTTON A", ! 79: "BUTTON B", ! 80: "BUTTON C", ! 81: "BUTTON D" ! 82: }; ! 83: #endif ! 84: ! 85: #ifdef CON_WINGMAN ! 86: char *wingmanControlLabel[MAXWINGMANBUTTONS]={ ! 87: "BUTTON 1", ! 88: "BUTTON 2", ! 89: "BUTTON 3", ! 90: "BUTTON 4" ! 91: }; ! 92: #endif ! 93: ! 94: #ifdef CON_VFX1 ! 95: char *VFX1ControlLabel[MAXVFX1BUTTONS]={ ! 96: "TOP BUTTON ", ! 97: "MIDDLE BUTTON", ! 98: "BOTTOM BUTTON" ! 99: }; ! 100: #endif ! 101: ! 102: //** Supported video modes ! 103: char *videoModeList[NUMVIDEOMODES]={ ! 104: "MCGA 320 X 200", ! 105: "SUPERVGA 640 X 480" ! 106: }; ! 107: ! 108: signed ! 109: char configKeyboard[MAXACTIONS]; ! 110: ! 111: #ifdef CON_MOUSE ! 112: signed ! 113: char configMouse[MAXMOUSEBUTTONS]; ! 114: #endif ! 115: #ifdef CON_JOYSTICK ! 116: signed ! 117: char configJoystick[MAXJOYSTICKBUTTONS]; ! 118: #endif ! 119: #ifdef CON_AVENGER ! 120: signed ! 121: char configAvenger[MAXAVENGERBUTTONS]; ! 122: #endif ! 123: #ifdef CON_GAMEPAD ! 124: signed ! 125: char configGamepad[MAXGAMEPADBUTTONS]; ! 126: #endif ! 127: #ifdef CON_WINGMAN ! 128: signed ! 129: char configWingman[MAXWINGMANBUTTONS]; ! 130: #endif ! 131: #ifdef CON_VFX1 ! 132: signed ! 133: char configVFX1[MAXVFX1BUTTONS]; ! 134: #endif ! 135: ! 136: signed ! 137: char videoModeOption; ! 138: ! 139: void ! 140: readKeyboardConfig(_INI_INSTANCE *sInstance) ! 141: { ! 142: int i,j; ! 143: ! 144: for (i=0 ; i < MAXACTIONS ; i++) { ! 145: configKeyboard[i]=-1; ! 146: } ! 147: if (!hmiINILocateSection(sInstance,"KEYBOARD")) { ! 148: return; ! 149: } ! 150: for (i=0 ; i < MAXACTIONS ; i++) { ! 151: if (hmiINIGetItemString(sInstance,controlAction[i],tempBuf,16)) { ! 152: sscanf(tempBuf,"%x",&j); ! 153: configKeyboard[i]=(signed char)j; ! 154: } ! 155: } ! 156: } ! 157: ! 158: void ! 159: writeKeyboardConfig(_INI_INSTANCE *sInstance) ! 160: { ! 161: int i; ! 162: ! 163: if (!hmiINILocateSection(sInstance,"KEYBOARD")) { ! 164: hmiINIAddSection(sInstance,"KEYBOARD"); ! 165: } ! 166: for (i=0 ; i < MAXACTIONS ; i++) { ! 167: if (!hmiINILocateItem(sInstance,controlAction[i])) { ! 168: hmiINIAddItemDecimal(sInstance,controlAction[i], ! 169: (WORD)configKeyboard[i], ! 170: strlen(controlAction[i])+4,16); ! 171: } ! 172: else { ! 173: hmiINIWriteDecimal(sInstance,(WORD)configKeyboard[i]); ! 174: } ! 175: } ! 176: } ! 177: ! 178: #ifdef CON_MOUSE ! 179: void ! 180: readMouseConfig(_INI_INSTANCE *sInstance) ! 181: { ! 182: int i,j; ! 183: ! 184: for (i=0 ; i < MAXMOUSEBUTTONS ; i++) { ! 185: configMouse[i]=-1; ! 186: } ! 187: if (!hmiINILocateSection(sInstance,"MOUSE")) { ! 188: return; ! 189: } ! 190: for (i=0 ; i < MAXMOUSEBUTTONS ; i++) { ! 191: if (hmiINIGetItemString(sInstance,mouseControlLabel[i],tempBuf,16)) { ! 192: sscanf(tempBuf,"%x",&j); ! 193: configMouse[i]=(signed char)j; ! 194: } ! 195: } ! 196: } ! 197: ! 198: void ! 199: writeMouseConfig(_INI_INSTANCE *sInstance) ! 200: { ! 201: int i; ! 202: ! 203: if (!hmiINILocateSection(sInstance,"MOUSE")) { ! 204: hmiINIAddSection(sInstance,"MOUSE"); ! 205: } ! 206: for (i=0 ; i < MAXMOUSEBUTTONS ; i++) { ! 207: if (!hmiINILocateItem(sInstance,mouseControlLabel[i])) { ! 208: hmiINIAddItemDecimal(sInstance,mouseControlLabel[i], ! 209: (WORD)configMouse[i], ! 210: strlen(mouseControlLabel[i])+4,16); ! 211: } ! 212: else { ! 213: hmiINIWriteDecimal(sInstance,(WORD)configMouse[i]); ! 214: } ! 215: } ! 216: } ! 217: #endif ! 218: ! 219: #ifdef CON_JOYSTICK ! 220: void ! 221: readJoystickConfig(_INI_INSTANCE *sInstance) ! 222: { ! 223: int i,j; ! 224: ! 225: for (i=0 ; i < MAXJOYSTICKBUTTONS ; i++) { ! 226: configJoystick[i]=-1; ! 227: } ! 228: if (!hmiINILocateSection(sInstance,"JOYSTICK")) { ! 229: return; ! 230: } ! 231: for (i=0 ; i < MAXJOYSTICKBUTTONS ; i++) { ! 232: if (hmiINIGetItemString(sInstance,joystickControlLabel[i], ! 233: tempBuf,16)) { ! 234: sscanf(tempBuf,"%x",&j); ! 235: configJoystick[i]=(signed char)j; ! 236: } ! 237: } ! 238: } ! 239: ! 240: void ! 241: writeJoystickConfig(_INI_INSTANCE *sInstance) ! 242: { ! 243: int i; ! 244: ! 245: if (!hmiINILocateSection(sInstance,"JOYSTICK")) { ! 246: hmiINIAddSection(sInstance,"JOYSTICK"); ! 247: } ! 248: for (i=0 ; i < MAXJOYSTICKBUTTONS ; i++) { ! 249: if (!hmiINILocateItem(sInstance,joystickControlLabel[i])) { ! 250: hmiINIAddItemDecimal(sInstance,joystickControlLabel[i], ! 251: (WORD)configJoystick[i], ! 252: strlen(joystickControlLabel[i])+4,16); ! 253: } ! 254: else { ! 255: hmiINIWriteDecimal(sInstance,(WORD)configJoystick[i]); ! 256: } ! 257: } ! 258: } ! 259: #endif ! 260: ! 261: #ifdef CON_AVENGER ! 262: void ! 263: readAvengerConfig(_INI_INSTANCE *sInstance) ! 264: { ! 265: int i,j; ! 266: ! 267: for (i=0 ; i < MAXAVENGERBUTTONS ; i++) { ! 268: configAvenger[i]=-1; ! 269: } ! 270: if (!hmiINILocateSection(sInstance,"AVENGER")) { ! 271: return; ! 272: } ! 273: for (i=0 ; i < MAXAVENGERBUTTONS ; i++) { ! 274: if (hmiINIGetItemString(sInstance,avengerControlLabel[i], ! 275: tempBuf,16)) { ! 276: sscanf(tempBuf,"%x",&j); ! 277: configAvenger[i]=(signed char)j; ! 278: } ! 279: } ! 280: } ! 281: ! 282: void ! 283: writeAvengerConfig(_INI_INSTANCE *sInstance) ! 284: { ! 285: int i; ! 286: ! 287: if (!hmiINILocateSection(sInstance,"AVENGER")) { ! 288: hmiINIAddSection(sInstance,"AVENGER"); ! 289: } ! 290: for (i=0 ; i < MAXAVENGERBUTTONS ; i++) { ! 291: if (!hmiINILocateItem(sInstance,avengerControlLabel[i])) { ! 292: hmiINIAddItemDecimal(sInstance,avengerControlLabel[i], ! 293: (WORD)configAvenger[i], ! 294: strlen(avengerControlLabel[i])+4,16); ! 295: } ! 296: else { ! 297: hmiINIWriteDecimal(sInstance,(WORD)configAvenger[i]); ! 298: } ! 299: } ! 300: } ! 301: #endif ! 302: ! 303: #ifdef CON_GAMEPAD ! 304: void ! 305: readGamepadConfig(_INI_INSTANCE *sInstance) ! 306: { ! 307: int i,j; ! 308: ! 309: for (i=0 ; i < MAXGAMEPADBUTTONS ; i++) { ! 310: configGamepad[i]=-1; ! 311: } ! 312: if (!hmiINILocateSection(sInstance,"GAMEPAD")) { ! 313: return; ! 314: } ! 315: for (i=0 ; i < MAXGAMEPADBUTTONS ; i++) { ! 316: if (hmiINIGetItemString(sInstance,gamepadControlLabel[i], ! 317: tempBuf,16)) { ! 318: sscanf(tempBuf,"%x",&j); ! 319: configGamepad[i]=(signed char)j; ! 320: } ! 321: } ! 322: } ! 323: ! 324: void ! 325: writeGamepadConfig(_INI_INSTANCE *sInstance) ! 326: { ! 327: int i; ! 328: ! 329: if (!hmiINILocateSection(sInstance,"GAMEPAD")) { ! 330: hmiINIAddSection(sInstance,"GAMEPAD"); ! 331: } ! 332: for (i=0 ; i < MAXGAMEPADBUTTONS ; i++) { ! 333: if (!hmiINILocateItem(sInstance,gamepadControlLabel[i])) { ! 334: hmiINIAddItemDecimal(sInstance,gamepadControlLabel[i], ! 335: (WORD)configGamepad[i], ! 336: strlen(gamepadControlLabel[i])+4,16); ! 337: } ! 338: else { ! 339: hmiINIWriteDecimal(sInstance,(WORD)configGamepad[i]); ! 340: } ! 341: } ! 342: } ! 343: #endif ! 344: ! 345: #ifdef CON_WINGMAN ! 346: void ! 347: readWingmanConfig(_INI_INSTANCE *sInstance) ! 348: { ! 349: int i,j; ! 350: ! 351: for (i=0 ; i < MAXWINGMANBUTTONS ; i++) { ! 352: configWingman[i]=-1; ! 353: } ! 354: if (!hmiINILocateSection(sInstance,"WINGMAN")) { ! 355: return; ! 356: } ! 357: for (i=0 ; i < MAXWINGMANBUTTONS ; i++) { ! 358: if (hmiINIGetItemString(sInstance,wingmanControlLabel[i], ! 359: tempBuf,16)) { ! 360: sscanf(tempBuf,"%x",&j); ! 361: configWingman[i]=(signed char)j; ! 362: } ! 363: } ! 364: } ! 365: ! 366: void ! 367: writeWingmanConfig(_INI_INSTANCE *sInstance) ! 368: { ! 369: int i; ! 370: ! 371: if (!hmiINILocateSection(sInstance,"WINGMAN")) { ! 372: hmiINIAddSection(sInstance,"WINGMAN"); ! 373: } ! 374: for (i=0 ; i < MAXWINGMANBUTTONS ; i++) { ! 375: if (!hmiINILocateItem(sInstance,wingmanControlLabel[i])) { ! 376: hmiINIAddItemDecimal(sInstance,wingmanControlLabel[i], ! 377: (WORD)configWingman[i], ! 378: strlen(wingmanControlLabel[i])+4,16); ! 379: } ! 380: else { ! 381: hmiINIWriteDecimal(sInstance,(WORD)configWingman[i]); ! 382: } ! 383: } ! 384: } ! 385: #endif ! 386: ! 387: #ifdef CON_VFX1 ! 388: void ! 389: readVFX1Config(_INI_INSTANCE *sInstance) ! 390: { ! 391: int i,j; ! 392: ! 393: for (i=0 ; i < MAXVFX1BUTTONS ; i++) { ! 394: configVFX1[i]=-1; ! 395: } ! 396: if (!hmiINILocateSection(sInstance,"VFX1")) { ! 397: return; ! 398: } ! 399: for (i=0 ; i < MAXVFX1BUTTONS ; i++) { ! 400: if (hmiINIGetItemString(sInstance,VFX1ControlLabel[i], ! 401: tempBuf,16)) { ! 402: sscanf(tempBuf,"%x",&j); ! 403: configVFX1[i]=(signed char)j; ! 404: } ! 405: } ! 406: } ! 407: ! 408: void ! 409: writeVFX1Config(_INI_INSTANCE *sInstance) ! 410: { ! 411: int i; ! 412: ! 413: if (!hmiINILocateSection(sInstance,"VFX1")) { ! 414: hmiINIAddSection(sInstance,"VFX1"); ! 415: } ! 416: for (i=0 ; i < MAXVFX1BUTTONS ; i++) { ! 417: if (!hmiINILocateItem(sInstance,VFX1ControlLabel[i])) { ! 418: hmiINIAddItemDecimal(sInstance,VFX1ControlLabel[i], ! 419: (WORD)configVFX1[i], ! 420: strlen(VFX1ControlLabel[i])+4,16); ! 421: } ! 422: else { ! 423: hmiINIWriteDecimal(sInstance,(WORD)configVFX1[i]); ! 424: } ! 425: } ! 426: } ! 427: #endif ! 428: ! 429: void ! 430: readVideoMode(_INI_INSTANCE *sInstance) ! 431: { ! 432: int i; ! 433: ! 434: videoModeOption=0; ! 435: if (!hmiINILocateSection(sInstance,"VIDEO")) { ! 436: return; ! 437: } ! 438: if (hmiINILocateItem(sInstance,"Resolution")) { ! 439: if (hmiINIGetString(sInstance,tempBuf,40)) { ! 440: for (i=0 ; i < NUMVIDEOMODES ; i++) { ! 441: if (stricmp(videoModeList[i],tempBuf) == 0) { ! 442: videoModeOption=i; ! 443: return; ! 444: } ! 445: } ! 446: } ! 447: } ! 448: } ! 449: ! 450: void ! 451: writeVideoMode(_INI_INSTANCE *sInstance) ! 452: { ! 453: if (!hmiINILocateSection(sInstance,"VIDEO")) { ! 454: hmiINIAddSection(sInstance,"VIDEO"); ! 455: } ! 456: if (!hmiINILocateItem(sInstance,"Resolution")) { ! 457: hmiINIAddItemString(sInstance,"Resolution", ! 458: videoModeList[videoModeOption],_SETUP_JUSTIFY); ! 459: } ! 460: else { ! 461: hmiINIWriteString(sInstance,videoModeList[videoModeOption]); ! 462: } ! 463: } ! 464: ! 465: void ! 466: readControlConfigs(void) ! 467: { ! 468: _INI_INSTANCE sInstance; ! 469: ! 470: strcpy(controlConfigFile,"CONTROLS.CFG"); ! 471: if (!hmiINIOpen(&sInstance,controlConfigFile)) { ! 472: return; ! 473: } ! 474: readKeyboardConfig(&sInstance); ! 475: #ifdef CON_MOUSE ! 476: readMouseConfig(&sInstance); ! 477: #endif ! 478: #ifdef CON_JOYSTICK ! 479: readJoystickConfig(&sInstance); ! 480: #endif ! 481: #ifdef CON_AVENGER ! 482: readAvengerConfig(&sInstance); ! 483: #endif ! 484: #ifdef CON_GAMEPAD ! 485: readGamepadConfig(&sInstance); ! 486: #endif ! 487: #ifdef CON_WINGMAN ! 488: readWingmanConfig(&sInstance); ! 489: #endif ! 490: #ifdef CON_VFX1 ! 491: readVFX1Config(&sInstance); ! 492: #endif ! 493: readVideoMode(&sInstance); ! 494: hmiINIClose(&sInstance); ! 495: } ! 496: ! 497: void ! 498: writeControlConfigs(void) ! 499: { ! 500: WORD hFile; ! 501: _INI_INSTANCE sInstance; ! 502: ! 503: if (!hmiINIOpen(&sInstance,controlConfigFile)) { ! 504: if ((hFile=creat(controlConfigFile,S_IREAD|S_IWRITE)) == -1) { ! 505: return; ! 506: } ! 507: close(hFile); ! 508: if (!hmiINIOpen(&sInstance,controlConfigFile)) { ! 509: return; ! 510: } ! 511: } ! 512: writeKeyboardConfig(&sInstance); ! 513: #ifdef CON_MOUSE ! 514: writeMouseConfig(&sInstance); ! 515: #endif ! 516: #ifdef CON_JOYSTICK ! 517: writeJoystickConfig(&sInstance); ! 518: #endif ! 519: #ifdef CON_AVENGER ! 520: writeAvengerConfig(&sInstance); ! 521: #endif ! 522: #ifdef CON_GAMEPAD ! 523: writeGamepadConfig(&sInstance); ! 524: #endif ! 525: #ifdef CON_WINGMAN ! 526: writeWingmanConfig(&sInstance); ! 527: #endif ! 528: #ifdef CON_VFX1 ! 529: writeVFX1Config(&sInstance); ! 530: #endif ! 531: writeVideoMode(&sInstance); ! 532: hmiINIClose(&sInstance); ! 533: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.