⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st_stuff.c

📁 The source code of Doom legacy for windows
💻 C
📖 第 1 页 / 共 4 页
字号:
// Emacs style mode select   -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: st_stuff.c,v 1.17 2001/04/01 17:35:07 bpereira Exp $//// Copyright (C) 1993-1996 by id Software, Inc.// Portions Copyright (C) 1998-2000 by DooM Legacy Team.//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; 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.  See the// GNU General Public License for more details.////// $Log: st_stuff.c,v $// Revision 1.17  2001/04/01 17:35:07  bpereira// no message//// Revision 1.16  2001/03/03 06:17:34  bpereira// no message//// Revision 1.15  2001/02/24 13:35:21  bpereira// no message//// Revision 1.14  2001/02/10 13:05:45  hurdler// no message//// Revision 1.13  2001/01/31 17:14:07  hurdler// Add cv_scalestatusbar in hardware mode//// Revision 1.12  2001/01/25 22:15:44  bpereira// added heretic support//// Revision 1.11  2000/11/02 19:49:37  bpereira// no message//// Revision 1.10  2000/10/04 16:34:51  hurdler// Change a little the presentation of monsters/secrets numbers//// Revision 1.9  2000/10/02 18:25:45  bpereira// no message//// Revision 1.8  2000/10/01 10:18:19  bpereira// no message//// Revision 1.7  2000/10/01 01:12:00  hurdler// Add number of monsters and secrets in overlay//// Revision 1.6  2000/09/28 20:57:18  bpereira// no message//// Revision 1.5  2000/09/25 19:28:15  hurdler// Enable Direct3D support as OpenGL//// Revision 1.4  2000/09/21 16:45:09  bpereira// no message//// Revision 1.3  2000/08/31 14:30:56  bpereira// no message//// Revision 1.2  2000/02/27 00:42:11  hurdler// fix CR+LF problem//// Revision 1.1.1.1  2000/02/22 20:32:33  hurdler// Initial import into CVS (v1.29 pr3)////// DESCRIPTION://      Status bar code.//      Does the face/direction indicator animatin.//      Does palette indicators as well (red pain/berserk, bright pickup)////-----------------------------------------------------------------------------#include "doomdef.h"#include "am_map.h"#include "g_game.h"#include "m_cheat.h"#include "screen.h"#include "r_local.h"#include "p_local.h"#include "p_inter.h"#include "m_random.h"#include "st_stuff.h"#include "st_lib.h"#include "i_video.h"#include "v_video.h"#include "keys.h"#include "z_zone.h"#include "hu_stuff.h"#ifdef HWRENDER#include "hardware/hw_drv.h"#include "hardware/hw_main.h"#endif//protosvoid ST_createWidgets(void);extern fixed_t waterheight;//// STATUS BAR DATA//// Palette indices.// For damage/bonus red-/gold-shifts#define STARTREDPALS            1#define STARTBONUSPALS          9#define NUMREDPALS              8#define NUMBONUSPALS            4// Radiation suit, green shift.#define RADIATIONPAL            13// N/256*100% probability//  that the normal face state will change#define ST_FACEPROBABILITY              96// For Responder#define ST_TOGGLECHAT           KEY_ENTER// Location of status bar  //added:08-01-98:status bar position changes according to resolution.#define ST_FX                     143// Should be set to patch width//  for tall numbers later on#define ST_TALLNUMWIDTH         (tallnum[0]->width)// Number of status faces.#define ST_NUMPAINFACES         5#define ST_NUMSTRAIGHTFACES     3#define ST_NUMTURNFACES         2#define ST_NUMSPECIALFACES      3#define ST_FACESTRIDE \          (ST_NUMSTRAIGHTFACES+ST_NUMTURNFACES+ST_NUMSPECIALFACES)#define ST_NUMEXTRAFACES        2#define ST_NUMFACES \          (ST_FACESTRIDE*ST_NUMPAINFACES+ST_NUMEXTRAFACES)#define ST_TURNOFFSET           (ST_NUMSTRAIGHTFACES)#define ST_OUCHOFFSET           (ST_TURNOFFSET + ST_NUMTURNFACES)#define ST_EVILGRINOFFSET       (ST_OUCHOFFSET + 1)#define ST_RAMPAGEOFFSET        (ST_EVILGRINOFFSET + 1)#define ST_GODFACE              (ST_NUMPAINFACES*ST_FACESTRIDE)#define ST_DEADFACE             (ST_GODFACE+1)#define ST_FACESX               143#define ST_FACESY               (ST_Y+0)#define ST_EVILGRINCOUNT        (2*TICRATE)#define ST_STRAIGHTFACECOUNT    (TICRATE/2)#define ST_TURNCOUNT            (1*TICRATE)#define ST_OUCHCOUNT            (1*TICRATE)#define ST_RAMPAGEDELAY         (2*TICRATE)#define ST_MUCHPAIN             20// Location and size of statistics,//  justified according to widget type.// Problem is, within which space? STbar? Screen?// Note: this could be read in by a lump.//       Problem is, is the stuff rendered//       into a buffer,//       or into the frame buffer?// AMMO number pos.#define ST_AMMOWIDTH            3#define ST_AMMOX                44#define ST_AMMOY                (ST_Y+3)// HEALTH number pos.#define ST_HEALTHWIDTH          3#define ST_HEALTHX              90#define ST_HEALTHY              (ST_Y+3)// Weapon pos.#define ST_ARMSX                111#define ST_ARMSY                (ST_Y+4)#define ST_ARMSBGX              104#define ST_ARMSBGY              (ST_Y)#define ST_ARMSXSPACE           12#define ST_ARMSYSPACE           10// Frags pos.#define ST_FRAGSX               138#define ST_FRAGSY               (ST_Y+3)#define ST_FRAGSWIDTH           2// ARMOR number pos.#define ST_ARMORWIDTH           3#define ST_ARMORX               221#define ST_ARMORY               (ST_Y+3)// Key icon positions.#define ST_KEY0WIDTH            8#define ST_KEY0HEIGHT           5#define ST_KEY0X                239#define ST_KEY0Y                (ST_Y+3)#define ST_KEY1WIDTH            ST_KEY0WIDTH#define ST_KEY1X                239#define ST_KEY1Y                (ST_Y+13)#define ST_KEY2WIDTH            ST_KEY0WIDTH#define ST_KEY2X                239#define ST_KEY2Y                (ST_Y+23)// Ammunition counter.#define ST_AMMO0WIDTH           3#define ST_AMMO0HEIGHT          6#define ST_AMMO0X               288#define ST_AMMO0Y               (ST_Y+5)#define ST_AMMO1WIDTH           ST_AMMO0WIDTH#define ST_AMMO1X               288#define ST_AMMO1Y               (ST_Y+11)#define ST_AMMO2WIDTH           ST_AMMO0WIDTH#define ST_AMMO2X               288#define ST_AMMO2Y               (ST_Y+23)#define ST_AMMO3WIDTH           ST_AMMO0WIDTH#define ST_AMMO3X               288#define ST_AMMO3Y               (ST_Y+17)// Indicate maximum ammunition.// Only needed because backpack exists.#define ST_MAXAMMO0WIDTH        3#define ST_MAXAMMO0HEIGHT       5#define ST_MAXAMMO0X            314#define ST_MAXAMMO0Y            (ST_Y+5)#define ST_MAXAMMO1WIDTH        ST_MAXAMMO0WIDTH#define ST_MAXAMMO1X            314#define ST_MAXAMMO1Y            (ST_Y+11)#define ST_MAXAMMO2WIDTH        ST_MAXAMMO0WIDTH#define ST_MAXAMMO2X            314#define ST_MAXAMMO2Y            (ST_Y+23)#define ST_MAXAMMO3WIDTH        ST_MAXAMMO0WIDTH#define ST_MAXAMMO3X            314#define ST_MAXAMMO3Y            (ST_Y+17)//faB: unused stuff from the Doom alpha version ?// pistol//#define ST_WEAPON0X           110//#define ST_WEAPON0Y           (ST_Y+4)// shotgun//#define ST_WEAPON1X           122//#define ST_WEAPON1Y           (ST_Y+4)// chain gun//#define ST_WEAPON2X           134//#define ST_WEAPON2Y           (ST_Y+4)// missile launcher//#define ST_WEAPON3X           110//#define ST_WEAPON3Y           (ST_Y+13)// plasma gun//#define ST_WEAPON4X           122//#define ST_WEAPON4Y           (ST_Y+13)// bfg//#define ST_WEAPON5X           134//#define ST_WEAPON5Y           (ST_Y+13)// WPNS title//#define ST_WPNSX              109//#define ST_WPNSY              (ST_Y+23) // DETH title//#define ST_DETHX              109//#define ST_DETHY              (ST_Y+23)//Incoming messages window location// #define ST_MSGTEXTX     (viewwindowx)// #define ST_MSGTEXTY     (viewwindowy+viewheight-18)//#define ST_MSGTEXTX             0//#define ST_MSGTEXTY             0     //added:08-01-98:unused// Dimensions given in characters.#define ST_MSGWIDTH             52// Or shall I say, in lines?#define ST_MSGHEIGHT            1#define ST_OUTTEXTX             0#define ST_OUTTEXTY             6// Width, in characters again.#define ST_OUTWIDTH             52 // Height, in lines.#define ST_OUTHEIGHT            1#define ST_MAPWIDTH     \    (strlen(mapnames[(gameepisode-1)*9+(gamemap-1)]))//added:24-01-98:unused ?//#define ST_MAPTITLEX  (vid.width - ST_MAPWIDTH * ST_CHATFONTWIDTH)#define ST_MAPTITLEY            0#define ST_MAPHEIGHT            1//added:02-02-98: set true if widgets coords need to be recalculatedboolean     st_recalc;// main player in gamestatic player_t*        plyr;// ST_Start() has just been calledboolean          st_firsttime;// used to execute ST_Init() only oncestatic int              veryfirsttime = 1;// used for timingstatic unsigned int     st_clock;// used for making messages go awaystatic int              st_msgcounter=0;// used when in chatstatic st_chatstateenum_t       st_chatstate;// whether left-side main status bar is activeboolean          st_statusbaron;// whether status bar chat is activestatic boolean          st_chat;// value of st_chat before message popped upstatic boolean          st_oldchat;// whether chat window has the cursor onstatic boolean          st_cursoron;// !deathmatchstatic boolean          st_notdeathmatch;// !deathmatch && st_statusbaronstatic boolean          st_armson;// !deathmatchstatic boolean          st_fragson;// main bar leftstatic patch_t*         sbar;// 0-9, tall numbersstatic patch_t*         tallnum[10];// tall % signstatic patch_t*         tallpercent;// 0-9, short, yellow (,different!) numbersstatic patch_t*         shortnum[10];// 3 key-cards, 3 skullsstatic patch_t*         keys[NUMCARDS];// face status patchesstatic patch_t*         faces[ST_NUMFACES];// face backgroundstatic patch_t*         faceback; // main bar rightstatic patch_t*         armsbg;// weapon ownership patchesstatic patch_t*         arms[6][2];// ready-weapon widgetstatic st_number_t      w_ready; // in deathmatch only, summary of frags statsstatic st_number_t      w_frags;// health widgetstatic st_percent_t     w_health;// arms backgroundstatic st_binicon_t     w_armsbg;// weapon ownership widgetsstatic st_multicon_t    w_arms[6];// face status widgetstatic st_multicon_t    w_faces;// keycard widgetsstatic st_multicon_t    w_keyboxes[3];// armor widgetstatic st_percent_t     w_armor;// ammo widgetsstatic st_number_t      w_ammo[4];// max ammo widgetsstatic st_number_t      w_maxammo[4]; // number of frags so far in deathmatchstatic int      st_fragscount;// used to use appopriately pained facestatic int      st_oldhealth = -1;// used for evil grinstatic boolean  oldweaponsowned[NUMWEAPONS]; // count until face changesstatic int      st_facecount = 0;// current face index, used by w_facesstatic int      st_faceindex = 0;// holds key-type for each key box on barstatic int      keyboxes[3];// a random number per tick

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -