Subversion Repositories eduke32

Rev

Rev 4986 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4986 Rev 4987
Line 220... Line 220...
220
    T_NOAUTOLOAD,
220
    T_NOAUTOLOAD,
221
    T_INCLUDEDEFAULT,
221
    T_INCLUDEDEFAULT,
222
    T_MUSIC,
222
    T_MUSIC,
223
    T_SOUND,
223
    T_SOUND,
224
    T_FILE,
224
    T_FILE,
-
 
225
    T_CUTSCENE,
225
    T_ANIMSOUNDS,
226
    T_ANIMSOUNDS,
226
    T_NOFLOORPALRANGE,
227
    T_NOFLOORPALRANGE,
227
    T_ID
228
    T_ID,
-
 
229
    T_DELAY
228
};
230
};
229
231
230
232
231
static int32_t sbarsc(int32_t sc)
233
static int32_t sbarsc(int32_t sc)
232
{
234
{
Line 3765... Line 3767...
3765
3767
3766
    if (g_player[myconnectindex].ps->newowner == -1 && ud.overhead_on == 0 && ud.crosshair && ud.camerasprite == -1)
3768
    if (g_player[myconnectindex].ps->newowner == -1 && ud.overhead_on == 0 && ud.crosshair && ud.camerasprite == -1)
3767
    {
3769
    {
3768
        int32_t a = VM_OnEvent(EVENT_DISPLAYCROSSHAIR, g_player[screenpeek].ps->i, screenpeek);
3770
        int32_t a = VM_OnEvent(EVENT_DISPLAYCROSSHAIR, g_player[screenpeek].ps->i, screenpeek);
3769
3771
3770
        if (a == 0 || a > 1)
3772
        if ((unsigned)a < MAXTILES)
3771
        {
3773
        {
3772
            vec2_t crosshairpos = { 160<<16, 100<<16 };
-
 
3773
-
 
3774
            if (a == 0)
3774
            if (a == 0)
3775
                a = CROSSHAIR;
3775
                a = CROSSHAIR;
3776
3776
-
 
3777
            vec2_t crosshairpos = { 160<<16, 100<<16 };
-
 
3778
3777
            rotatesprite_win(crosshairpos.x-(g_player[myconnectindex].ps->look_ang<<15),crosshairpos.y,scale(65536,ud.crosshairscale,100),
3779
            rotatesprite_win(crosshairpos.x-(g_player[myconnectindex].ps->look_ang<<15),crosshairpos.y,scale(65536,ud.crosshairscale,100),
3778
                             0,a,0,CROSSHAIR_PAL,2+1);
3780
                             0,a,0,CROSSHAIR_PAL,2+1);
3779
3781
3780
#ifdef GEKKO
3782
#ifdef GEKKO
3781
            if ((g_player[myconnectindex].ps->gm&MODE_MENU) == 0 && readmouseabsxy(&crosshairpos, &mouseabs))
3783
            if ((g_player[myconnectindex].ps->gm&MODE_MENU) == 0 && readmouseabsxy(&crosshairpos, &mouseabs))
Line 3807... Line 3809...
3807
#ifdef YAX_DEBUG
3809
#ifdef YAX_DEBUG
3808
    M32_drawdebug();
3810
    M32_drawdebug();
3809
#endif
3811
#endif
3810
3812
3811
#ifdef USE_OPENGL
3813
#ifdef USE_OPENGL
3812
    {
-
 
3813
        extern int32_t mdpause;
3814
    extern int32_t mdpause;
3814
-
 
3815
        mdpause = 0;
-
 
3816
        if (ud.pause_on || (ud.recstat==2 && (g_demo_paused && g_demo_goalCnt==0)) || (g_player[myconnectindex].ps->gm&MODE_MENU && numplayers < 2))
3815
    mdpause = (ud.pause_on || (ud.recstat==2 && (g_demo_paused && g_demo_goalCnt==0)) || (g_player[myconnectindex].ps->gm&MODE_MENU && numplayers < 2));
3817
            mdpause = 1;
-
 
3818
    }
-
 
3819
#endif
3816
#endif
3820
3817
3821
    G_PrintFPS();
3818
    G_PrintFPS();
3822
3819
3823
    // JBF 20040124: display level stats in screen corner
3820
    // JBF 20040124: display level stats in screen corner
3824
    if ((ud.overhead_on != 2 && ud.levelstats) && (g_player[myconnectindex].ps->gm&MODE_MENU) == 0)
3821
    if ((ud.overhead_on != 2 && ud.levelstats) && (g_player[myconnectindex].ps->gm&MODE_MENU) == 0)
3825
    {
3822
    {
3826
        const DukePlayer_t *myps = g_player[myconnectindex].ps;
3823
        DukePlayer_t const * const myps = g_player[myconnectindex].ps;
3827
3824
3828
        if (ud.screen_size == 4)
3825
        if (ud.screen_size == 4)
3829
                {
3826
                {
3830
                        if (ud.althud == 2)
3827
                        if (ud.althud == 2)
3831
                                i = 2;
3828
                                i = 2;
Line 9364... Line 9361...
9364
        { "loadgrp",         T_LOADGRP          },
9361
        { "loadgrp",         T_LOADGRP          },
9365
        { "cachesize",       T_CACHESIZE        },
9362
        { "cachesize",       T_CACHESIZE        },
9366
        { "noautoload",      T_NOAUTOLOAD       },
9363
        { "noautoload",      T_NOAUTOLOAD       },
9367
        { "music",           T_MUSIC            },
9364
        { "music",           T_MUSIC            },
9368
        { "sound",           T_SOUND            },
9365
        { "sound",           T_SOUND            },
9369
#ifdef USE_LIBVPX
9366
        { "cutscene",        T_CUTSCENE         },
9370
        { "animsounds",      T_ANIMSOUNDS       },
9367
        { "animsounds",      T_ANIMSOUNDS       },
9371
#endif
-
 
9372
    };
9368
    };
9373
9369
9374
    static const tokenlist sound_musictokens[] =
9370
    static const tokenlist sound_musictokens[] =
9375
    {
9371
    {
9376
        { "id",   T_ID  },
9372
        { "id",   T_ID  },
9377
        { "file", T_FILE },
9373
        { "file", T_FILE },
9378
    };
9374
    };
9379
9375
-
 
9376
    static const tokenlist animtokens [] =
-
 
9377
    {
-
 
9378
        { "delay", T_DELAY },
-
 
9379
    };
-
 
9380
9380
    while (1)
9381
    while (1)
9381
    {
9382
    {
9382
        tokn = getatoken(script,tokens,ARRAY_SIZE(tokens));
9383
        tokn = getatoken(script,tokens,ARRAY_SIZE(tokens));
9383
        cmdtokptr = script->ltextptr;
9384
        cmdtokptr = script->ltextptr;
9384
        switch (tokn)
9385
        switch (tokn)
Line 9469... Line 9470...
9469
                               script->filename, scriptfile_getlinum(script,tinttokptr));
9470
                               script->filename, scriptfile_getlinum(script,tinttokptr));
9470
            }
9471
            }
9471
        }
9472
        }
9472
        break;
9473
        break;
9473
9474
-
 
9475
        case T_CUTSCENE:
-
 
9476
        {
-
 
9477
            int32_t delay = 10;
-
 
9478
            char *animend;
-
 
9479
            dukeanim_t *anim = NULL;
-
 
9480
            char *animname = NULL;
-
 
9481
-
 
9482
            scriptfile_getstring(script, &animname);
-
 
9483
-
 
9484
            if (scriptfile_getbraces(script, &animend))
-
 
9485
                break;
-
 
9486
-
 
9487
            while (script->textptr < animend)
-
 
9488
            {
-
 
9489
                switch (getatoken(script, animtokens, ARRAY_SIZE(animtokens)))
-
 
9490
                {
-
 
9491
                    case T_DELAY: scriptfile_getnumber(script, &delay); break;
9474
#ifdef USE_LIBVPX
9492
                }
-
 
9493
            }
-
 
9494
-
 
9495
//            if (!preload)
-
 
9496
            {
-
 
9497
/*
-
 
9498
                if (check_file_exist(animname))
-
 
9499
                    break;
-
 
9500
*/
-
 
9501
-
 
9502
                anim = G_FindAnim(animname);
-
 
9503
-
 
9504
                if (!anim)
-
 
9505
                    anim = G_DefineAnim(animname, delay, NULL);
-
 
9506
                else
-
 
9507
                    anim->framedelay = delay;
-
 
9508
            }
-
 
9509
        }
-
 
9510
        break;
9475
        case T_ANIMSOUNDS:
9511
        case T_ANIMSOUNDS:
9476
        {
9512
        {
9477
            char *otokptr = script->ltextptr;
9513
            char *otokptr = script->ltextptr;
9478
            char *animsoundsend = NULL;
9514
            char *animsoundsend = NULL;
9479
            int32_t animnum, numpairs=0, allocsz=4, bad=1, lastframenum=INT32_MIN;
9515
            int32_t numpairs = 0, allocsz = 4, bad = 1, lastframenum = INT32_MIN;
-
 
9516
            dukeanim_t *anim = NULL;
-
 
9517
            char *animname = NULL;
9480
9518
9481
            static const tokenlist hardcoded_anim_tokens[] =
9519
            scriptfile_getstring(script, &animname);
9482
            {
-
 
9483
                { "cineov2", 0 },
-
 
9484
                { "cineov3", 1 },
-
 
9485
                { "RADLOGO", 2 },
-
 
9486
                { "DUKETEAM", 3 },
-
 
9487
                { "logo", 4 },
-
 
9488
                { "vol41a", 5 },
-
 
9489
                { "vol42a", 6 },
-
 
9490
                { "vol4e1", 7 },
-
 
9491
                { "vol43a", 8 },
-
 
9492
                { "vol4e2", 9 },
-
 
9493
                { "vol4e3", 10 },
-
 
9494
                { "3dr",    11 },
-
 
9495
                // NUM_HARDCODED_ANIMS
-
 
9496
            };
-
 
9497
9520
-
 
9521
            if (animname)
9498
            EDUKE32_STATIC_ASSERT(ARRAY_SIZE(hardcoded_anim_tokens) == NUM_HARDCODED_ANIMS);
9522
                anim = G_FindAnim(animname);
9499
9523
9500
            animnum = getatoken(script, hardcoded_anim_tokens, NUM_HARDCODED_ANIMS);
9524
            if (!anim)
9501
            if ((unsigned)animnum >= NUM_HARDCODED_ANIMS)
9525
            {
9502
                initprintf("Error: expected a hardcoded anim file name (sans extension) on line %s:%d\n",
9526
                initprintf("Error: expected a hardcoded anim file name (sans extension) on line %s:%d\n",
9503
                           script->filename, scriptfile_getlinum(script, otokptr));
9527
                           script->filename, scriptfile_getlinum(script, otokptr));
-
 
9528
                break;
-
 
9529
            }
9504
9530
9505
            if (scriptfile_getbraces(script, &animsoundsend)) break;
9531
            if (scriptfile_getbraces(script, &animsoundsend))
-
 
9532
                break;
9506
9533
9507
            if (anim_hi_sounds[animnum])
9534
            if (anim->sounds)
9508
            {
9535
            {
9509
                initprintf("Warning: overwriting already defined hi-anim %s's sounds on line %s:%d\n",
9536
                initprintf("Warning: overwriting already defined hi-anim %s's sounds on line %s:%d\n", animname,
9510
                           hardcoded_anim_tokens[animnum].text, script->filename,
-
 
9511
                           scriptfile_getlinum(script, otokptr));
9537
                           script->filename, scriptfile_getlinum(script, otokptr));
9512
                Bfree(anim_hi_sounds[animnum]);
9538
                Bfree(anim->sounds);
9513
                anim_hi_numsounds[animnum] = 0;
9539
                anim->numsounds = 0;
9514
            }
9540
            }
9515
9541
9516
            if (!preload)
9542
            if (!preload)
9517
                anim_hi_sounds[animnum] = (uint16_t *)Xcalloc(allocsz, 2*sizeof(anim_hi_sounds[0]));
9543
                anim->sounds = (uint16_t *)Xcalloc(allocsz, 2 * sizeof(uint16_t));
9518
            while (script->textptr < animsoundsend)
9544
            while (script->textptr < animsoundsend)
9519
            {
9545
            {
9520
                int32_t framenum, soundnum;
9546
                int32_t framenum, soundnum;
9521
9547
9522
                if (preload)
9548
                if (preload)
9523
                {
9549
                {
9524
                    // dummy
9550
                    // dummy
9525
                    getatoken(script, hardcoded_anim_tokens, NUM_HARDCODED_ANIMS);
9551
                    scriptfile_getstring(script, &animname);
-
 
9552
-
 
9553
                    if (animname)
-
 
9554
                        anim = G_FindAnim(animname);
9526
                    continue;
9555
                    continue;
9527
                }
9556
                }
9528
9557
9529
                // HACK: we've reached the end of the list
9558
                // HACK: we've reached the end of the list
9530
                //  (hack because it relies on knowledge of
9559
                //  (hack because it relies on knowledge of
Line 9532... Line 9561...
9532
                if (animsoundsend - script->textptr == 1)
9561
                if (animsoundsend - script->textptr == 1)
9533
                    break;
9562
                    break;
9534
9563
9535
                // would produce error when it encounters the closing '}'
9564
                // would produce error when it encounters the closing '}'
9536
                // without the above hack
9565
                // without the above hack
9537
                if (scriptfile_getnumber(script, &framenum)) break;
9566
                if (scriptfile_getnumber(script, &framenum))
-
 
9567
                    break;
9538
9568
9539
                bad=1;
9569
                bad = 1;
9540
9570
9541
                // TODO: look carefully at whether this can be removed.
9571
                // TODO: look carefully at whether this can be removed.
9542
                if (anim_hi_sounds[animnum]==NULL)  // Bcalloc check
9572
                if (anim->sounds == NULL)  // Bcalloc check
9543
                    break;
9573
                    break;
9544
9574
9545
                if (scriptfile_getsymbol(script, &soundnum)) break;
9575
                if (scriptfile_getsymbol(script, &soundnum))
-
 
9576
                    break;
9546
9577
9547
                // frame numbers start at 1 for us
9578
                // frame numbers start at 1 for us
9548
                if (framenum <= 0)
9579
                if (framenum <= 0)
9549
                {
9580
                {
9550
                    initprintf("Error: frame number must be greater zero on line %s:%d\n",
9581
                    initprintf("Error: frame number must be greater zero on line %s:%d\n", script->filename,
9551
                               script->filename, scriptfile_getlinum(script, script->ltextptr));
9582
                               scriptfile_getlinum(script, script->ltextptr));
9552
                    break;
9583
                    break;
9553
                }
9584
                }
9554
9585
9555
                if (framenum < lastframenum)
9586
                if (framenum < lastframenum)
9556
                {
9587
                {
Line 9561... Line 9592...
9561
                }
9592
                }
9562
                lastframenum = framenum;
9593
                lastframenum = framenum;
9563
9594
9564
                if ((unsigned)soundnum >= MAXSOUNDS)
9595
                if ((unsigned)soundnum >= MAXSOUNDS)
9565
                {
9596
                {
9566
                    initprintf("Error: sound number #%d invalid on line %s:%d\n", soundnum,
9597
                    initprintf("Error: sound number #%d invalid on line %s:%d\n", soundnum, script->filename,
9567
                               script->filename, scriptfile_getlinum(script, script->ltextptr));
9598
                               scriptfile_getlinum(script, script->ltextptr));
9568
                    break;
9599
                    break;
9569
                }
9600
                }
9570
9601
9571
                if (numpairs >= allocsz)
9602
                if (numpairs >= allocsz)
9572
                {
9603
                {
9573
                    void *newptr;
9604
                    void *newptr;
9574
9605
9575
                    allocsz *= 2;
9606
                    allocsz *= 2;
9576
                    newptr = Xrealloc(anim_hi_sounds[animnum], allocsz*2*sizeof(anim_hi_sounds[0]));
9607
                    newptr = Xrealloc(anim->sounds, allocsz * 2 * sizeof(uint16_t));
9577
9608
9578
                    anim_hi_sounds[animnum] = (uint16_t *)newptr;
9609
                    anim->sounds = (uint16_t *)newptr;
9579
                }
9610
                }
9580
9611
9581
                bad=0;
9612
                bad = 0;
9582
9613
9583
                anim_hi_sounds[animnum][2*numpairs] = framenum;
9614
                anim->sounds[2 * numpairs] = framenum;
9584
                anim_hi_sounds[animnum][2*numpairs+1] = soundnum;
9615
                anim->sounds[2 * numpairs + 1] = soundnum;
9585
                numpairs++;
9616
                numpairs++;
9586
            }
9617
            }
9587
9618
9588
            if (!preload)
9619
            if (!preload)
9589
            {
9620
            {
9590
                if (!bad)
9621
                if (!bad)
9591
                {
9622
                {
9592
                    anim_hi_numsounds[animnum] = numpairs;
9623
                    anim->numsounds = numpairs;
9593
                    // initprintf("Defined sound sequence for hi-anim \"%s\" with %d frame/sound pairs\n",
9624
                    // initprintf("Defined sound sequence for hi-anim \"%s\" with %d frame/sound pairs\n",
9594
                    //           hardcoded_anim_tokens[animnum].text, numpairs);
9625
                    //           hardcoded_anim_tokens[animnum].text, numpairs);
9595
                }
9626
                }
9596
                else
9627
                else
9597
                {
9628
                {
9598
                    Bfree(anim_hi_sounds[animnum]);
-
 
9599
                    anim_hi_sounds[animnum] = NULL;
9629
                    DO_FREE_AND_NULL(anim->sounds);
9600
                    initprintf("Failed defining sound sequence for hi-anim \"%s\".\n",
9630
                    initprintf("Failed defining sound sequence for hi-anim \"%s\".\n",
9601
                               hardcoded_anim_tokens[animnum].text);
9631
                               animname);
9602
                }
9632
                }
9603
            }
9633
            }
9604
        }
9634
        }
9605
        break;
9635
        break;
9606
#endif  // defined USE_LIBVPX
-
 
-
 
9636
9607
        case T_SOUND:
9637
        case T_SOUND:
9608
        {
9638
        {
9609
            char *tinttokptr = script->ltextptr;
9639
            char *tinttokptr = script->ltextptr;
9610
            char *fn="";
9640
            char *fn="";
9611
            int32_t num=-1;
9641
            int32_t num=-1;
Line 10441... Line 10471...
10441
            (logoflags & LOGO_PLAYANIM))
10471
            (logoflags & LOGO_PLAYANIM))
10442
        {
10472
        {
10443
            if (!I_CheckAllInput() && g_noLogoAnim == 0)
10473
            if (!I_CheckAllInput() && g_noLogoAnim == 0)
10444
            {
10474
            {
10445
                Net_GetPackets();
10475
                Net_GetPackets();
10446
                G_PlayAnim("logo.anm",5);
10476
                G_PlayAnim("logo.anm");
10447
                G_FadePalette(0,0,0,63);
10477
                G_FadePalette(0,0,0,63);
10448
                I_ClearAllInput();
10478
                I_ClearAllInput();
10449
            }
10479
            }
10450
10480
10451
            clearallviews(0L);
10481
            clearallviews(0L);
Line 10483... Line 10513...
10483
                        i = kopen4loadfrommod("3dr.anm", 0);
10513
                        i = kopen4loadfrommod("3dr.anm", 0);
10484
10514
10485
                    if (i != -1)
10515
                    if (i != -1)
10486
                    {
10516
                    {
10487
                        kclose(i);
10517
                        kclose(i);
10488
                        G_PlayAnim("3dr.anm", 12);
10518
                        G_PlayAnim("3dr.anm");
10489
                        G_FadePalette(0, 0, 0, 63);
10519
                        G_FadePalette(0, 0, 0, 63);
10490
                        I_ClearAllInput();
10520
                        I_ClearAllInput();
10491
                    }
10521
                    }
10492
                    else
10522
                    else
10493
                    {
10523
                    {
Line 10680... Line 10710...
10680
    hash_free(&h_gamevars);
10710
    hash_free(&h_gamevars);
10681
    hash_free(&h_arrays);
10711
    hash_free(&h_arrays);
10682
    hash_free(&h_labels);
10712
    hash_free(&h_labels);
10683
    hash_free(&h_gamefuncs);
10713
    hash_free(&h_gamefuncs);
10684
#endif
10714
#endif
-
 
10715
-
 
10716
    hash_free(&h_dukeanim); // TODO: free the dukeanim_t structs the hash table entries point to
10685
}
10717
}
10686
10718
10687
/*
10719
/*
10688
===================
10720
===================
10689
=
10721
=
Line 11474... Line 11506...
11474
        i = 1-i;
11506
        i = 1-i;
11475
    }
11507
    }
11476
11508
11477
    if (quitevent) return 4;
11509
    if (quitevent) return 4;
11478
11510
11479
    {
11511
    G_InitAnim();
-
 
11512
11480
        const char *defsfile = G_DefFile();
11513
    const char *defsfile = G_DefFile();
11481
        uint32_t stime = getticks();
11514
    uint32_t stime = getticks();
11482
        if (!loaddefinitionsfile(defsfile))
11515
    if (!loaddefinitionsfile(defsfile))
11483
        {
11516
    {
11484
            uint32_t etime = getticks();
11517
        uint32_t etime = getticks();
11485
            initprintf("Definitions file \"%s\" loaded in %d ms.\n", defsfile, etime-stime);
11518
        initprintf("Definitions file \"%s\" loaded in %d ms.\n", defsfile, etime-stime);
11486
            loaddefinitions_game(defsfile, FALSE);
11519
        loaddefinitions_game(defsfile, FALSE);
11487
        }
11520
    }
11488
    }
-
 
11489
11521
11490
    for (i=0; i < g_defModulesNum; ++i)
11522
    for (i=0; i < g_defModulesNum; ++i)
11491
        Bfree(g_defModules[i]);
11523
        Bfree(g_defModules[i]);
11492
    Bfree(g_defModules);
11524
    Bfree(g_defModules);
11493
    g_defModules = NULL;
11525
    g_defModules = NULL;
Line 12209... Line 12241...
12209
        nextpage();
12241
        nextpage();
12210
12242
12211
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE2BONUSSCENE))
12243
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE2BONUSSCENE))
12212
        {
12244
        {
12213
            fadepal(0,0,0, 63,0,-1);
12245
            fadepal(0,0,0, 63,0,-1);
12214
            G_PlayAnim("cineov2.anm",1);
12246
            G_PlayAnim("cineov2.anm");
12215
            I_ClearAllInput();
12247
            I_ClearAllInput();
12216
            clearallviews(0L);
12248
            clearallviews(0L);
12217
            nextpage();
12249
            nextpage();
12218
12250
12219
            S_PlaySound(PIPEBOMB_EXPLODE);
12251
            S_PlaySound(PIPEBOMB_EXPLODE);
Line 12245... Line 12277...
12245
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE4BONUSSCENE))
12277
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE4BONUSSCENE))
12246
        {
12278
        {
12247
            fadepal(0,0,0, 63,0,-1);
12279
            fadepal(0,0,0, 63,0,-1);
12248
12280
12249
            I_ClearAllInput();
12281
            I_ClearAllInput();
12250
            t = G_PlayAnim("vol4e1.anm",8);
12282
            t = G_PlayAnim("vol4e1.anm");
12251
            clearallviews(0L);
12283
            clearallviews(0L);
12252
            nextpage();
12284
            nextpage();
12253
            if (t)
12285
            if (t)
12254
                goto end_vol4e;
12286
                goto end_vol4e;
12255
12287
12256
            t = G_PlayAnim("vol4e2.anm",10);
12288
            t = G_PlayAnim("vol4e2.anm");
12257
            clearallviews(0L);
12289
            clearallviews(0L);
12258
            nextpage();
12290
            nextpage();
12259
            if (t)
12291
            if (t)
12260
                goto end_vol4e;
12292
                goto end_vol4e;
12261
12293
12262
            G_PlayAnim("vol4e3.anm",11);
12294
            G_PlayAnim("vol4e3.anm");
12263
            clearallviews(0L);
12295
            clearallviews(0L);
12264
            nextpage();
12296
            nextpage();
12265
        }
12297
        }
12266
12298
12267
end_vol4e:
12299
end_vol4e:
Line 12298... Line 12330...
12298
12330
12299
VOL4_DUKETEAM:
12331
VOL4_DUKETEAM:
12300
        clearallviews(0L);
12332
        clearallviews(0L);
12301
        nextpage();
12333
        nextpage();
12302
12334
12303
        G_PlayAnim("DUKETEAM.ANM",4);
12335
        G_PlayAnim("DUKETEAM.ANM");
12304
12336
12305
        I_ClearAllInput();
12337
        I_ClearAllInput();
12306
        G_HandleEventsWhileNoInput();
12338
        G_HandleEventsWhileNoInput();
12307
12339
12308
        clearallviews(0L);
12340
        clearallviews(0L);
Line 12324... Line 12356...
12324
        clearallviews(0L);
12356
        clearallviews(0L);
12325
        nextpage();
12357
        nextpage();
12326
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE3BONUSSCENE))
12358
        if (ud.lockout == 0 && !(G_GetLogoFlags() & LOGO_NOE3BONUSSCENE))
12327
        {
12359
        {
12328
            fadepal(0,0,0, 63,0,-1);
12360
            fadepal(0,0,0, 63,0,-1);
12329
            G_PlayAnim("cineov3.anm",2);
12361
            G_PlayAnim("cineov3.anm");
12330
            I_ClearAllInput();
12362
            I_ClearAllInput();
12331
            ototalclock = totalclock+200;
12363
            ototalclock = totalclock+200;
12332
            while (totalclock < ototalclock)
12364
            while (totalclock < ototalclock)
12333
                G_HandleAsync();
12365
                G_HandleAsync();
12334
            clearallviews(0L);
12366
            clearallviews(0L);
Line 12339... Line 12371...
12339
        }
12371
        }
12340
12372
12341
        if (G_GetLogoFlags() & LOGO_NOE3RADLOGO)
12373
        if (G_GetLogoFlags() & LOGO_NOE3RADLOGO)
12342
            goto ENDANM;
12374
            goto ENDANM;
12343
12375
12344
        G_PlayAnim("RADLOGO.ANM",3);
12376
        G_PlayAnim("RADLOGO.ANM");
12345
12377
12346
        if (ud.lockout == 0 && !I_CheckAllInput())
12378
        if (ud.lockout == 0 && !I_CheckAllInput())
12347
        {
12379
        {
12348
            if (G_PlaySoundWhileNoInput(ENDSEQVOL3SND5)) goto ENDANM;
12380
            if (G_PlaySoundWhileNoInput(ENDSEQVOL3SND5)) goto ENDANM;
12349
            if (G_PlaySoundWhileNoInput(ENDSEQVOL3SND6)) goto ENDANM;
12381
            if (G_PlaySoundWhileNoInput(ENDSEQVOL3SND6)) goto ENDANM;
Line 12375... Line 12407...
12375
            S_PlaySound(ENDSEQVOL3SND4);
12407
            S_PlaySound(ENDSEQVOL3SND4);
12376
12408
12377
            clearallviews(0L);
12409
            clearallviews(0L);
12378
            nextpage();
12410
            nextpage();
12379
12411
12380
            G_PlayAnim("DUKETEAM.ANM",4);
12412
            G_PlayAnim("DUKETEAM.ANM");
12381
12413
12382
            I_ClearAllInput();
12414
            I_ClearAllInput();
12383
            G_HandleEventsWhileNoInput();
12415
            G_HandleEventsWhileNoInput();
12384
12416
12385
            clearallviews(0L);
12417
            clearallviews(0L);