mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-06-28 11:58:03 +00:00
feat: T5 weapon dumping & loading (#792)
* Update docs. * Add weapon constants. * Register asset dumper. * Add fields and strings for weapon parsing. * Add gdt and raw weapon loader. * Add weapon dumper. * Clang format. * Update T5 strings. * Fix forgotten rename. * Clang format. * fix: add missing t5 weapon fields * chore: properly sort,format and check size of t5 weapon enum strings * chore: remove unused functions * chore: add t5 weapon checks and defaults * format enum strings * chore: make FlameTable struct use pascal case name * feat: dump and load flametable * fix: make loaded weapons match vanilla data --------- Co-authored-by: njohnson <gitea.nicholasjohnson.info> Co-authored-by: Jan Laupetin <jan@laupetin.net>
This commit is contained in:
@@ -3242,7 +3242,7 @@ namespace T4
|
||||
int clientOnly;
|
||||
};
|
||||
|
||||
struct flameTable
|
||||
struct FlameTable
|
||||
{
|
||||
float flameVar_streamChunkGravityStart;
|
||||
float flameVar_streamChunkGravityEnd;
|
||||
@@ -3788,8 +3788,8 @@ namespace T4
|
||||
float hipDofEnd;
|
||||
const char* flameTableFirstPerson;
|
||||
const char* flameTableThirdPerson;
|
||||
flameTable* flameTableFirstPersonPtr;
|
||||
flameTable* flameTableThirdPersonPtr;
|
||||
FlameTable* flameTableFirstPersonPtr;
|
||||
FlameTable* flameTableThirdPersonPtr;
|
||||
FxEffectDef* tagFx_preparationEffect;
|
||||
FxEffectDef* tagFlash_preparationEffect;
|
||||
};
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace
|
||||
"vertexdecl",
|
||||
"vertexshader",
|
||||
"pixelshader",
|
||||
"flametable",
|
||||
};
|
||||
static_assert(std::extent_v<decltype(SUB_ASSET_TYPE_NAMES)> == SUB_ASSET_TYPE_COUNT);
|
||||
} // namespace
|
||||
|
||||
@@ -66,6 +66,7 @@ namespace T5
|
||||
SUB_ASSET_TYPE_VERTEX_DECL,
|
||||
SUB_ASSET_TYPE_VERTEX_SHADER,
|
||||
SUB_ASSET_TYPE_PIXEL_SHADER,
|
||||
SUB_ASSET_TYPE_FLAME_TABLE,
|
||||
|
||||
SUB_ASSET_TYPE_COUNT
|
||||
};
|
||||
@@ -212,6 +213,7 @@ namespace T5
|
||||
using SubAssetVertexDecl = SubAsset<SUB_ASSET_TYPE_VERTEX_DECL, MaterialVertexDeclaration>;
|
||||
using SubAssetVertexShader = SubAsset<SUB_ASSET_TYPE_VERTEX_SHADER, MaterialVertexShader>;
|
||||
using SubAssetPixelShader = SubAsset<SUB_ASSET_TYPE_PIXEL_SHADER, MaterialPixelShader>;
|
||||
using SubAssetFlameTable = SubAsset<SUB_ASSET_TYPE_FLAME_TABLE, FlameTable>;
|
||||
} // namespace T5
|
||||
|
||||
DEFINE_ASSET_NAME_ACCESSOR(T5::AssetPhysPreset, name);
|
||||
|
||||
@@ -3778,7 +3778,8 @@ namespace T5
|
||||
WEAPON_ICON_RATIO_1TO1 = 0x0,
|
||||
WEAPON_ICON_RATIO_2TO1 = 0x1,
|
||||
WEAPON_ICON_RATIO_4TO1 = 0x2,
|
||||
WEAPON_ICON_RATIO_COUNT = 0x3,
|
||||
|
||||
WEAPON_ICON_RATIO_NUM,
|
||||
};
|
||||
|
||||
enum weapType_t
|
||||
@@ -3791,7 +3792,8 @@ namespace T5
|
||||
WEAPTYPE_BOMB = 0x5,
|
||||
WEAPTYPE_MINE = 0x6,
|
||||
WEAPTYPE_MELEE = 0x7,
|
||||
WEAPTYPE_NUM = 0x8,
|
||||
|
||||
WEAPTYPE_NUM,
|
||||
};
|
||||
|
||||
enum weapClass_t
|
||||
@@ -3809,7 +3811,8 @@ namespace T5
|
||||
WEAPCLASS_ITEM = 0xA,
|
||||
WEAPCLASS_MELEE = 0xB,
|
||||
WEAPCLASS_KILLSTREAK_ALT_STORED_WEAPON = 0xC,
|
||||
WEAPCLASS_NUM = 0xD,
|
||||
|
||||
WEAPCLASS_NUM,
|
||||
};
|
||||
|
||||
enum PenetrateType
|
||||
@@ -3818,7 +3821,8 @@ namespace T5
|
||||
PENETRATE_TYPE_SMALL = 0x1,
|
||||
PENETRATE_TYPE_MEDIUM = 0x2,
|
||||
PENETRATE_TYPE_LARGE = 0x3,
|
||||
PENETRATE_TYPE_COUNT = 0x4,
|
||||
|
||||
PENETRATE_TYPE_NUM,
|
||||
};
|
||||
|
||||
enum ImpactType
|
||||
@@ -3839,7 +3843,8 @@ namespace T5
|
||||
IMPACT_TYPE_TANK_SHELL = 0xD,
|
||||
IMPACT_TYPE_BOLT = 0xE,
|
||||
IMPACT_TYPE_BLADE = 0xF,
|
||||
IMPACT_TYPE_COUNT = 0x10,
|
||||
|
||||
IMPACT_TYPE_NUM,
|
||||
};
|
||||
|
||||
enum weapInventoryType_t
|
||||
@@ -3849,7 +3854,8 @@ namespace T5
|
||||
WEAPINVENTORY_ITEM = 0x2,
|
||||
WEAPINVENTORY_ALTMODE = 0x3,
|
||||
WEAPINVENTORY_MELEE = 0x4,
|
||||
WEAPINVENTORYCOUNT = 0x5,
|
||||
|
||||
WEAPINVENTORY_NUM,
|
||||
};
|
||||
|
||||
enum weapFireType_t
|
||||
@@ -3861,7 +3867,8 @@ namespace T5
|
||||
WEAPON_FIRETYPE_BURSTFIRE4 = 0x4,
|
||||
WEAPON_FIRETYPE_STACKED = 0x5,
|
||||
WEAPON_FIRETYPE_MINIGUN = 0x6,
|
||||
WEAPON_FIRETYPECOUNT = 0x7,
|
||||
|
||||
WEAPON_FIRETYPE_NUM,
|
||||
};
|
||||
|
||||
enum weapClipType_t
|
||||
@@ -3872,7 +3879,8 @@ namespace T5
|
||||
WEAPON_CLIPTYPE_DP28 = 0x3,
|
||||
WEAPON_CLIPTYPE_PTRS = 0x4,
|
||||
WEAPON_CLIPTYPE_LMG = 0x5,
|
||||
WEAPON_CLIPTYPECOUNT = 0x6,
|
||||
|
||||
WEAPON_CLIPTYPE_NUM,
|
||||
};
|
||||
|
||||
enum OffhandClass
|
||||
@@ -3882,7 +3890,8 @@ namespace T5
|
||||
OFFHAND_CLASS_SMOKE_GRENADE = 0x2,
|
||||
OFFHAND_CLASS_FLASH_GRENADE = 0x3,
|
||||
OFFHAND_CLASS_GEAR = 0x4,
|
||||
OFFHAND_CLASS_COUNT = 0x5,
|
||||
|
||||
OFFHAND_CLASS_NUM,
|
||||
};
|
||||
|
||||
enum OffhandSlot
|
||||
@@ -3892,7 +3901,8 @@ namespace T5
|
||||
OFFHAND_SLOT_TACTICAL_GRENADE = 0x2,
|
||||
OFFHAND_SLOT_EQUIPMENT = 0x3,
|
||||
OFFHAND_SLOT_SPECIFIC_USE = 0x4,
|
||||
OFFHAND_SLOT_COUNT = 0x5,
|
||||
|
||||
OFFHAND_SLOT_NUM,
|
||||
};
|
||||
|
||||
enum weapStance_t
|
||||
@@ -3900,7 +3910,8 @@ namespace T5
|
||||
WEAPSTANCE_STAND = 0x0,
|
||||
WEAPSTANCE_DUCK = 0x1,
|
||||
WEAPSTANCE_PRONE = 0x2,
|
||||
WEAPSTANCE_NUM = 0x3,
|
||||
|
||||
WEAPSTANCE_NUM,
|
||||
};
|
||||
|
||||
enum activeReticleType_t
|
||||
@@ -3908,7 +3919,8 @@ namespace T5
|
||||
VEH_ACTIVE_RETICLE_NONE = 0x0,
|
||||
VEH_ACTIVE_RETICLE_PIP_ON_A_STICK = 0x1,
|
||||
VEH_ACTIVE_RETICLE_BOUNCING_DIAMOND = 0x2,
|
||||
VEH_ACTIVE_RETICLE_COUNT = 0x3,
|
||||
|
||||
VEH_ACTIVE_RETICLE_NUM,
|
||||
};
|
||||
|
||||
enum ammoCounterClipType_t
|
||||
@@ -3920,14 +3932,16 @@ namespace T5
|
||||
AMMO_COUNTER_CLIP_ROCKET = 0x4,
|
||||
AMMO_COUNTER_CLIP_BELTFED = 0x5,
|
||||
AMMO_COUNTER_CLIP_ALTWEAPON = 0x6,
|
||||
AMMO_COUNTER_CLIP_COUNT = 0x7,
|
||||
|
||||
AMMO_COUNTER_CLIP_NUM,
|
||||
};
|
||||
|
||||
enum weapOverlayReticle_t
|
||||
{
|
||||
WEAPOVERLAYRETICLE_NONE = 0x0,
|
||||
WEAPOVERLAYRETICLE_CROSSHAIR = 0x1,
|
||||
WEAPOVERLAYRETICLE_NUM = 0x2,
|
||||
|
||||
WEAPOVERLAYRETICLE_NUM,
|
||||
};
|
||||
|
||||
enum WeapOverlayInteface_t
|
||||
@@ -3935,7 +3949,8 @@ namespace T5
|
||||
WEAPOVERLAYINTERFACE_NONE = 0x0,
|
||||
WEAPOVERLAYINTERFACE_JAVELIN = 0x1,
|
||||
WEAPOVERLAYINTERFACE_TURRETSCOPE = 0x2,
|
||||
WEAPOVERLAYINTERFACECOUNT = 0x3,
|
||||
|
||||
WEAPOVERLAYINTERFACE_NUM,
|
||||
};
|
||||
|
||||
enum weapProjExposion_t
|
||||
@@ -3950,7 +3965,8 @@ namespace T5
|
||||
WEAPPROJEXP_FIRE = 0x7,
|
||||
WEAPPROJEXP_NAPALMBLOB = 0x8,
|
||||
WEAPPROJEXP_BOLT = 0x9,
|
||||
WEAPPROJEXP_NUM = 0xA,
|
||||
|
||||
WEAPPROJEXP_NUM,
|
||||
};
|
||||
|
||||
enum WeapStickinessType
|
||||
@@ -3961,7 +3977,8 @@ namespace T5
|
||||
WEAPSTICKINESS_GROUND = 0x3,
|
||||
WEAPSTICKINESS_GROUND_WITH_YAW = 0x4,
|
||||
WEAPSTICKINESS_FLESH = 0x5,
|
||||
WEAPSTICKINESS_COUNT = 0x6,
|
||||
|
||||
WEAPSTICKINESS_NUM,
|
||||
};
|
||||
|
||||
enum WeapRotateType
|
||||
@@ -3969,7 +3986,8 @@ namespace T5
|
||||
WEAPROTATE_GRENADE_ROTATE = 0x0,
|
||||
WEAPROTATE_BLADE_ROTATE = 0x1,
|
||||
WEAPROTATE_CYLINDER_ROTATE = 0x2,
|
||||
WEAPROTATE_COUNT = 0x3,
|
||||
|
||||
WEAPROTATE_NUM,
|
||||
};
|
||||
|
||||
enum guidedMissileType_t
|
||||
@@ -3981,7 +3999,8 @@ namespace T5
|
||||
MISSILE_GUIDANCE_BALLISTIC = 0x4,
|
||||
MISSILE_GUIDANCE_WIREGUIDED = 0x5,
|
||||
MISSILE_GUIDANCE_TVGUIDED = 0x6,
|
||||
MISSILE_GUIDANCE_COUNT = 0x7,
|
||||
|
||||
MISSILE_GUIDANCE_NUM,
|
||||
};
|
||||
|
||||
enum weapAnimFiles_t
|
||||
@@ -4118,7 +4137,7 @@ namespace T5
|
||||
HITLOC_COUNT
|
||||
};
|
||||
|
||||
struct flameTable
|
||||
struct FlameTable
|
||||
{
|
||||
float flameVar_streamChunkGravityStart;
|
||||
float flameVar_streamChunkGravityEnd;
|
||||
@@ -4741,8 +4760,8 @@ namespace T5
|
||||
int scanPauseTime;
|
||||
const char* flameTableFirstPerson;
|
||||
const char* flameTableThirdPerson;
|
||||
flameTable* flameTableFirstPersonPtr;
|
||||
flameTable* flameTableThirdPersonPtr;
|
||||
FlameTable* flameTableFirstPersonPtr;
|
||||
FlameTable* flameTableThirdPersonPtr;
|
||||
FxEffectDef* tagFx_preparationEffect;
|
||||
FxEffectDef* tagFlash_preparationEffect;
|
||||
bool doGibbing;
|
||||
|
||||
@@ -88,7 +88,7 @@ namespace T6
|
||||
struct XRigidVertList;
|
||||
struct XSurface;
|
||||
struct XModel;
|
||||
struct flameTable;
|
||||
struct FlameTable;
|
||||
struct cStaticModel_s;
|
||||
struct FxElemVelStateSample;
|
||||
struct FxElemVisStateSample;
|
||||
@@ -4944,8 +4944,8 @@ namespace T6
|
||||
int scanPauseTime;
|
||||
const char* flameTableFirstPerson;
|
||||
const char* flameTableThirdPerson;
|
||||
flameTable* flameTableFirstPersonPtr;
|
||||
flameTable* flameTableThirdPersonPtr;
|
||||
FlameTable* flameTableFirstPersonPtr;
|
||||
FlameTable* flameTableThirdPersonPtr;
|
||||
FxEffectDef* tagFx_preparationEffect;
|
||||
FxEffectDef* tagFlash_preparationEffect;
|
||||
bool doGibbing;
|
||||
@@ -6681,7 +6681,7 @@ namespace T6
|
||||
int animDuration;
|
||||
};
|
||||
|
||||
struct flameTable
|
||||
struct FlameTable
|
||||
{
|
||||
float flameVar_streamChunkGravityStart;
|
||||
float flameVar_streamChunkGravityEnd;
|
||||
|
||||
Reference in New Issue
Block a user