162 lines
4.3 KiB
Java
162 lines
4.3 KiB
Java
/*
|
|
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.
|
|
|
|
*/
|
|
|
|
// Created on 20.11.2003 by RST
|
|
// $Id: level_locals_t.java,v 1.2 2004/08/20 21:29:57 salomo Exp $
|
|
|
|
package jake2.game;
|
|
|
|
import jake2.util.Lib;
|
|
import jake2.util.QuakeFile;
|
|
|
|
import java.io.IOException;
|
|
import java.io.RandomAccessFile;
|
|
|
|
public class level_locals_t
|
|
{
|
|
|
|
// this structure is cleared as each map is entered
|
|
// it is read/written to the level.sav file for savegames
|
|
//
|
|
public int framenum;
|
|
public float time;
|
|
|
|
public String level_name= ""; // the descriptive name (Outer Base, etc)
|
|
public String mapname= ""; // the server name (base1, etc)
|
|
public String nextmap= ""; // go here when fraglimit is hit
|
|
|
|
// intermission state
|
|
public float intermissiontime; // time the intermission was started
|
|
public String changemap;
|
|
public boolean exitintermission;
|
|
public float[] intermission_origin= { 0, 0, 0 };
|
|
public float[] intermission_angle= { 0, 0, 0 };
|
|
|
|
public edict_t sight_client; // changed once each frame for coop games
|
|
|
|
public edict_t sight_entity;
|
|
public int sight_entity_framenum;
|
|
|
|
public edict_t sound_entity;
|
|
public int sound_entity_framenum;
|
|
|
|
public edict_t sound2_entity;
|
|
public int sound2_entity_framenum;
|
|
|
|
public int pic_health;
|
|
|
|
public int total_secrets;
|
|
public int found_secrets;
|
|
|
|
public int total_goals;
|
|
public int found_goals;
|
|
|
|
public int total_monsters;
|
|
public int killed_monsters;
|
|
|
|
public edict_t current_entity; // entity running from G_RunFrame
|
|
public int body_que; // dead bodies
|
|
|
|
public int power_cubes; // ugly necessity for coop
|
|
|
|
/** Writes the levellocales to the file.*/
|
|
public void write(QuakeFile f) throws IOException
|
|
{
|
|
f.writeInt(framenum);
|
|
f.writeFloat(time);
|
|
f.writeString(level_name);
|
|
f.writeString(mapname);
|
|
f.writeString(nextmap);
|
|
f.writeFloat(intermissiontime);
|
|
f.writeString(changemap);
|
|
f.writeBoolean(exitintermission);
|
|
f.writeVector(intermission_origin);
|
|
f.writeVector(intermission_angle);
|
|
f.writeEdictRef(sight_client);
|
|
|
|
f.writeEdictRef(sight_entity);
|
|
f.writeInt(sight_entity_framenum);
|
|
|
|
f.writeEdictRef(sound_entity);
|
|
f.writeInt(sound_entity_framenum);
|
|
f.writeEdictRef(sound2_entity);
|
|
f.writeInt(sound2_entity_framenum);
|
|
|
|
f.writeInt(pic_health);
|
|
|
|
f.writeInt(total_secrets);
|
|
f.writeInt(found_secrets);
|
|
|
|
f.writeInt(total_goals);
|
|
f.writeInt(found_goals);
|
|
f.writeInt(total_monsters);
|
|
f.writeInt(killed_monsters);
|
|
|
|
f.writeEdictRef(current_entity);
|
|
f.writeInt(body_que); // dead bodies
|
|
f.writeInt(power_cubes); // ugly necessity for coop
|
|
|
|
// rst's checker :-)
|
|
f.writeInt(4711);
|
|
}
|
|
|
|
/** Reads the level locals from the file. */
|
|
public void read(QuakeFile f) throws IOException
|
|
{
|
|
framenum = f.readInt();
|
|
time = f.readFloat();
|
|
level_name = f.readString();
|
|
mapname = f.readString();
|
|
nextmap = f.readString();
|
|
intermissiontime = f.readFloat();
|
|
changemap = f.readString();
|
|
exitintermission = f.readBoolean();
|
|
intermission_origin = f.readVector();
|
|
intermission_angle = f.readVector();
|
|
sight_client = f.readEdictRef();
|
|
|
|
sight_entity = f.readEdictRef();
|
|
sight_entity_framenum = f.readInt();
|
|
|
|
sound_entity = f.readEdictRef();
|
|
sound_entity_framenum = f.readInt();
|
|
sound2_entity = f.readEdictRef();
|
|
sound2_entity_framenum = f.readInt();
|
|
|
|
pic_health = f.readInt();
|
|
|
|
total_secrets = f.readInt();
|
|
found_secrets = f.readInt();
|
|
|
|
total_goals = f.readInt();
|
|
found_goals = f.readInt();
|
|
total_monsters = f.readInt();
|
|
killed_monsters = f.readInt();
|
|
|
|
current_entity = f.readEdictRef();
|
|
body_que = f.readInt(); // dead bodies
|
|
power_cubes = f.readInt(); // ugly necessity for coop
|
|
|
|
// rst's checker :-)
|
|
if (f.readInt()!= 4711)
|
|
System.out.println("error in reading level_locals.");
|
|
}
|
|
}
|