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

📄 gclient_t.java

📁 Jake2是一个Java 3D游戏引擎.
💻 JAVA
字号:
/*Copyright (C) 1997-2001 Id Software, Inc.This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/// Created on 31.10.2003 by RST.// $Id: gclient_t.java,v 1.7 2006/01/21 21:53:32 salomo Exp $package jake2.game;import jake2.qcommon.Com;import jake2.util.Lib;import jake2.util.QuakeFile;import java.awt.event.ItemListener;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;public class gclient_t{	public gclient_t(int index)	{		this.index = index;	}	//	this structure is cleared on each PutClientInServer(),	//	except for 'client->pers'	// known to server	public player_state_t ps = new player_state_t(); // communicated by server to clients	public int ping;	// private to game	public client_persistant_t pers = new client_persistant_t();	public client_respawn_t resp = new client_respawn_t();	public pmove_state_t old_pmove = new pmove_state_t(); // for detecting out-of-pmove changes	public boolean showscores; // set layout stat	public boolean showinventory; // set layout stat	public boolean showhelp;	public boolean showhelpicon;	public int ammo_index;	public int buttons;	public int oldbuttons;	public int latched_buttons;	public boolean weapon_thunk;	public gitem_t newweapon;	// sum up damage over an entire frame, so	// shotgun blasts give a single big kick	public int damage_armor; // damage absorbed by armor	public int damage_parmor; // damage absorbed by power armor	public int damage_blood; // damage taken out of health	public int damage_knockback; // impact damage	public float[] damage_from = { 0, 0, 0 }; // origin for vector calculation	public float killer_yaw; // when dead, look at killer	public int weaponstate;	public float[] kick_angles = { 0, 0, 0 }; // weapon kicks	public float[] kick_origin = { 0, 0, 0 };	public float v_dmg_roll, v_dmg_pitch, v_dmg_time; // damage kicks	public float fall_time, fall_value; // for view drop on fall	public float damage_alpha;	public float bonus_alpha;	public float[] damage_blend = { 0, 0, 0 };	public float[] v_angle = { 0, 0, 0 }; // aiming direction	public float bobtime; // so off-ground doesn't change it	public float[] oldviewangles = { 0, 0, 0 };	public float[] oldvelocity = { 0, 0, 0 };	public float next_drown_time;	public int old_waterlevel;	public int breather_sound;	public int machinegun_shots; // for weapon raising	// animation vars	public int anim_end;	public int anim_priority;	public boolean anim_duck;	public boolean anim_run;	// powerup timers	public float quad_framenum;	public float invincible_framenum;	public float breather_framenum;	public float enviro_framenum;	public boolean grenade_blew_up;	public float grenade_time;	public int silencer_shots;	public int weapon_sound;	public float pickup_msg_time;	public float flood_locktill; // locked from talking	public float flood_when[] = new float[10]; // when messages were said	public int flood_whenhead; // head pointer for when said	public float respawn_time; // can respawn when time > this	public edict_t chase_target; // player we are chasing	public boolean update_chase; // need to update chase info?	public int index;	/** Clears the game client structure. */	public void clear()	{		ping =0;			pers = new client_persistant_t();		resp = new client_respawn_t();		old_pmove = new pmove_state_t();				showscores = false; // set layout stat		showinventory = false; // set layout stat		showhelp = false;		showhelpicon = false;		ammo_index = 0;				buttons = oldbuttons = latched_buttons = 0;		weapon_thunk = false;		newweapon = null;		damage_armor = 0;		damage_parmor = 0;		damage_blood = 0;		damage_knockback = 0;				killer_yaw = 0;		damage_from = new float[3];		weaponstate = 0;		kick_angles = new float[3];		kick_origin = new float[3];		v_dmg_roll = v_dmg_pitch = v_dmg_time = 0;		fall_time = fall_value = 0;		damage_alpha = 0;		bonus_alpha = 0;		damage_blend = new float[3];		v_angle = new float[3];		bobtime = 0;		oldviewangles = new float[3];		oldvelocity = new float[3];		next_drown_time = 0;		old_waterlevel = 0;				breather_sound = 0;		machinegun_shots = 0;				anim_end = 0;		anim_priority = 0;		anim_duck = false;		anim_run = false;				// powerup timers		quad_framenum = 0;		invincible_framenum = 0;		breather_framenum = 0;		enviro_framenum = 0;		grenade_blew_up = false;		grenade_time = 0;		silencer_shots = 0;		weapon_sound = 0;		pickup_msg_time = 0;		flood_locktill = 0; // locked from talking		flood_when  = new float[10]; // when messages were said		flood_whenhead = 0; // head pointer for when said		respawn_time = 0; // can respawn when time > this		chase_target = null; // player we are chasing		update_chase = false; // need to update chase info?	}	/** Reads a game client from the file. */	public void read(QuakeFile f) throws IOException	{		ps.load(f);		ping = f.readInt();		pers.read(f);		resp.read(f);		old_pmove.load(f);		showscores = f.readInt() != 0;		showinventory = f.readInt() != 0;		showhelp = f.readInt() != 0;		showhelpicon = f.readInt() != 0;		ammo_index = f.readInt();		buttons = f.readInt();		oldbuttons = f.readInt();		latched_buttons = f.readInt();		weapon_thunk=f.readInt()!=0;				newweapon=f.readItem();				damage_armor = f.readInt();		damage_parmor = f.readInt();		damage_blood = f.readInt();		damage_knockback = f.readInt();		damage_from[0] = f.readFloat();		damage_from[1] = f.readFloat();		damage_from[2] = f.readFloat();		killer_yaw = f.readFloat();		weaponstate = f.readInt();		kick_angles[0] = f.readFloat();		kick_angles[1] = f.readFloat();		kick_angles[2] = f.readFloat();		kick_origin[0] = f.readFloat();		kick_origin[1] = f.readFloat();		kick_origin[2] = f.readFloat();		v_dmg_roll = f.readFloat();		v_dmg_pitch = f.readFloat();		v_dmg_time = f.readFloat();		fall_time = f.readFloat();		fall_value = f.readFloat();		damage_alpha = f.readFloat();		bonus_alpha = f.readFloat();		damage_blend[0] = f.readFloat();		damage_blend[1] = f.readFloat();		damage_blend[2] = f.readFloat();		v_angle[0] = f.readFloat();		v_angle[1] = f.readFloat();		v_angle[2] = f.readFloat();		bobtime = f.readFloat();		oldviewangles[0] = f.readFloat();		oldviewangles[1] = f.readFloat();		oldviewangles[2] = f.readFloat();		oldvelocity[0] = f.readFloat();		oldvelocity[1] = f.readFloat();		oldvelocity[2] = f.readFloat();		next_drown_time = f.readFloat();		old_waterlevel = f.readInt();		breather_sound = f.readInt();		machinegun_shots = f.readInt();		anim_end = f.readInt();		anim_priority = f.readInt();		anim_duck = f.readInt() != 0;		anim_run = f.readInt() != 0;		quad_framenum = f.readFloat();		invincible_framenum = f.readFloat();		breather_framenum = f.readFloat();		enviro_framenum = f.readFloat();		grenade_blew_up = f.readInt() != 0;		grenade_time = f.readFloat();		silencer_shots = f.readInt();		weapon_sound = f.readInt();		pickup_msg_time = f.readFloat();		flood_locktill = f.readFloat();		flood_when[0] = f.readFloat();		flood_when[1] = f.readFloat();		flood_when[2] = f.readFloat();		flood_when[3] = f.readFloat();		flood_when[4] = f.readFloat();		flood_when[5] = f.readFloat();		flood_when[6] = f.readFloat();		flood_when[7] = f.readFloat();		flood_when[8] = f.readFloat();		flood_when[9] = f.readFloat();		flood_whenhead = f.readInt();		respawn_time = f.readFloat();		chase_target = f.readEdictRef();		update_chase = f.readInt() != 0;				if (f.readInt() != 8765)			System.err.println("game client load failed for num=" + index);	}		/** Writes a game_client_t (a player) to a file. */ 	public void write(QuakeFile f) throws IOException	{		ps.write(f);		f.writeInt(ping);		pers.write(f);		resp.write(f);		old_pmove.write(f);		f.writeInt(showscores?1:0);		f.writeInt(showinventory?1:0);		f.writeInt(showhelp?1:0);		f.writeInt(showhelpicon?1:0);		f.writeInt(ammo_index);		f.writeInt(buttons);		f.writeInt(oldbuttons);		f.writeInt(latched_buttons);		f.writeInt(weapon_thunk?1:0);		f.writeItem(newweapon);				f.writeInt(damage_armor);		f.writeInt(damage_parmor);		f.writeInt(damage_blood);		f.writeInt(damage_knockback);		f.writeFloat(damage_from[0]);		f.writeFloat(damage_from[1]);		f.writeFloat(damage_from[2]);		f.writeFloat(killer_yaw);		f.writeInt(weaponstate);		f.writeFloat(kick_angles[0]);		f.writeFloat(kick_angles[1]);		f.writeFloat(kick_angles[2]);		f.writeFloat(kick_origin[0]);		f.writeFloat(kick_origin[1]);		f.writeFloat(kick_origin[2]);		f.writeFloat(v_dmg_roll);		f.writeFloat(v_dmg_pitch);		f.writeFloat(v_dmg_time);		f.writeFloat(fall_time);		f.writeFloat(fall_value);		f.writeFloat(damage_alpha);		f.writeFloat(bonus_alpha);		f.writeFloat(damage_blend[0]);		f.writeFloat(damage_blend[1]);		f.writeFloat(damage_blend[2]);		f.writeFloat(v_angle[0]);		f.writeFloat(v_angle[1]);		f.writeFloat(v_angle[2]);		f.writeFloat(bobtime);		f.writeFloat(oldviewangles[0]);		f.writeFloat(oldviewangles[1]);		f.writeFloat(oldviewangles[2]);		f.writeFloat(oldvelocity[0]);		f.writeFloat(oldvelocity[1]);		f.writeFloat(oldvelocity[2]);		f.writeFloat(next_drown_time);		f.writeInt(old_waterlevel);		f.writeInt(breather_sound);		f.writeInt(machinegun_shots);		f.writeInt(anim_end);		f.writeInt(anim_priority);		f.writeInt(anim_duck?1:0);		f.writeInt(anim_run?1:0);		f.writeFloat(quad_framenum);		f.writeFloat(invincible_framenum);		f.writeFloat(breather_framenum);		f.writeFloat(enviro_framenum);		f.writeInt(grenade_blew_up?1:0);		f.writeFloat(grenade_time);		f.writeInt(silencer_shots);		f.writeInt(weapon_sound);		f.writeFloat(pickup_msg_time);		f.writeFloat(flood_locktill);		f.writeFloat(flood_when[0]);		f.writeFloat(flood_when[1]);		f.writeFloat(flood_when[2]);		f.writeFloat(flood_when[3]);		f.writeFloat(flood_when[4]);		f.writeFloat(flood_when[5]);		f.writeFloat(flood_when[6]);		f.writeFloat(flood_when[7]);		f.writeFloat(flood_when[8]);		f.writeFloat(flood_when[9]);		f.writeInt(flood_whenhead);		f.writeFloat(respawn_time);		f.writeEdictRef(chase_target);		f.writeInt(update_chase?1:0);				f.writeInt(8765);	}}

⌨️ 快捷键说明

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