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

📄 player.h

📁 this keik game source
💻 H
📖 第 1 页 / 共 2 页
字号:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/player.h                         $
// $Revision:: 119                                                            $
//   $Author:: Jimdose                                                        $
//     $Date:: 11/16/98 8:26p                                                 $
//
// Copyright (C) 1997 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/player.h                              $
// 
// 119   11/16/98 8:26p Jimdose
// Added CheckWater
// 
// 118   11/14/98 2:53a Aldie
// Added InitSkin for keeping the skin intact for savegames
// 
// 117   11/13/98 2:35a Aldie
// Changed variable name
// 
// 116   11/08/98 10:53p Jimdose
// some variables weren't being archived.  They were benign, but it helps
// ensure that we don't miss important variables
// 
// 115   11/07/98 10:15p Markd
// Added forcemusic support
// 
// 114   11/07/98 8:01p Markd
// Added in damage_since_pain, fixed some camera stuff
// 
// 113   11/06/98 9:38p Aldie
// Moved waitforplayer stuff to think function
// 
// 112   10/25/98 11:57p Jimdose
// exported EV_Player_Respawn
// 
// 111   10/24/98 5:44p Markd
// Added killent, removent, killclass removeclass and added parameters to
// whatis
// 
// 110   10/21/98 5:29p Aldie
// Added a setskin command
// 
// 109   10/16/98 1:59a Jimdose
// Added EV_Player_EndLevel and EndLevel
// Made third person view work with savegames
// 
// 108   10/14/98 1:36a Jimdose
// Got cross-level persitant data working
// 
// 107   10/12/98 8:45p Jimdose
// Rewrote init function
// started adding persistant functions
// 
// 106   10/11/98 8:58p Aldie
// Changed Restore to Human
// 
// 105   10/11/98 7:41p Aldie
// Mutate and restore commands for Richard
// 
// 104   10/10/98 9:59p Aldie
// Added trappedinquantum flag to archiver
// 
// 103   10/10/98 5:58p Aldie
// More quantumdestab fixes
// 
// 102   10/09/98 9:01p Aldie
// Moved GiveOxygen to player
// 
// 101   10/07/98 11:54p Jimdose
// Added old_pmove to Player
// Added SetDeltaAngles
// Moved PlayerFrozen to game
// 
// 100   10/02/98 7:20p Aldie
// Added flashcolor
// 
// 99    9/30/98 5:39p Aldie
// Added showinfo command
// 
// 98    9/29/98 5:06p Aldie
// Relocated gravity node functions
// 
// 97    9/26/98 4:46p Aldie
// Added mutant mode
// 
// 96    9/22/98 3:27p Markd
// Took out old variable
// 
// 95    9/22/98 12:49p Markd
// Put in archive and unarchive functions
// 
// 94    9/21/98 1:35a Aldie
// Moved some vars to sentient
// 
// 93    9/19/98 4:47p Markd
// fixed music stuff and added actionincrement to weapons
// 
// 92    9/18/98 10:57p Jimdose
// Added spawnactor and actorinfo
// 
// 91    9/17/98 1:48p Markd
// Fixed swimmin animations
// 
// 90    9/16/98 8:58p Aldie
// Added ability to do a hold down weapon charge
// 
// 89    9/11/98 2:50p Aldie
// Added release firing functionality
// 
// 88    9/10/98 8:53p Markd
// put in proper falling and landing animation thresholds.
// 
// 87    9/09/98 5:06p Markd
// Added savefov and restorefov, also added fov change when teleporting
// 
// 86    8/31/98 7:16p Markd
// Fixed player animation naming convention
// 
// 85    8/31/98 5:45p Aldie
// Powerup timer stuff
// 
// 84    8/30/98 7:29p Markd
// Put in auto-dead camera where after 10 seconds, player will follow the
// endnode1 path
// 
// 83    8/29/98 9:53p Jimdose
// moved enums and #defines from g_local.h
// 
// 82    8/29/98 5:27p Markd
// added specialfx, replaced misc with specialfx where appropriate
// 
// 81    8/28/98 7:54p Markd
// Added TauntTime
// 
// 80    8/27/98 4:50p Markd
// Added fallsurface
// 
// 79    8/25/98 7:52p Markd
// Added crosshair to player again
// 
// 78    8/25/98 4:11p Markd
// Added taunt support
// 
// 77    8/17/98 8:59p Jimdose
// Added WhatIs
// 
// 76    8/17/98 6:20p Markd
// Changed SetCamera to a Player method
// 
// 75    8/17/98 3:07p Aldie
// Added the weaponuse command
// 
// 74    8/12/98 6:04p Aldie
// Added a shield timer
// 
// 73    8/07/98 6:01p Aldie
// Added frag credits for falling damage
// 
// 72    7/31/98 8:10p Jimdose
// Script commands now include flags to indicate cheats and console commands
// Cheat function removed since events have cheat flags
// 
// 71    7/31/98 4:20p Jimdose
// Added GiveHealthCheat
// 
// 70    7/26/98 12:35p Jimdose
// Added GiveAllCheat
// 
// 69    7/26/98 4:12a Aldie
// Updated getVehicle
// 
// 68    7/25/98 5:21p Markd
// Added GotKill to player
// 
// 67    7/24/98 7:37p Aldie
// Changed hud event
// 
// 66    7/23/98 9:56p Aldie
// Added hud event
// 
// 65    7/23/98 12:31p Markd
// Added onladder variable
// 
// 64    7/22/98 10:20p Markd
// Added AnimPrefixForWeapon
// 
// 63    7/21/98 9:07p Markd
// Added UpdateMusic
// 
// 62    7/21/98 1:10p Aldie
// Added meansofdeath to obituaries
// 
// 61    7/20/98 12:09p Markd
// Added vehicleanim support
// 
// 60    7/17/98 4:04p Markd
// Added useWeapon
// 
// 59    7/14/98 9:54p Markd
// Fixed camera stuff
// 
// 58    7/13/98 5:02p Aldie
// Added dead player bodies with gibbing
// 
// 57    7/11/98 8:58p Markd
// Added testthread command
// 
// 56    7/10/98 11:18p Jimdose
// Removed third-person crosshair
// 
// 55    7/08/98 3:12p Aldie
// First try at spectator mode
// 
// 54    7/07/98 8:06p Aldie
// Spectator and dead stuff
// 
// 53    7/02/98 2:34p Aldie
// Mission computer
// 
// 52    6/24/98 1:39p Aldie
// Implementation of inventory system and picking stuff up
// 
// 51    6/22/98 2:04p Jimdose
// Added vehicles back in
// Organized the control code a bit more.  May want to make physics into a
// class
// 
// 50    6/19/98 6:39p Aldie
// More inventory stuff
// 
// 49    6/18/98 9:26p Aldie
// Started inventory system
// 
// 48    6/15/98 10:48p Jimdose
// Added AddPathNode
// 
// 47    6/13/98 8:20p Jimdose
// removed optimize path stuff
// 
// 46    6/10/98 2:10p Aldie
// Updated damage function.
// 
// 45    6/03/98 4:39p Markd
// removed parameters from SetCameraEntity stuff
// 
// 44    5/27/98 7:03a Markd
// added action_level
// 
// 43    5/26/98 7:56p Jimdose
// added scripted cameras
// 
// 42    5/26/98 4:46p Aldie
// Added take (object) from player
// 
// 41    5/26/98 4:38a Jimdose
// Added tracking crosshair
// 
// 40    5/25/98 6:47p Jimdose
// Made animateframe, prethink and posthink into functions built into the base
// entity class
// 
// 39    5/24/98 8:46p Jimdose
// Made a lot of functions more str-friendly.
// Got rid of a lot of char * based strings
// Cleaned up get spawn arg functions and sound functions
// sound functions now use consistant syntax
// 
// 38    5/13/98 4:49p Jimdose
// Now use SafePtrs for keeping track of nodes and cameras
// 
// 37    5/05/98 2:41p Jimdose
// New interface for controlling the clients view
// moved a lot of variables from gclient_t to be internal to player
// 
// 36    5/03/98 4:37p Jimdose
// Added camera
// 
// 35    5/01/98 6:16p Jimdose
// Made Respawn an event so that Trigger_Hurt wouldn't rekill a player after
// respawn
// 
// 34    4/27/98 5:27p Jimdose
// Working on ai
// 
// 33    4/21/98 2:25p Aldie
// Added enterconsole and exitconsole events.
// 
// 32    4/20/98 2:45p Jimdose
// working on ai
// 
// 31    4/18/98 3:02p Jimdose
// Removed nodebeam
// 
// 30    4/16/98 2:10p Jimdose
// Working on ai.
// Removed TESTPATH stuff
// 
// 29    4/09/98 8:44p Jimdose
// Added view blend effects
// added drowing
// 
// 28    4/07/98 3:49p Aldie
// Added zooming crosshair
// 
// 27    4/06/98 7:10p Aldie
// Added zooming for SniperRifle
// 
// 26    4/05/98 2:58a Jimdose
// added respawn_time
// 
// 25    4/04/98 6:13p Jimdose
// Added events for syncing firing to animation
// 
// 24    4/02/98 4:46p Jimdose
// Added Obituary, Pain, and ShowScores
// 
// 23    3/31/98 1:44p Jimdose
// Removed footstep stuff
// 
// 22    3/29/98 9:42p Jimdose
// Moved animation stuff to sentient
// 
// 21    3/29/98 5:57p Jimdose
// Added SpawnEntity command
// 
// 20    3/28/98 4:36p Jimdose
// Added kill event
// 
// 19    3/27/98 9:59p Jimdose
// Changed CalcRoll to return a float
// 
// 18    3/27/98 6:36p Jimdose
// Added third person view
// 
// 17    3/26/98 8:16p Jimdose
// Added animation control functions
// Added respawn and init functions for deathmatch
// 
// 16    3/23/98 1:33p Jimdose
// Revamped event and command system
// 
// 15    3/18/98 7:21p Jimdose
// Added CalcGunOffset
// 
// 14    3/03/98 6:03p Aldie
// First pass at footsteps.
// 
// 13    3/02/98 8:49p Jimdose
// Changed CLASS_PROTOTYPE to only take the classname
// 
// 12    2/21/98 1:22p Jimdose
// Removed A LOT of unused varables and code.
// 
// 11    2/19/98 2:36p Jimdose
// Added weapons back in
// 
// 10    2/17/98 8:35p Jimdose
// Removed useHeld
// 
// 9     2/06/98 5:44p Jimdose
// replaced use of think and touch functions with events
// move client to Entity
// 
// 8     2/03/98 10:59a Jimdose
// Updated to work with Quake 2 engine
// Moved initialization to constructor and removed Init function
// This will probably be rewritten to be simpler.  This first rewrite sucks.
// 
// 6     12/05/97 4:08p Aldie
// Added event to player for giving weapons.
// 
// 5     11/12/97 5:12p Jimdose
// Added event definitions
// 
// 4     10/27/97 2:59p Jimdose
// Removed dependency on quakedef.h
// 
// 3     10/08/97 6:03p Jimdose
// Began vehicle support.
// 
// 2     9/26/97 6:47p Jimdose
// Added standard Ritual headers
//
// DESCRIPTION:
// Class definition of the player.
// 

#ifndef __PLAYER_H__
#define __PLAYER_H__

#include "g_local.h"
#include "vector.h"
#include "entity.h"
#include "weapon.h"
#include "sentient.h"
#include "navigate.h"
#include "misc.h"
#include "bspline.h"
#include "camera.h"
#include "vehicle.h"
#include "specialfx.h"

extern Event EV_Player_EndLevel;
extern Event EV_Player_PrevWeapon;
extern Event EV_Player_NextWeapon;
extern Event EV_Player_GiveCheat;
extern Event EV_Player_GodCheat;
extern Event EV_Player_NoTargetCheat;
extern Event EV_Player_NoClipCheat;
extern Event EV_Player_GameVersion;
extern Event EV_Player_Fov;
extern Event EV_Player_SaveFov;
extern Event EV_Player_RestoreFov;
extern Event EV_Player_ZoomOut;
extern Event EV_Player_ToggleZoomMode;
extern Event EV_Player_ClearFloatingInventory;
extern Event EV_Player_WhatIs;
extern Event EV_Player_DrawOverlay;
extern Event EV_Player_HideOverlay;
extern Event EV_Player_DrawStats;
extern Event EV_Player_HideStats;
extern Event EV_Player_SetFlashColor;
extern Event EV_Player_ClearFlashColor;
extern Event EV_Player_Respawn;

typedef enum
   {
	ZOOMED_OUT,
   ZOOMED_IN
	} zoom_mode_t;

typedef enum
	{
	FIRST_PERSON,
	THIRD_PERSON,
	SPECTATOR,
	CAMERA_VIEW
	} viewmode_t;

// view pitching times
#define	DAMAGE_TIME				0.5
#define	FALL_TIME				0.3
#define  ENEMY_TIME           5.0

class EXPORT_FROM_DLL Player : public Sentient
	{
	private:
      pmove_state_t		old_pmove;		// for detecting out-of-pmove changes

		// bobbing
		float					xyspeed;
		float					bobtime;
		float					bobmove;
		int					bobcycle;		// odd cycles are right foot going forward
		float					bobfracsin;		// sin(bobfrac*M_PI)

		Vector				oldvelocity;

		// weapon kicks
		Vector				kick_angles;
		Vector				kick_origin;

		// damage kicks
		float					v_dmg_roll;
		float					v_dmg_pitch;
		float					v_dmg_time;

		// for view drop on fall
		float					fall_time;
		float					fall_value;

		// blend //FIXME move to entity?
		float					blend[ 4 ];		// rgba full screen effect
		float					fov;				// horizontal field of view 
		float					savedfov;			// saved horizontal field of view for teleports

		// view weapon orientation
		Vector				v_gunoffset;
		Vector				v_gunangles;

		friend class		Camera;
		friend class		Vehicle;

      // vehicle stuff
		VehiclePtr			vehicle;
      str               vehicleanim;

		// aiming direction
		Vector				v_angle;
		Vector				v_kick;
		Vector				oldviewangles;
		Vector				v_offset;

		int					buttons;
		int					new_buttons;
		viewmode_t			viewmode;
		viewmode_t			defaultViewMode;
      zoom_mode_t       zoom_mode;
		float					respawn_time;

		qboolean				firing; 
      qboolean          in_console;
      qboolean          has_thought;

⌨️ 快捷键说明

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