/*
Copyright (C) 1997-2001 Id Software, Inc.
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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* Modifications
Copyright 2003-2004 Bytonic Software
Copyright 2010 Google Inc.
*/
package com.googlecode.gwtquake.shared.client;
import com.googlecode.gwtquake.shared.common.Constants;
import com.googlecode.gwtquake.shared.game.Model;
import com.googlecode.gwtquake.shared.game.UserCommand;
import com.googlecode.gwtquake.shared.render.Image;
import com.googlecode.gwtquake.shared.sound.*;
public class ClientState {
public ClientState() {
for (int n = 0; n < Constants.CMD_BACKUP; n++)
cmds[n] = new UserCommand();
for (int i = 0; i < frames.length; i++) {
frames[i] = new FrameData();
}
for (int n = 0; n < Constants.MAX_CONFIGSTRINGS; n++)
configstrings[n] = new String();
for (int n=0; n < Constants.MAX_CLIENTS; n++)
clientinfo[n] = new ClientInfo();
}
//
// the client_state_t structure is wiped completely at every
// server map change
//
int timeoutcount;
int timedemo_frames;
int timedemo_start;
public boolean refresh_prepped; // false if on new level or new ref dll
public boolean sound_prepped; // ambient sounds can start
boolean force_refdef; // vid has changed, so we can't use a paused refdef
int parse_entities; // index (not anded off) into cl_parse_entities[]
UserCommand cmd = new UserCommand();
UserCommand cmds[] = new UserCommand[Constants.CMD_BACKUP]; // each mesage will send several old cmds
int cmd_time[] = new int[Constants.CMD_BACKUP]; // time sent, for calculating pings
short predicted_origins[][] = new short[Constants.CMD_BACKUP][3]; // for debug comparing against server
float predicted_step; // for stair up smoothing
int predicted_step_time;
float[] predicted_origin ={0,0,0}; // generated by CL_PredictMovement
float[] predicted_angles={0,0,0};
float[] prediction_error={0,0,0};
public FrameData frame = new FrameData(); // received from server
int surpressCount; // number of messages rate supressed
FrameData frames[] = new FrameData[Constants.UPDATE_BACKUP];
// the client maintains its own idea of view angles, which are
// sent to the server each frame. It is cleared to 0 upon entering each level.
// the server sends a delta each frame which is added to the locally
// tracked view angles to account for standing on rotating objects,
// and teleport direction changes
public float[] viewangles = { 0, 0, 0 };
public int time; // this is the time value that the client
// is rendering at. always <= cls.realtime
float lerpfrac; // between oldframe and frame
RendererState refdef = new RendererState();
float[] v_forward = { 0, 0, 0 };
float[] v_right = { 0, 0, 0 };
float[] v_up = { 0, 0, 0 }; // set when refdef.angles is set
//
// transient data from server
//
String layout = ""; // general 2D overlay
int inventory[] = new int[Constants.MAX_ITEMS];
int cinematictime; // cls.realtime for first cinematic frame
int cinematicframe;
byte cinematicpalette[] = new byte[768];
boolean cinematicpalette_active;
//
// server state information
//
boolean attractloop; // running the attract loop, any key will menu
int servercount; // server identification for prespawns
String gamedir ="";
public int playernum;
public String configstrings[] = new String[Constants.MAX_CONFIGSTRINGS];
//
// locally derived information from server state
//
com.googlecode.gwtquake.shared.render.Model model_draw[] =
new com.googlecode.gwtquake.shared.render.Model[Constants.MAX_MODELS];
Model model_clip[] = new Model[Constants.MAX_MODELS];
public Sfx sound_precache[] = new Sfx[Constants.MAX_SOUNDS];
Image image_precache[] = new Image[Constants.MAX_IMAGES];
ClientInfo clientinfo[] = new ClientInfo[Constants.MAX_CLIENTS];
ClientInfo baseclientinfo = new ClientInfo();
}