Subversion Repositories Games.Carmageddon

Rev

Rev 11 | Rev 20 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 11 Rev 18
Line 1... Line 1...
1
#include "controls.h"
1
#include "controls.h"
2
 
2
 
3
#include "brender/brender.h"
3
#include "brender.h"
4
#include "brucetrk.h"
4
#include "brucetrk.h"
5
#include "car.h"
5
#include "car.h"
6
#include "constants.h"
6
#include "constants.h"
7
#include "crush.h"
7
#include "crush.h"
8
#include "depth.h"
8
#include "depth.h"
Line 1103... Line 1103...
1103
}
1103
}
1104
 
1104
 
1105
// IDA: void __cdecl CheckHelp()
1105
// IDA: void __cdecl CheckHelp()
1106
void CheckHelp(void) {
1106
void CheckHelp(void) {
1107
    LOG_TRACE("()");
1107
    LOG_TRACE("()");
1108
    NOT_IMPLEMENTED();
-
 
1109
}
1108
}
1110
 
1109
 
1111
// IDA: void __cdecl CheckLoadSave()
1110
// IDA: void __cdecl CheckLoadSave()
1112
void CheckLoadSave(void) {
1111
void CheckLoadSave(void) {
1113
    int save_load_allowed;
1112
    int save_load_allowed;
Line 1281... Line 1280...
1281
}
1280
}
1282
 
1281
 
1283
// IDA: void __usercall CheckHorn3D(tCar_spec *pCar@<EAX>)
1282
// IDA: void __usercall CheckHorn3D(tCar_spec *pCar@<EAX>)
1284
void CheckHorn3D(tCar_spec* pCar) {
1283
void CheckHorn3D(tCar_spec* pCar) {
1285
    LOG_TRACE("(%p)", pCar);
1284
    LOG_TRACE("(%p)", pCar);
-
 
1285
 
-
 
1286
    if (pCar->keys.horn && pCar->horn_sound_tag == 0) {
-
 
1287
        pCar->horn_sound_tag = DRS3StartSound3D(gEffects_outlet,
-
 
1288
            5209,
-
 
1289
            &pCar->car_master_actor->t.t.translate.t,
-
 
1290
            &pCar->velocity_bu_per_sec,
-
 
1291
            0,
1286
    STUB_ONCE();
1292
            255,
-
 
1293
            ((pCar->car_ID & 7) << 12) + 0xc000,
-
 
1294
            0x10000);
-
 
1295
    } else {
-
 
1296
        if (!pCar->keys.horn && pCar->horn_sound_tag != 0) {
-
 
1297
            while (S3SoundStillPlaying(pCar->horn_sound_tag)) {
-
 
1298
                DRS3StopSound(pCar->horn_sound_tag);
-
 
1299
                DRS3StopOutletSound(gEffects_outlet);
-
 
1300
            }
-
 
1301
            if (!S3SoundStillPlaying(pCar->horn_sound_tag)) {
-
 
1302
                pCar->horn_sound_tag = 0;
-
 
1303
            }
-
 
1304
        }
-
 
1305
    }
1287
}
1306
}
1288
 
1307
 
1289
// IDA: void __cdecl CheckHorns()
1308
// IDA: void __cdecl CheckHorns()
1290
void CheckHorns(void) {
1309
void CheckHorns(void) {
1291
    int i;
1310
    int i;
Line 1376... Line 1395...
1376
 
1395
 
1377
    old_y = gMap_render_y;
1396
    old_y = gMap_render_y;
1378
    old_x = gMap_render_x;
1397
    old_x = gMap_render_x;
1379
    if (gMap_mode) {
1398
    if (gMap_mode) {
1380
        amount = gFrame_period * .1f;
1399
        amount = gFrame_period * .1f;
1381
        if (KeyIsDown(30)) {
1400
        if (KeyIsDown(KEYMAP_MOVE_UP)) {
1382
            gMap_render_y -= amount;
1401
            gMap_render_y -= amount;
1383
        } else if (KeyIsDown(31)) {
1402
        } else if (KeyIsDown(KEYMAP_MOVE_DOWN)) {
1384
            gMap_render_y += amount;
1403
            gMap_render_y += amount;
1385
        }
1404
        }
1386
        if (KeyIsDown(32)) {
1405
        if (KeyIsDown(KEYMAP_MOVE_LEFT)) {
1387
            gMap_render_x -= amount;
1406
            gMap_render_x -= amount;
1388
        } else if (KeyIsDown(33)) {
1407
        } else if (KeyIsDown(KEYMAP_MOVE_RIGHT)) {
1389
            gMap_render_x += amount;
1408
            gMap_render_x += amount;
1390
        }
1409
        }
1391
        if (gMap_render_x != old_x || gMap_render_y != old_y) {
1410
        if (gMap_render_x != old_x || gMap_render_y != old_y) {
1392
            SetIntegerMapRenders();
1411
            SetIntegerMapRenders();
1393
            if (gMap_render_x_i < gCurrent_graf_data->map_render_x_marg) {
1412
            if (gMap_render_x_i < gCurrent_graf_data->map_render_x_marg) {
Line 1729... Line 1748...
1729
    LOG_TRACE("(%p)", car);
1748
    LOG_TRACE("(%p)", car);
1730
 
1749
 
1731
    count = 0;
1750
    count = 0;
1732
    if (car->driver == eDriver_local_human && gNet_mode == eNet_mode_none) {
1751
    if (car->driver == eDriver_local_human && gNet_mode == eNet_mode_none) {
1733
        FadePaletteDown();
1752
        FadePaletteDown();
1734
        while (KeyIsDown(44)) {
1753
        while (KeyIsDown(KEYMAP_REPAIR)) {
1735
            ;
1754
            ;
1736
        }
1755
        }
1737
    }
1756
    }
1738
    car->doing_nothing_flag = 0;
1757
    car->doing_nothing_flag = 0;
1739
    EnableCar(car);
1758
    EnableCar(car);
Line 2134... Line 2153...
2134
    }
2153
    }
2135
}
2154
}
2136
 
2155
 
2137
// IDA: void __cdecl EarnDosh()
2156
// IDA: void __cdecl EarnDosh()
2138
void EarnDosh(void) {
2157
void EarnDosh(void) {
2139
    LOG_TRACE("()");
2158
    LOG_TRACE("()");
2140
 
2159
 
2141
    EarnCredits(5000);
2160
    EarnCredits(5000);
2142
}
2161
}
2143
 
2162
 
2144
// IDA: void __cdecl LoseDosh()
2163
// IDA: void __cdecl LoseDosh()
Line 2469... Line 2488...
2469
    }
2488
    }
2470
}
2489
}
2471
 
