package com.technofovea.hllib.enums; import com.technofovea.hllib.JnaEnum; /** * This is trickier than our normal enums because there seems to be overlap: * Multiple enums will resolve to the same integer. Weird! Thankfully nothing * ever returns these numbers from the library, so we do not need to deal with * finding the correct enum that matches zero. * @author Darien Hager */ public enum PackageAttribute implements JnaEnum<PackageAttribute> { BSP_PACKAGE_VERSION(true), //=0 BSP_PACKAGE_COUNT, BSP_ITEM_WIDTH(true), //=0 BSP_ITEM_HEIGHT, BSP_ITEM_PALETTE_ENTRIES, BSP_ITEM_COUNT, GCF_PACKAGE_VERSION(true), //=0 GCF_PACKAGE_ID, GCF_PACKAGE_ALLOCATED_BLOCKS, GCF_PACKAGE_USED_BLOCKS, GCF_PACKAGE_BLOCK_LENGTH, GCF_PACKAGE_LAST_VERSION_PLAYED, GCF_PACKAGE_COUNT, GCF_ITEM_ENCRYPTED(true), //=0 GCF_ITEM_COPY_LOCAL, GCF_ITEM_OVERWRITE_LOCAL, GCF_ITEM_BACKUP_LOCAL, GCF_ITEM_FLAGS, GCF_ITEM_FRAGMENTATION, GCF_ITEM_COUNT, NCF_PACKAGE_VERSION(true), //=0 NCF_PACKAGE_ID, NCF_PACKAGE_LAST_VERSION_PLAYED, NCF_PACKAGE_COUNT, NCF_ITEM_ENCRYPTED(true), //=0 NCF_ITEM_COPY_LOCAL, NCF_ITEM_OVERWRITE_LOCAL, NCF_ITEM_BACKUP_LOCAL, NCF_ITEM_FLAGS, NCF_ITEM_COUNT, PAK_PACKAGE_COUNT(true), //=0 PAK_ITEM_COUNT(true), //=0 VBSP_PACKAGE_VERSION(true), //=0 VBSP_PACKAGE_MAP_REVISION, VBSP_PACKAGE_COUNT, VBSP_ITEM_VERSION(true), //=0 VBSP_ITEM_FOUR_CC, VBSP_ZIP_PACKAGE_DISK, VBSP_ZIP_PACKAGE_COMMENT, VBSP_ZIP_ITEM_CREATE_VERSION, VBSP_ZIP_ITEM_EXTRACT_VERSION, VBSP_ZIP_ITEM_FLAGS, VBSP_ZIP_ITEM_COMPRESSION_METHOD, VBSP_ZIP_ITEM_CRC, VBSP_ZIP_ITEM_DISK, VBSP_ZIP_ITEM_COMMENT, VBSP_ITEM_COUNT, VPK_PACKAGE_ARCHIVES(true), //=0 VPK_PACKAGE_VERSION, VPK_PACKAGE_COUNT, VPK_ITEM_PRELOAD_BYTES(true), //=0 VPK_ITEM_ARCHIVE, VPK_ITEM_CRC, VPK_ITEM_COUNT, WAD_PACKAGE_VERSION(true), //=0 WAD_PACKAGE_COUNT, WAD_ITEM_WIDTH(true), //=0 WAD_ITEM_HEIGHT, WAD_ITEM_PALETTE_ENTRIES, WAD_ITEM_MIPMAPS, WAD_ITEM_COMPRESSED, WAD_ITEM_TYPE, WAD_ITEM_COUNT, XZP_PACKAGE_VERSION(true), //=0 XZP_PACKAGE_PRELOAD_BYTES, XZP_PACKAGE_COUNT, XZP_ITEM_CREATED(true), //=0 XZP_ITEM_PRELOAD_BYTES, XZP_ITEM_COUNT, ZIP_PACKAGE_DISK(true), //=0 ZIP_PACKAGE_COMMENT, ZIP_PACKAGE_COUNT, ZIP_ITEM_CREATE_VERSION(true), //=0 ZIP_ITEM_EXTRACT_VERSION, ZIP_ITEM_FLAGS, ZIP_ITEM_COMPRESSION_METHOD, ZIP_ITEM_CRC, ZIP_ITEM_DISK, ZIP_ITEM_COMMENT, ZIP_ITEM_COUNT; static{ // Responsible for setting number values int counter = 0; for(PackageAttribute p : PackageAttribute.values()){ if(p.resetToZero){ counter = 0; } p.value = counter; counter++; } } private int value = 0; // Set by static block private boolean resetToZero = false; // If this enum resets the counter private PackageAttribute() { resetToZero = false; } private PackageAttribute(boolean resetCounter){ resetToZero = resetCounter; } public int getIntValue() { return value; } public PackageAttribute getForValue(int i) { throw new UnsupportedOperationException("These enum choices have collisions when converted from integer values."); } }