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

📄 bg.java

📁 liu7788414
💻 JAVA
字号:
package staticdata;



/**
 * <p>Title: Reader.java</p>
 * <p>Description: read and convert xml file</p>
 * <p>Copyright: Gameloft 2004</p>
 * <p>Company: Gameloft Shanghai</p>
 * @author Yi Wen Hu
 * @version 1.0
 */

import org.w3c.dom.*;

import java.util.Vector;
import java.io.*;


public class Bg {
  private int m_id;
  private int m_modelid;
  private int m_floorid;
  private int m_skyboxid;
  private String m_Name;
  private int m_Audience;
  private int m_Furniture;
  private String m_GrabTexture;

  public static final String XML_BG_ID = "ID";
  public static final String XML_BG_MODEL = "Model";
  public static final String XML_BG_NAME = "Name";
  public static final String XML_BG_FLOORMODEL = "FloorModel";
  public static final String XML_BG_LIGHTS = "Lights";
  public static final String XML_BG_AUDIENCE="Audience";
  public static final String XML_BG_FURNITURE="Furniture";

  public static final String XML_BG_GRABTEX="GrabTex";

  class LightItem
  {
    public LightItem() {};
    short x, y, z;
    short size;
  };

  LightItem [][] m_Light;
  String []m_lighttex;

  public Bg(Element e) {
    m_id = Integer.valueOf(e.getAttribute(XML_BG_ID)).intValue();
    m_modelid = Integer.valueOf(e.getAttribute(XML_BG_MODEL)).intValue();
    m_floorid = Integer.valueOf(e.getAttribute(XML_BG_FLOORMODEL)).intValue();
    m_skyboxid = Integer.valueOf(e.getAttribute("skybox")).intValue();
    m_Name = e.getAttribute(XML_BG_NAME);


    m_Audience=Integer.valueOf(e.getAttribute(XML_BG_AUDIENCE)).intValue();
    m_Furniture=Integer.valueOf(e.getAttribute(XML_BG_FURNITURE)).intValue();
    m_GrabTexture=e.getAttribute(XML_BG_GRABTEX);

    //read lights
    NodeList lights, items;
    Element lt, lt1;
    lights = e.getElementsByTagName(XML_BG_LIGHTS);
    m_Light = new LightItem[lights.getLength()][];
    m_lighttex = new String[lights.getLength()];
    for (int i=0; i<lights.getLength(); i++)
    {
      lt = (Element)lights.item(i);
      m_lighttex[i] = lt.getAttribute("TexFile");
      int count;
      items = lt.getElementsByTagName("Light");
      count = items.getLength();
      m_Light[i] =  new LightItem[count];
      for (int j=0; j<count; j++)
      {
        lt1 = (Element)items.item(j);
        m_Light[i][j] = new LightItem();
        m_Light[i][j].x = (short)Integer.valueOf(lt1.getAttribute("x")).intValue();
        m_Light[i][j].y = (short)Integer.valueOf(lt1.getAttribute("y")).intValue();
        m_Light[i][j].z = (short)Integer.valueOf(lt1.getAttribute("z")).intValue();
        m_Light[i][j].size = (short)Integer.valueOf(lt1.getAttribute("size")).intValue();
      }
    }

  }


  public void save(FileOutputStream fos) {
    byte[] data;
    try {
      //output name
      Reader.WriteString(m_Name, fos);
      Reader.WriteString(m_GrabTexture,fos);

      // MODELS
      fos.write((byte)m_modelid);
      fos.write((byte)m_floorid);
      fos.write((byte)m_skyboxid);
      fos.write((byte)m_Audience);
      fos.write((byte)m_Furniture);

      //light type count
      fos.write((byte)m_lighttex.length);

      int count = 0;
      for (int i=0; i<m_lighttex.length; i++)
      {
        count += m_Light[i].length;
      }
      //light count
      fos.write((byte)count);


      //light texture name
      for (int i=0; i<m_lighttex.length; i++)
      {
        //light tex name
        Reader.WriteString(m_lighttex[i], fos);
        fos.write((byte)m_Light[i].length);
        //per light data
        for (int j = 0; j < m_Light[i].length; j++) {
          Reader.WriteShort(m_Light[i][j].x, fos);
          Reader.WriteShort(m_Light[i][j].y, fos);
          Reader.WriteShort(m_Light[i][j].z, fos);
          Reader.WriteShort(m_Light[i][j].size, fos);
        }
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }

  public void test() {
    System.out.print("BG:");
    System.out.print("m_id=" + m_id);
    System.out.print(",m_modelid=" + m_modelid);
    System.out.println(",m_floorid=" + m_floorid);
    System.out.println(",lighttypecount=" + m_lighttex.length);

  }

}

⌨️ 快捷键说明

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