2490
 
2472
// IDA: void __cdecl EnterUserMessage()
2491
// IDA: void __cdecl EnterUserMessage()
2473
void EnterUserMessage(void) {
2492
void EnterUserMessage(void) {
2474
    //static int last_key; // Pierre-Marie Baty -- unused variable
2493
    static int last_key;
2475
    //static int about_to_die; // Pierre-Marie Baty -- unused variable
2494
    static int about_to_die;
2476
    //static tU32 next_time; // Pierre-Marie Baty -- unused variable
2495
    static tU32 next_time;
2477
    //char* the_message; // Pierre-Marie Baty -- unused variable
2496
    char* the_message;
2478
    //char* p; // Pierre-Marie Baty -- unused variable
2497
    char* p;
2479
    //int len; // Pierre-Marie Baty -- unused variable
2498
    int len;
2480
    //int the_key; // Pierre-Marie Baty -- unused variable
2499
    int the_key;
2481
    //int abuse_num; // Pierre-Marie Baty -- unused variable
2500
    int abuse_num;
2482
    LOG_TRACE("()");
2501
    LOG_TRACE("()");
-
 
2502
 
-
 
2503
    if (!gEntering_message) {
-
 
2504
        return;
-
 
2505
    }
-
 
2506
    if (gNet_mode == eNet_mode_none) {
2483
    STUB_ONCE();
2507
        return;
-
 
2508
    }
-
 
2509
    if (!gCurrent_net_game->options.enable_text_messages) {
-
 
2510
        return;
-
 
2511
    }
-
 
2512
    the_key = PDAnyKeyDown();
-
 
2513
    if (gEntering_message == 1) {
-
 
2514
        if (the_key != -1) {
-
 
2515
            return;
-
 
2516
        }
-
 
2517
        gEntering_message = 2;
-
 
2518
    }
-
 
2519
    if (about_to_die) {
-
 
2520
        if (the_key != -1) {
-
 
2521
            return;
-
 
2522
        }
-
 
2523
        gEntering_message = 0;
-
 
2524
        about_to_die = 0;
-
 
2525
        return;
-
 
2526
    }
-
 
2527
    if (the_key == last_key) {
-
 
2528
        if (next_time < PDGetTotalTime()) {
-
 
2529
            next_time += 100;
-
 
2530
        } else {
-
 
2531
            the_key = -1;
-
 
2532
        }
-
 
2533
    } else {
-
 
2534
        last_key = the_key;
-
 
2535
        next_time = PDGetTotalTime() + 500;
-
 
2536
    }
-
 
2537
    switch (the_key) {
-
 
2538
    case -1:
-
 
2539
    case KEY_SHIFT_ANY:
-
 
2540
        break;
-
 
2541
    case KEY_CTRL_ANY:
-
 
2542
    case KEY_CTRL_ANY_2:
-
 
2543
    case KEY_TAB:
-
 
2544
    case KEY_ESCAPE:
-
 
2545
        about_to_die = 1;
-
 
2546
        break;
-
 
2547
    case KEY_BACKSPACE:
-
 
2548
    case KEY_DELETE:
-
 
2549
    case KEY_LEFT:
-
 
2550
        len = strlen(&gString[20]);
-
 
2551
        if (len > 0) {
-
 
2552
            gString[20 + len - 1] = '\0';
-
 
2553
        }
-
 
2554
        break;
-
 
2555
    case KEY_RETURN:
-
 
2556
    case KEY_KP_ENTER:
-
 
2557
        len = strlen(gNet_players[gThis_net_player_index].player_name);
-
 
2558
        if (len <= 18) {
-
 
2559
            the_message = gString + 18 - len;
-
 
2560
            strcpy(the_message, gNet_players[gThis_net_player_index].player_name);
-
 
2561
            the_message[len + 0] = ':';
-
 
2562
            the_message[len + 1] = ' ';
-
 
2563
            gString[COUNT_OF(gString) - 1] = '\0';
-
 
2564
            NetSendHeadupToAllPlayers(the_message);
-
 
2565
            gString[20] = '\0';
-
 
2566
            NewTextHeadupSlot(4, 0, 1000, -4, GetMiscString(kMiscString_MESSAGE_SENT));
-
 
2567
            about_to_die = 1;
-
 
2568
        }
-
 
2569
        break;
-
 
2570
    default:
-
 
2571
        if (gKey_mapping[KEYMAP_SEND_MESSAGE] == the_key) {
-
 
2572
            about_to_die = 1;
-
 
2573
        } else if (the_key <= KEY_KP_NUMLOCK || the_key >= KEY_SPACE) {
-
 
2574
            len = strlen(&gString[20]);
-
 
2575
            if (len < 64 - 1) {
-
 
2576
                gString[20 + len] = PDGetASCIIFromKey(the_key);
-
 
2577
                if (gString[20 + len] < gFonts[4].offset || gString[20 + len] >= gFonts[4].offset + gFonts[4].num_entries) {
-
 
2578
                    gString[20 + len] = '\0';
-
 
2579
                }
-
 
2580
                gString[20 + len + 1] = '\0';
-
 
2581
            }
-
 
2582
        } else if (the_key < KEY_KP_0 || the_key >  KEY_KP_9) {
-
 
2583
            gEntering_message = 0;
-
 
2584
        } else {
-
 
2585
            if (the_key == KEY_KP_0) {
-
 
2586
                abuse_num = 9;
-
 
2587
            } else {
-
 
2588
                abuse_num = the_key - KEY_KP_1;
-
 
2589
            }
-
 
2590
            if (gAbuse_text[abuse_num] != NULL) {
-
 
2591
                strcpy(&gString[20], gAbuse_text[abuse_num]);
-
 
2592
            }
-
 
2593
        }
-
 
2594
    }
2484
}
2595
}
2485
 
