Package skyproc

Source Code of skyproc.PROJ$DATA

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package skyproc;

import java.io.IOException;
import java.util.ArrayList;
import java.util.zip.DataFormatException;
import lev.LImport;
import lev.LOutFile;
import lev.LFlags;
import skyproc.exceptions.BadParameter;
import skyproc.exceptions.BadRecord;

/**
*
* @author Justin Swanson
*/
public class PROJ extends MajorRecordNamed {

    // Static prototypes and definitions
    static final SubPrototype PROJprototype = new SubPrototype(MajorRecordNamed.namedProto) {

  @Override
  protected void addRecords() {
      add(new SubData("OBND", new byte[12]));
      reposition("FULL");
      add(new Model());
      add(new DestructionData());
      add(new DATA());
      add(SubString.getNew("NAM1", true));
      add(new SubData("NAM2"));
      add(new SubData("VNAM")); // SoundVolume
  }
    };
    static class DATA extends SubRecord {

  LFlags flags = new LFlags(2);
  LFlags projType = new LFlags(2);
  float gravity = 0;
  float speed = 0;
  float range = 0;   //1
  FormID light = new FormID();
  FormID muzzleLight = new FormID();
  float tracerChance = 0;
  float proximity = 0// 2
  float timer = 0;
  FormID explosionType = new FormID();
  FormID sound = new FormID();
  float muzzleFlashDuration = 0//3
  float fadeDuration = 0;
  float impactForce = 0;
  FormID explosionSound = new FormID();
  FormID disableSound = new FormID()//4
  FormID defaultWeaponSource = new FormID();
  float coneSpread = 0;
  float collisionRadius = 0;
  float lifetime = 0; //5
  float relaunchInterval = 0;
  FormID decalData = new FormID();
  byte[] collisionLayer = new byte[4];

  DATA() {
      super();
  }

  @Override
  ArrayList<FormID> allFormIDs() {
      ArrayList<FormID> out = new ArrayList<>();
      out.add(light);
      out.add(muzzleLight);
      out.add(explosionType);
      out.add(sound);
      out.add(explosionSound);
      out.add(disableSound);
      out.add(defaultWeaponSource);
      out.add(decalData);
      return out;
  }

  @Override
  void export(ModExporter out) throws IOException {
      super.export(out);
      out.write(flags.export(), 2);
      out.write(projType.export(), 2);
      out.write(gravity);
      out.write(speed);
      out.write(range);
      light.export(out);
      muzzleLight.export(out);
      out.write(tracerChance);
      out.write(proximity);
      out.write(timer);
      explosionType.export(out);
      sound.export(out);
      out.write(muzzleFlashDuration);
      out.write(fadeDuration);
      out.write(impactForce);
      explosionSound.export(out);
      disableSound.export(out);
      defaultWeaponSource.export(out);
      out.write(coneSpread);
      out.write(collisionRadius);
      out.write(lifetime);
      out.write(relaunchInterval);
      decalData.export(out);
      out.write(collisionLayer);
  }

  @Override
  void parseData(LImport in, Mod srcMod) throws BadRecord, BadParameter, DataFormatException {
      super.parseData(in, srcMod);
      flags.set(in.extract(2));
      projType.set(in.extract(2));
      gravity = in.extractFloat();
      speed = in.extractFloat();
      range = in.extractFloat();   //16
      light.parseData(in, srcMod);
      muzzleLight.parseData(in, srcMod);
      tracerChance = in.extractFloat();
      proximity = in.extractFloat()//32
      timer = in.extractFloat();
      explosionType.parseData(in, srcMod);
      sound.parseData(in, srcMod);
      muzzleFlashDuration = in.extractFloat()//48
      fadeDuration = in.extractFloat();
      impactForce = in.extractFloat();
      explosionSound.parseData(in, srcMod);
      disableSound.parseData(in, srcMod)//64
      defaultWeaponSource.parseData(in, srcMod);
      coneSpread = in.extractFloat();
      collisionRadius = in.extractFloat();
      lifetime = in.extractFloat(); // 80
      relaunchInterval = in.extractFloat();
      if (!in.isDone()) {
    decalData.parseData(in, srcMod);
      }
      if (!in.isDone()) {
    collisionLayer = in.extract(4)// 92
      }
  }

  @Override
  SubRecord getNew(String type) {
      return new DATA();
  }

  @Override
  int getContentLength(ModExporter out) {
      return 92;
  }

  @Override
  ArrayList<String> getTypes() {
      return Record.getTypeList("DATA");
  }
    }

    // Enums

    /**
     *
     */
    public enum ProjectileFlag {

  /**
   *
   */
  Explosion(1),
  /**
   *
   */
  AltTrigger(2),
  /**
   *
   */
  MuzzleFlash(3),
  /**
   *
   */
  CanBeDisabled(5),
  /**
   *
   */
  CanBePickedUp(6),
  /**
   *
   */
  SuperSonic(7),
  /**
   *
   */
  CritPinsLimbs(8),
  /**
   *
   */
  PassThroughSmallTransparent(9),
  /**
   *
   */
  DisableCombatAimCorrection(10);
  int value;

  ProjectileFlag(int val) {
      value = val;
  }
    }

    /**
     *
     */
    public enum ProjectileType {

  /**
   *
   */
  Missile, //1
  /**
   *
   */
  Lobber, //2
  /**
   *
   */
  Beam, //4
  /**
   *
   */
  Flame, //8
  /**
   *
   */
  Cone, //10
  /**
   *
   */
  Barrier, //20
  /**
   *
   */
  Arrow; //40

  static ProjectileType get(int value) {
      switch (value) {
    case 1:
        return Missile;
    case 2:
        return Lobber;
    case 4:
        return Beam;
    case 8:
        return Flame;
    case 16:
        return Cone;
    case 32:
        return Barrier;
    default:
        return Arrow;
      }
  }
    }

    // Common Functions
    PROJ() {
  super();
  subRecords.setPrototype(PROJprototype);
    }

    @Override
    ArrayList<String> getTypes() {
  return Record.getTypeList("PROJ");
    }

    @Override
    Record getNew() {
  return new PROJ();
    }

    //Get/Set
    /**
     * @deprecated use getModelData()
     * @param path
     */
    public void setModel(String path) {
  subRecords.getModel().setFileName(path);
    }

    /**
     * @deprecated use getModelData()
     * @return
     */
    public String getModel() {
  return subRecords.getModel().getFileName();
    }

    /**
     *
     * @param filename
     */
    public void setEffectModel(String filename) {
  subRecords.setSubString("NAM1", filename);
    }

    /**
     *
     * @return
     */
    public String getEffectModel() {
  return subRecords.getSubString("NAM1").print();
    }

    DATA getDATA() {
  return (DATA) subRecords.get("DATA");
    }

    /**
     *
     * @param flag
     * @param on
     */
    public void set(ProjectileFlag flag, boolean on) {
  getDATA().flags.set(flag.value, on);
    }

    /**
     *
     * @param flag
     * @return
     */
    public boolean get(ProjectileFlag flag) {
  return getDATA().flags.get(flag.value);
    }

    /**
     *
     * @param t
     */
    public void setProjType(ProjectileType t) {
  LFlags flags = getDATA().projType;
  flags.clear();
  flags.set(t.ordinal(), true);
    }

    /**
     *
     * @return
     */
    public ProjectileType getProjType() {
  return ProjectileType.values()[getDATA().projType.getFirstTrue()];
    }

    /**
     *
     * @param gravity
     */
    public void setGravity(float gravity) {
  getDATA().gravity = gravity;
    }

    /**
     *
     * @return
     */
    public float getGravity() {
  return getDATA().gravity;
    }

    /**
     *
     * @param speed
     */
    public void setSpeed(float speed) {
  getDATA().speed = speed;
    }

    /**
     *
     * @return
     */
    public float getSpeed() {
  return getDATA().speed;
    }

    /**
     *
     * @param range
     */
    public void setRange(float range) {
  getDATA().range = range;
    }

    /**
     *
     * @return
     */
    public float getRange() {
  return getDATA().range;
    }

    /**
     *
     * @param light
     */
    public void setLight(FormID light) {
  getDATA().light = light;
    }

    /**
     *
     * @return
     */
    public FormID getLight() {
  return getDATA().light;
    }

    /**
     *
     * @param light
     */
    public void setMuzzleLight(FormID light) {
  getDATA().muzzleLight = light;
    }

    /**
     *
     * @return
     */
    public FormID getMuzzleLight() {
  return getDATA().muzzleLight;
    }

    /**
     *
     * @param chance
     */
    public void setTracerChance(float chance) {
  getDATA().tracerChance = chance;
    }

    /**
     *
     * @return
     */
    public float getTracerChance() {
  return getDATA().tracerChance;
    }

    /**
     *
     * @param proximity
     */
    public void setProximity(float proximity) {
  getDATA().proximity = proximity;
    }

    /**
     *
     * @return
     */
    public float getProximity() {
  return getDATA().proximity;
    }

    /**
     *
     * @param timer
     */
    public void setTimer(float timer) {
  getDATA().timer = timer;
    }

    /**
     *
     * @return
     */
    public float getTimer() {
  return getDATA().timer;
    }

    /**
     *
     * @param explType
     */
    public void setExplosionType(FormID explType) {
  getDATA().explosionType = explType;
    }

    /**
     *
     * @return
     */
    public FormID getExplosionType() {
  return getDATA().explosionType;
    }

    /**
     *
     * @param sound
     */
    public void setSound(FormID sound) {
  getDATA().sound = sound;
    }

    /**
     *
     * @return
     */
    public FormID getSound() {
  return getDATA().sound;
    }

    /**
     *
     * @param duration
     */
    public void setMuzzleFlashDuration(float duration) {
  getDATA().muzzleFlashDuration = duration;
    }

    /**
     *
     * @return
     */
    public float getMuzzleFlashDuration() {
  return getDATA().muzzleFlashDuration;
    }

    /**
     *
     * @param duration
     */
    public void setFadeDuration(float duration) {
  getDATA().fadeDuration = duration;
    }

    /**
     *
     * @return
     */
    public float getFadeDuration() {
  return getDATA().fadeDuration;
    }

    /**
     *
     * @param force
     */
    public void setImpactForce(float force) {
  getDATA().impactForce = force;
    }

    /**
     *
     * @return
     */
    public float getImpactForce() {
  return getDATA().impactForce;
    }

    /**
     *
     * @param sound
     */
    public void setExplosionSound(FormID sound) {
  getDATA().explosionSound = sound;
    }

    /**
     *
     * @return
     */
    public FormID getExplosionSound() {
  return getDATA().explosionSound;
    }

    /**
     *
     * @param sound
     */
    public void setDisableSound(FormID sound) {
  getDATA().disableSound = sound;
    }

    /**
     *
     * @return
     */
    public FormID getDisableSound() {
  return getDATA().disableSound;
    }

    /**
     *
     * @param weaponSource
     */
    public void setDefaultWeaponSource(FormID weaponSource) {
  getDATA().defaultWeaponSource = weaponSource;
    }

    /**
     *
     * @return
     */
    public FormID getDefaultWeaponSource() {
  return getDATA().defaultWeaponSource;
    }

    /**
     *
     * @param spread
     */
    public void setConeSpread(float spread) {
  getDATA().coneSpread = spread;
    }

    /**
     *
     * @return
     */
    public float getConeSpread() {
  return getDATA().coneSpread;
    }

    /**
     *
     * @param radius
     */
    public void setCollisionRadius(float radius) {
  getDATA().collisionRadius = radius;
    }

    /**
     *
     * @return
     */
    public float getCollisionRadius() {
  return getDATA().collisionRadius;
    }

    /**
     *
     * @param lifetime
     */
    public void setLifetime(float lifetime) {
  getDATA().lifetime = lifetime;
    }

    /**
     *
     * @return
     */
    public float getLifetime() {
  return getDATA().lifetime;
    }

    /**
     *
     * @param interval
     */
    public void setRelaunchInterval(float interval) {
  getDATA().relaunchInterval = interval;
    }

    /**
     *
     * @return
     */
    public float getRelaunchInterval() {
  return getDATA().relaunchInterval;
    }

    /**
     *
     * @param decal
     */
    public void setDecalData(FormID decal) {
  getDATA().decalData = decal;
    }

    /**
     *
     * @return
     */
    public FormID getDecalData() {
  return getDATA().decalData;
    }
   
    /**
     *
     * @return
     */
    public Model getModelData() {
  return subRecords.getModel();
    }
}
TOP

Related Classes of skyproc.PROJ$DATA

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.