package com.flansmod.common.driveables; import com.flansmod.common.guns.GunType; import com.flansmod.common.vector.Vector3f; public class Seat { /** The x, y and z positions of the seat within the plane in model co-ordinates * x is forwards, y is up and z is left */ public int x, y, z; /** The id of this seat */ public int id; /** Limits for the look vector of the seat. Range is -360 to 360. Thus any range should lie in here without having to wrap */ public float minYaw = -360F, maxYaw = 360F; /** Limits for the look vector of the seat. Range is -90 to 90, but don't go beyond +/-89 or the view will mess up at the poles */ public float minPitch = -89F, maxPitch = 89F; /** The gun this seat requires. As of 1.6.2, seats and planes will require specific guns as opposed to being completely open to anything */ public GunType gunType; /** The name of the gun model this seat is connected to. Gun model names are specified in the model files */ public String gunName; /** The part of the driveable this seat is connected to. */ public EnumDriveablePart part; /** Auto assigned by driveable type. Indicates what ammo slot the gun should take from */ public int gunnerID; /** For turret mounted seats on tanks, the seat will be positioned differently according to this offset and the yaw of the turret */ public Vector3f rotatedOffset = new Vector3f(); /** Yaw/Pitch rotation speeds (Yaw/Pitch/z) where Z is ignored*/ public Vector3f aimingSpeed = new Vector3f(1f, 1f, 0f); /** Where the bullets come from */ public Vector3f gunOrigin = new Vector3f(); /** Legacy aiming mode*/ public boolean legacyAiming = false; /** Traverse Yaw before pitching */ public boolean yawBeforePitch = false; /** Pitches gun at the last second */ public boolean latePitch = true; /**Does the turret have traverse sounds?*/ public boolean traverseSounds = false; public String yawSound; public int yawSoundLength; public String pitchSound; public int pitchSoundLength; /** Type file constructor. Line from type file should be of one of the following forms * Passenger ID x y z * Passenger ID x y z minYaw maxYaw minPitch maxPitch * Passenger ID x y z minYaw maxYaw minPitch maxPitch gunType.shortName gunName * */ public Seat(String[] split) { id = Integer.parseInt(split[1]); x = Integer.parseInt(split[2]); y = Integer.parseInt(split[3]); z = Integer.parseInt(split[4]); gunOrigin = new Vector3f(x, y, z); part = EnumDriveablePart.getPart(split[5]); if(split.length > 6) { minYaw = Float.parseFloat(split[6]); maxYaw = Float.parseFloat(split[7]); minPitch = Float.parseFloat(split[8]); maxPitch = Float.parseFloat(split[9]); if(split.length > 10) { gunType = GunType.getGun(split[10]); gunName = split[11]; } } } /** Type file driver seat constructor. Line from type file should be of one of the following forms * Driver x y z * Pilot x y z */ public Seat(int dx, int dy, int dz) { id = 0; x = dx; y = dy; z = dz; part = EnumDriveablePart.core; } /** Type file driver seat constructor with yaw and pitch limiters */ public Seat(int dx, int dy, int dz, float y1, float y2, float p1, float p2) { id = 0; x = dx; y = dy; z = dz; part = EnumDriveablePart.core; minYaw = y1; maxYaw = y2; minPitch = p1; maxPitch = p2; } }