2596
 
2486
// IDA: void __cdecl DisplayUserMessage()
2597
// IDA: void __cdecl DisplayUserMessage()
2487
void DisplayUserMessage(void) {
2598
void DisplayUserMessage(void) {
2488
    //char* the_message; // Pierre-Marie Baty -- unused variable
2599
    char* the_message;
2489
    //int len; // Pierre-Marie Baty -- unused variable
2600
    int len;
2490
    //tDR_font* font; // Pierre-Marie Baty -- unused variable
2601
    tDR_font* font;
2491
    LOG_TRACE("()");
2602
    LOG_TRACE("()");
-
 
2603
 
-
 
2604
    font = &gFonts[FONT_NEWHITE];
-
 
2605
    the_message = &gString[20];
-
 
2606
    if (!gEntering_message || gNet_mode == eNet_mode_none) {
-
 
2607
        return;
-
 
2608
    }
-
 
2609
 
-
 
2610
    len = strlen(the_message);
-
 
2611
    if (len < 63 && (PDGetTotalTime() & 512) != 0) {
-
 
2612
        the_message[len] = '_';
-
 
2613
        the_message[len + 1] = '\0';
-
 
2614
    }
-
 
2615
    DimRectangle(gBack_screen,
-
 
2616
        15 * gBack_screen->width / 100,
-
 
2617
        gCurrent_graf_data->net_message_enter_y - font->height,
-
 
2618
        85 * gBack_screen->width / 100,
-
 
2619
        gCurrent_graf_data->net_message_enter_y + 6 * font->height,
-
 
2620
        1);
-
 
2621
 
-
 
2622
    TransDRPixelmapText(gBack_screen, 20 * gBack_screen->width / 100, gCurrent_graf_data->net_message_enter_y, font, GetMiscString(kMiscString_ENTER_MESSAGE), 100);
-
 
2623
    OoerrIveGotTextInMeBoxMissus(
2492
    NOT_IMPLEMENTED();
2624
        FONT_NEWHITE,
-
 
2625
        the_message,
-
 
2626
        gBack_screen,
-
 
2627
        20 * gBack_screen->width / 100,
-
 
2628
        gCurrent_graf_data->net_message_enter_y + 2 * font->height,
-
 
2629
        80 * gBack_screen->width / 100,
-
 
2630
        gCurrent_graf_data->net_message_enter_y + 6 * font->height,
-
 
2631
        0);
-
 
2632
    the_message[len] = 0;
2493
}
2633
}
2494
 
2634
 
2495
// IDA: void __cdecl InitAbuseomatic()
2635
// IDA: void __cdecl InitAbuseomatic()
2496
void InitAbuseomatic(void) {
2636
void InitAbuseomatic(void) {
2497
    char path[256];
2637
    char path[256];