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

📄 quakefile.java

📁 Jake2是一个Java 3D游戏引擎.
💻 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 24.07.2004 by RST.// $Id: QuakeFile.java,v 1.6 2005/11/20 22:18:34 salomo Exp $package jake2.util;import jake2.game.*;import jake2.qcommon.Com;import java.io.*;/** * RandomAccessFile, but handles readString/WriteString specially and offers * other helper functions */public class QuakeFile extends RandomAccessFile {    /** Standard Constructor. */    public QuakeFile(String filename, String mode) throws FileNotFoundException {        super(filename, mode);    }    /** Writes a Vector to a RandomAccessFile. */    public void writeVector(float v[]) throws IOException {        for (int n = 0; n < 3; n++)            writeFloat(v[n]);    }    /** Writes a Vector to a RandomAccessFile. */    public float[] readVector() throws IOException {        float res[] = { 0, 0, 0 };        for (int n = 0; n < 3; n++)            res[n] = readFloat();        return res;    }    /** Reads a length specified string from a file. */    public String readString() throws IOException {        int len = readInt();        if (len == -1)            return null;        if (len == 0)            return "";        byte bb[] = new byte[len];        super.read(bb, 0, len);        return new String(bb, 0, len);    }    /** Writes a length specified string to a file. */    public void writeString(String s) throws IOException {        if (s == null) {            writeInt(-1);            return;        }        writeInt(s.length());        if (s.length() != 0)            writeBytes(s);    }    /** Writes the edict reference. */    public void writeEdictRef(edict_t ent) throws IOException {        if (ent == null)            writeInt(-1);        else {            writeInt(ent.s.number);        }    }    /**     * Reads an edict index from a file and returns the edict.     */    public edict_t readEdictRef() throws IOException {        int i = readInt();        // handle -1        if (i < 0)            return null;        if (i > GameBase.g_edicts.length) {            Com.DPrintf("jake2: illegal edict num:" + i + "\n");            return null;        }        // valid edict.        return GameBase.g_edicts[i];    }    /** Writes the Adapter-ID to the file. */    public void writeAdapter(SuperAdapter a) throws IOException {        writeInt(3988);        if (a == null)            writeString(null);        else {            String str = a.getID();            if (a == null) {                Com.DPrintf("writeAdapter: invalid Adapter id for " + a + "\n");            }            writeString(str);        }    }    /** Reads the adapter id and returns the adapter. */    public SuperAdapter readAdapter() throws IOException {        if (readInt() != 3988)            Com.DPrintf("wrong read position: readadapter 3988 \n");        String id = readString();        if (id == null) {            // null adapter. :-)            return null;        }        return SuperAdapter.getFromID(id);    }    /** Writes an item reference. */    public void writeItem(gitem_t item) throws IOException {        if (item == null)            writeInt(-1);        else            writeInt(item.index);    }    /** Reads the item index and returns the game item. */    public gitem_t readItem() throws IOException {        int ndx = readInt();        if (ndx == -1)            return null;        else            return GameItemList.itemlist[ndx];    }}

⌨️ 快捷键说明

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