Class HexenThing

java.lang.Object
net.mtrop.doom.map.data.HexenThing
All Implemented Interfaces:
BinaryObject

public class HexenThing extends Object implements BinaryObject
Hexen 20-byte format implementation of Thing.
Author:
Matthew Tropiano
  • Field Details

    • LENGTH

      public static final int LENGTH
      Byte length of this object.
      See Also:
    • id

      protected int id
      Thing ID.
    • height

      protected int height
      Thing Z position relative to sector plane.
    • special

      protected int special
      Thing action special.
    • arguments

      protected int[] arguments
      Thing action special arguments.
    • x

      protected int x
      Thing X position.
    • y

      protected int y
      Thing Y position.
    • angle

      protected int angle
      Thing angle.
    • type

      protected int type
      Thing type (editor number).
    • flags

      protected int flags
      Behavior bitflags.
  • Constructor Details

    • HexenThing

      public HexenThing()
      Creates a new thing.
  • Method Details

    • getHeight

      public int getHeight()
      Returns:
      the Z position relative to sector plane.
      Since:
      2.9.0, for naming clarity/uniformity.
    • setHeight

      public void setHeight(int height)
      Sets the Z position relative to sector plane.
      Parameters:
      height - the new height.
      Throws:
      IllegalArgumentException - if z is not between -32768 and 32767.
      Since:
      2.9.0, for naming clarity/uniformity.
    • getId

      public int getId()
      Returns:
      the thing's id (for tagged specials).
    • setId

      public void setId(int id)
      Sets the thing's id.
      Parameters:
      id - the new id.
      Throws:
      IllegalArgumentException - if id is not between 0 and 65535.
    • getSpecial

      public int getSpecial()
      Returns:
      the special action for this thing.
    • setSpecial

      public void setSpecial(int special)
      Sets the special action for this thing.
      Parameters:
      special - the thing special to call on activation.
      Throws:
      IllegalArgumentException - if special is outside the range 0 to 255.
    • getArguments

      public int[] getArguments()
      Gets the special arguments copied into a new array.
      Returns:
      gets the array of special arguments.
    • getArgument

      public int getArgument(int n)
      Gets a special argument.
      Parameters:
      n - the argument index (up to 4)
      Returns:
      the argument value.
      Throws:
      ArrayIndexOutOfBoundsException - if n is less than 0 or greater than 4.
    • setArguments

      public void setArguments(int... arguments)
      Sets the special arguments.
      Parameters:
      arguments - the argument values to set.
      Throws:
      IllegalArgumentException - if length of arguments is greater than 5, or any argument is less than 0 or greater than 255.
    • readBytes

      public void readBytes(InputStream in) throws IOException
      Description copied from interface: BinaryObject
      Reads from an InputStream and sets this object's fields. Only reads the amount of bytes that it takes to read a single instance of the object. Note that not every object may have a consistent length!
      Specified by:
      readBytes in interface BinaryObject
      Parameters:
      in - the InputStream to read from.
      Throws:
      IOException - if a read error occurs.
    • writeBytes

      public void writeBytes(OutputStream out) throws IOException
      Description copied from interface: BinaryObject
      Writes this object to an OutputStream.
      Specified by:
      writeBytes in interface BinaryObject
      Parameters:
      out - the OutputStream to write to.
      Throws:
      IOException - if a write error occurs.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • set

      public void set(int x, int y)
      Sets the coordinates of this thing.
      Parameters:
      x - the x-coordinate value.
      y - the y-coordinate value.
    • getX

      public int getX()
      Returns:
      the position X-coordinate.
    • setX

      public void setX(int x)
      Sets the position X-coordinate.
      Parameters:
      x - the new x-coordinate.
      Throws:
      IllegalArgumentException - if x is outside of the range -32768 to 32767.
    • getY

      public int getY()
      Returns:
      the position Y-coordinate.
    • setY

      public void setY(int y)
      Sets the position Y-coordinate.
      Parameters:
      y - the new y-coordinate.
      Throws:
      IllegalArgumentException - if y is outside of the range -32768 to 32767.
    • getAngle

      public int getAngle()
      Returns:
      the angle (in degrees).
    • setAngle

      public void setAngle(int angle)
      Sets the angle (in degrees).
      Parameters:
      angle - the new angle in degrees.
      Throws:
      IllegalArgumentException - if angle is outside of the range -32768 to 32767.
    • getType

      public int getType()
      Returns:
      thing type (a.k.a. editor number).
    • setType

      public void setType(int type)
      Sets thing type (a.k.a. editor number).
      Parameters:
      type - the new thing type.
      Throws:
      IllegalArgumentException - if type is outside of the range 0 to 65535.
    • getFlags

      public int getFlags()
      Returns:
      this linedef's full bitflags.
    • setFlags

      public void setFlags(int flags)
      Sets/replaces this linedef's full bitflags.
      Parameters:
      flags - the flags to set
    • isFlagSet

      public boolean isFlagSet(int flagType)
      Check's if a flag bit is set.
      Parameters:
      flagType - the flag type (constant).
      Returns:
      true if set, false if not.
      See Also:
    • setFlag

      public void setFlag(int flagType, boolean set)
      Sets/clears a bit flag.
      Parameters:
      flagType - the flag type (constant).
      set - if true, set the bit. If false, clear it.
      See Also: