c f 暗黑2毁灭之王1.13c系列

all-wcprops
Texture2D.h.svn-base
Texture2D.m.svn-base
am_map.c.svn-base
am_map.h.svn-base
BlockMap.h.svn-base
BlockMap.m.svn-base
doomdata.h.svn-base
doomdef.c.svn-base
doomdef.h.svn-base
doomstat.c.svn-base
doomstat.h.svn-base
doomtype.h.svn-base
dstrings.c.svn-base
dstrings.h.svn-base
d_englsh.h.svn-base
d_event.h.svn-base
d_french.h.svn-base
d_items.c.svn-base
d_items.h.svn-base
d_main.h.svn-base
d_main.m.svn-base
d_net.c.svn-base
d_net.h.svn-base
d_player.h.svn-base
d_textur.h.svn-base
d_think.h.svn-base
d_ticcmd.h.svn-base
FixedPointMath.h.svn-base
FixedPointMath.m.svn-base
f_finale.c.svn-base
f_finale.h.svn-base
f_wipe.c.svn-base
f_wipe.h.svn-base
g_game.c.svn-base
g_game.h.svn-base
hu_lib.c.svn-base
hu_lib.h.svn-base
hu_stuff.c.svn-base
hu_stuff.h.svn-base
iDoomAppDelegate.h.svn-base
iDoomAppDelegate.m.svn-base
iDoomView.h.svn-base
iDoomView.m.svn-base
iDoomViewController.h.svn-base
iDoomViewController.m.svn-base
info.c.svn-base
info.h.svn-base
i_net.c.svn-base
i_net.h.svn-base
i_savegame.h.svn-base
i_savegame.m.svn-base
i_sound.h.svn-base
i_sound.m.svn-base
i_system.c.svn-base
i_system.h.svn-base
i_video.h.svn-base
i_video.m.svn-base
m_argv.c.svn-base
m_argv.h.svn-base
m_bbox.c.svn-base
m_bbox.h.svn-base
m_cheat.c.svn-base
m_cheat.h.svn-base
m_fixed.c.svn-base
m_fixed.h.svn-base
m_menu.c.svn-base
m_menu.h.svn-base
m_misc.c.svn-base
m_misc.h.svn-base
m_random.c.svn-base
m_random.h.svn-base
m_swap.c.svn-base
m_swap.h.svn-base
p_ceilng.c.svn-base
p_doors.c.svn-base
p_enemy.c.svn-base
p_floor.c.svn-base
p_inter.c.svn-base
p_inter.h.svn-base
p_lights.c.svn-base
p_local.h.svn-base
p_map.c.svn-base
p_maputl.c.svn-base
p_mobj.c.svn-base
p_mobj.h.svn-base
p_plats.c.svn-base
p_pspr.c.svn-base
p_pspr.h.svn-base
p_saveg.c.svn-base
p_saveg.h.svn-base
p_setup.c.svn-base
p_setup.h.svn-base
p_sight.c.svn-base
p_spec.c.svn-base
p_spec.h.svn-base
p_switch.c.svn-base
p_telept.c.svn-base
p_tick.c.svn-base
p_tick.h.svn-base
p_user.c.svn-base
r_bsp.c.svn-base
r_bsp.h.svn-base
r_data.c.svn-base
r_data.h.svn-base
r_defs.h.svn-base
r_draw.c.svn-base
r_draw.h.svn-base
r_local.h.svn-base
r_main.c.svn-base
r_main.h.svn-base
r_plane.c.svn-base
r_plane.h.svn-base
r_segs.c.svn-base
r_segs.h.svn-base
r_sky.c.svn-base
r_sky.h.svn-base
r_state.h.svn-base
r_things.c.svn-base
r_things.h.svn-base
Sectors.h.svn-base
Sectors.m.svn-base
sounds.c.svn-base
sounds.h.svn-base
st_lib.c.svn-base
st_lib.h.svn-base
st_stuff.c.svn-base
st_stuff.h.svn-base
s_sound.c.svn-base
s_sound.h.svn-base
tables.c.svn-base
tables.h.svn-base
Texture2D.h.svn-base
Texture2D.m.svn-base
Vertexes.h.svn-base
Vertexes.m.svn-base
v_video.c.svn-base
v_video.h.svn-base
wi_stuff.c.svn-base
wi_stuff.h.svn-base
w_wad.c.svn-base
w_wad.h.svn-base
z_zone.c.svn-base
z_zone.h.svn-base
all-wcprops
iDoom.xcodeproj
project.pbxproj.svn-base
ben.pbxuser.svn-base
ben.perspectivev3.svn-base
project.pbxproj.svn-base
all-wcprops
ben.pbxuser
ben.perspectivev3
project.pbxproj
Default.png
Entitlements.plist
GameControls.png
iDoomViewController.xib
iDoom_Prefix.pch
Info.plist
Licence.txt
MainWindow.xib
MenuControls.png
Read Me.txt
// Emacs style mode select
-*- C++ -*-
//-----------------------------------------------------------------------------
// Copyright (C)
by id Software, Inc.
// This prog you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software F either version 2
// of the License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// GNU General Public License for more details.
// DESCRIPTION:
// Game completion, final screen animation.
//-----------------------------------------------------------------------------
static const char
rcsid[] = &$Id: f_finale.c,v 1.5
21:26:34 b1 Exp $&;
#include &ctype.h&
// Functions.
#include &i_system.h&
#include &m_swap.h&
#include &z_zone.h&
#include &v_video.h&
#include &w_wad.h&
#include &s_sound.h&
#include &dstrings.h&
#include &sounds.h&
#include &doomstat.h&
#include &r_state.h&
//#include &doomstat.h&
//#include &r_local.h&
//#include &f_finale.h&
// Stage of animation:
0 = text, 1 = art screen, 2 = character cast
#define TEXTSPEED 3
#define TEXTWAIT 250
char* e1text = E1TEXT;
char* e2text = E2TEXT;
char* e3text = E3TEXT;
char* e4text = E4TEXT;
char* c1text = C1TEXT;
char* c2text = C2TEXT;
char* c3text = C3TEXT;
char* c4text = C4TEXT;
char* c5text = C5TEXT;
char* c6text = C6TEXT;
char* p1text = P1TEXT;
char* p2text = P2TEXT;
char* p3text = P3TEXT;
char* p4text = P4TEXT;
char* p5text = P5TEXT;
char* p6text = P6TEXT;
char* t1text = T1TEXT;
char* t2text = T2TEXT;
char* t3text = T3TEXT;
char* t4text = T4TEXT;
char* t5text = T5TEXT;
char* t6text = T6TEXT;
void F_StartCast (void);
void F_CastTicker (void);
boolean F_CastResponder (event_t *ev);
void F_CastDrawer (void);
// F_StartFinale
void F_StartFinale (void)
gameaction = ga_
gamestate = GS_FINALE;
viewactive =
automapactive =
// Okay - IWAD dependend stuff.
// This has been changed severly, and
some stuff might have changed in the process.
switch ( gamemode )
// DOOM 1 - E1, E3 or E4, but each nine missions
case shareware:
case registered:
case retail:
S_ChangeMusic(mus_victor, true);
switch (gameepisode)
finaleflat = &FLOOR4_8&;
finaletext = e1
finaleflat = &SFLR6_1&;
finaletext = e2
finaleflat = &MFLR8_4&;
finaletext = e3
finaleflat = &MFLR8_3&;
finaletext = e4
// DOOM II and missions packs with E1, M34
case commercial:
S_ChangeMusic(mus_read_m, true);
switch (gamemap)
finaleflat = &SLIME16&;
finaletext = c1
finaleflat = &RROCK14&;
finaletext = c2
finaleflat = &RROCK07&;
finaletext = c3
finaleflat = &RROCK17&;
finaletext = c4
finaleflat = &RROCK13&;
finaletext = c5
finaleflat = &RROCK19&;
finaletext = c6
// Indeterminate.
S_ChangeMusic(mus_read_m, true);
finaleflat = &F_SKY1&; // Not used anywhere else.
finaletext = c1
// FIXME - other text, music?
finalestage = 0;
finalecount = 0;
boolean F_Responder (event_t *event)
if (finalestage == 2)
return F_CastResponder (event);
// F_Ticker
void F_Ticker (void)
// check for skipping
if ( (gamemode == commercial)
&& ( finalecount & 50) )
// go on to the next level
for (i=0 ; i&MAXPLAYERS ; i++)
if (players[i].cmd.buttons)
if (i & MAXPLAYERS)
if (gamemap == 30)
F_StartCast ();
gameaction = ga_
// advance animation
finalecount++;
if (finalestage == 2)
F_CastTicker ();
if ( gamemode == commercial)
if (!finalestage && finalecount&strlen (finaletext)*TEXTSPEED + TEXTWAIT)
finalecount = 0;
finalestage = 1;
wipegamestate = -1;
// force a wipe
if (gameepisode == 3)
S_StartMusic (mus_bunny);
// F_TextWrite
#include &hu_stuff.h&
extern patch_t *hu_font[HU_FONTSIZE];
void F_TextWrite (void)
// erase the entire screen to a tiled background
src = W_CacheLumpName ( finaleflat , PU_CACHE);
dest = screens[0];
for (y=0 ; y&SCREENHEIGHT ; y++)
for (x=0 ; x&SCREENWIDTH/64 ; x++)
memcpy (dest, src+((y&63)&&6), 64);
dest += 64;
if (SCREENWIDTH&63)
memcpy (dest, src+((y&63)&&6), SCREENWIDTH&63);
dest += (SCREENWIDTH&63);
V_MarkRect (0, 0, SCREENWIDTH, SCREENHEIGHT);
// draw some of the text onto the screen
count = (finalecount - 10)/TEXTSPEED;
if (count & 0)
count = 0;
for ( ; count-- )
c = *ch++;
if (c == '\n')
c = toupper(c) - HU_FONTSTART;
if (c & 0 || c& HU_FONTSIZE)
w = SHORT (hu_font[c]-&width);
if (cx+w & SCREENWIDTH)
V_DrawPatch(cx, cy, 0, hu_font[c]);
// Final DOOM 2 animation
// Casting by id Software.
in order of appearance
typedef struct
mobjtype_t
} castinfo_t;
castinfo_t castorder[] = {
{CC_ZOMBIE, MT_POSSESSED},
{CC_SHOTGUN, MT_SHOTGUY},
{CC_HEAVY, MT_CHAINGUY},
{CC_IMP, MT_TROOP},
{CC_DEMON, MT_SERGEANT},
{CC_LOST, MT_SKULL},
{CC_CACO, MT_HEAD},
{CC_HELL, MT_KNIGHT},
{CC_BARON, MT_BRUISER},
{CC_ARACH, MT_BABY},
{CC_PAIN, MT_PAIN},
{CC_REVEN, MT_UNDEAD},
{CC_MANCU, MT_FATSO},
{CC_ARCH, MT_VILE},
{CC_SPIDER, MT_SPIDER},
{CC_CYBER, MT_CYBORG},
{CC_HERO, MT_PLAYER},
// F_StartCast
extern gamestate_
void F_StartCast (void)
wipegamestate = -1;
// force a screen wipe
castnum = 0;
caststate = &states[mobjinfo[castorder[castnum].type].seestate];
casttics = caststate-&
castdeath =
finalestage = 2;
castframes = 0;
castonmelee = 0;
castattacking =
S_ChangeMusic(mus_evil, true);
// F_CastTicker
void F_CastTicker (void)
if (--casttics & 0)
// not time to change state yet
if (caststate-&tics == -1 || caststate-&nextstate == S_NULL)
// switch from deathstate to next monster
castnum++;
castdeath =
if (castorder[castnum].name == NULL)
castnum = 0;
if (mobjinfo[castorder[castnum].type].seesound)
S_StartSound (NULL, mobjinfo[castorder[castnum].type].seesound);
caststate = &states[mobjinfo[castorder[castnum].type].seestate];
castframes = 0;
// just advance to next state in animation
if (caststate == &states[S_PLAY_ATK1])
// Oh, gross hack!
st = caststate-&
caststate = &states[st];
castframes++;
// sound hacks....
switch (st)
case S_PLAY_ATK1: sfx = sfx_
case S_POSS_ATK2: sfx = sfx_
case S_SPOS_ATK2: sfx = sfx_
case S_VILE_ATK2: sfx = sfx_
case S_SKEL_FIST2: sfx = sfx_
case S_SKEL_FIST4: sfx = sfx_
case S_SKEL_MISS2: sfx = sfx_
case S_FATT_ATK8:
case S_FATT_ATK5:
case S_FATT_ATK2: sfx = sfx_
case S_CPOS_ATK2:
case S_CPOS_ATK3:
case S_CPOS_ATK4: sfx = sfx_
case S_TROO_ATK3: sfx = sfx_
case S_SARG_ATK2: sfx = sfx_
case S_BOSS_ATK2:
case S_BOS2_ATK2:
case S_HEAD_ATK2: sfx = sfx_
case S_SKULL_ATK2: sfx = sfx_
case S_SPID_ATK2:
case S_SPID_ATK3: sfx = sfx_
case S_BSPI_ATK2: sfx = sfx_
case S_CYBER_ATK2:
case S_CYBER_ATK4:
case S_CYBER_ATK6: sfx = sfx_
case S_PAIN_ATK3: sfx = sfx_
default: sfx = 0;
S_StartSound (NULL, sfx);
if (castframes == 12)
// go into attack frame
castattacking =
if (castonmelee)
caststate=&states[mobjinfo[castorder[castnum].type].meleestate];
caststate=&states[mobjinfo[castorder[castnum].type].missilestate];
castonmelee ^= 1;
if (caststate == &states[S_NULL])
if (castonmelee)
caststate=
&states[mobjinfo[castorder[castnum].type].meleestate];
caststate=
&states[mobjinfo[castorder[castnum].type].missilestate];
if (castattacking)
if (castframes == 24
|| caststate == &states[mobjinfo[castorder[castnum].type].seestate] )
stopattack:
castattacking =
castframes = 0;
caststate = &states[mobjinfo[castorder[castnum].type].seestate];
casttics = caststate-&
if (casttics == -1)
casttics = 15;
// F_CastResponder
boolean F_CastResponder (event_t* ev)
if (ev-&type != ev_keydown)
if (castdeath)
// already in dying frames
// go into death frame
castdeath =
caststate = &states[mobjinfo[castorder[castnum].type].deathstate];
casttics = caststate-&
castframes = 0;
castattacking =
if (mobjinfo[castorder[castnum].type].deathsound)
S_StartSound (NULL, mobjinfo[castorder[castnum].type].deathsound);
void F_CastPrint (char* text)
// find width
width = 0;
while (ch)
c = *ch++;
c = toupper(c) - HU_FONTSTART;
if (c & 0 || c& HU_FONTSIZE)
width += 4;
w = SHORT (hu_font[c]-&width);
// draw it
cx = 160-width/2;
while (ch)
c = *ch++;
c = toupper(c) - HU_FONTSTART;
if (c & 0 || c& HU_FONTSIZE)
w = SHORT (hu_font[c]-&width);
V_DrawPatch(cx, 180, 0, hu_font[c]);
// F_CastDrawer
void V_DrawPatchFlipped (int x, int y, int scrn, patch_t *patch);
void F_CastDrawer (void)
spritedef_t*
spriteframe_t*
// erase the entire screen to a background
V_DrawPatch (0,0,0, W_CacheLumpName (&BOSSBACK&, PU_CACHE));
F_CastPrint (castorder[castnum].name);
// draw the current frame in the middle of the screen
sprdef = &sprites[caststate-&sprite];
sprframe = &sprdef-&spriteframes[ caststate-&frame & FF_FRAMEMASK];
lump = sprframe-&lump[0];
flip = (boolean)sprframe-&flip[0];
patch = W_CacheLumpNum (lump+firstspritelump, PU_CACHE);
V_DrawPatchFlipped (160,170,0,patch);
V_DrawPatch (160,170,0,patch);
// F_DrawPatchCol
F_DrawPatchCol
patch_t* patch,
column = (column_t *)((byte *)patch + LONG(patch-&columnofs[col]));
desttop = screens[0]+x;
// step through the posts in a column
while (column-&topdelta != 0xff )
source = (byte *)column + 3;
dest = desttop + column-&topdelta*SCREENWIDTH;
count = column-&
while (count--)
*dest = *source++;
dest += SCREENWIDTH;
column = (column_t *)(
(byte *)column + column-&length + 4 );
// F_BunnyScroll
void F_BunnyScroll (void)
patch_t* p1;
patch_t* p2;
char name[10];
static int
p1 = W_CacheLumpName (&PFUB2&, PU_LEVEL);
p2 = W_CacheLumpName (&PFUB1&, PU_LEVEL);
V_MarkRect (0, 0, SCREENWIDTH, SCREENHEIGHT);
scrolled = 320 - (finalecount-230)/2;
if (scrolled & 320)
scrolled = 320;
if (scrolled & 0)
scrolled = 0;
for ( x=0 ; x&SCREENWIDTH ; x++)
if (x+scrolled & 320)
F_DrawPatchCol (x, p1, x+scrolled);
F_DrawPatchCol (x, p2, x+scrolled - 320);
if (finalecount & 1130)
if (finalecount & 1180)
V_DrawPatch ((SCREENWIDTH-13*8)/2,
(SCREENHEIGHT-8*8)/2,0, W_CacheLumpName (&END0&,PU_CACHE));
laststage = 0;
stage = (finalecount-1180) / 5;
if (stage & 6)
stage = 6;
if (stage & laststage)
S_StartSound (NULL, sfx_pistol);
laststage =
sprintf (name,&END%i&,stage);
V_DrawPatch ((SCREENWIDTH-13*8)/2, (SCREENHEIGHT-8*8)/2,0, W_CacheLumpName (name,PU_CACHE));
// F_Drawer
void F_Drawer (void)
if (finalestage == 2)
F_CastDrawer ();
if (!finalestage)
F_TextWrite ();
switch (gameepisode)
if ( gamemode == retail )
V_DrawPatch (0,0,0,
W_CacheLumpName(&CREDIT&,PU_CACHE));
V_DrawPatch (0,0,0,
W_CacheLumpName(&HELP2&,PU_CACHE));
V_DrawPatch(0,0,0,
W_CacheLumpName(&VICTORY2&,PU_CACHE));
F_BunnyScroll ();
V_DrawPatch (0,0,0,
W_CacheLumpName(&ENDPIC&,PU_CACHE));
Copyright(C)
OKBASE.NET All Rights Reserved 好库网 版权所有|C|F|怎|么|刷|永|久|毁|灭|大|炮| | |_百度文库
格式 文档名称 用户评分 浏览量 下载量合作伙伴:
Copyright& 炎龙君临毁灭 版权所有
请使用者仔细阅读使用协议和版权声明
注:本站只接受官方授权游戏广告,非官方授权游戏请办理广告业务之前告知本站,请玩家仔细辨认游戏信息的真实性!

我要回帖

更多关于 福特f系列皮卡 的文章

 

随机推荐