mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Remove a bunch of unnecessary try-catch blocks so the exception gets caught one higher up and gives better info.
This commit is contained in:
parent
592a5c8f56
commit
0c8a545dc2
1 changed files with 75 additions and 131 deletions
|
|
@ -158,182 +158,126 @@ namespace Penumbra.Game
|
||||||
|
|
||||||
private static GameObjectInfo HandleEquipment( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleEquipment( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var setId = ushort.Parse( groups[ "id" ].Value );
|
||||||
|
if( fileType == FileType.Imc )
|
||||||
{
|
{
|
||||||
var setId = ushort.Parse( groups[ "id" ].Value );
|
return GameObjectInfo.Equipment( fileType, setId );
|
||||||
if( fileType == FileType.Imc )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.Equipment( fileType, setId );
|
|
||||||
}
|
|
||||||
|
|
||||||
var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value );
|
|
||||||
var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ];
|
|
||||||
if( fileType == FileType.Model )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.Equipment( fileType, setId, gr, slot );
|
|
||||||
}
|
|
||||||
|
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
|
||||||
return GameObjectInfo.Equipment( fileType, setId, gr, slot, variant );
|
|
||||||
}
|
}
|
||||||
catch( Exception e )
|
|
||||||
|
var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value );
|
||||||
|
var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ];
|
||||||
|
if( fileType == FileType.Model )
|
||||||
{
|
{
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
return GameObjectInfo.Equipment( fileType, setId, gr, slot );
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
|
return GameObjectInfo.Equipment( fileType, setId, gr, slot, variant );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleWeapon( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleWeapon( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var weaponId = ushort.Parse( groups[ "weapon" ].Value );
|
||||||
|
var setId = ushort.Parse( groups[ "id" ].Value );
|
||||||
|
if( fileType == FileType.Imc || fileType == FileType.Model )
|
||||||
{
|
{
|
||||||
var weaponId = ushort.Parse( groups[ "weapon" ].Value );
|
return GameObjectInfo.Weapon( fileType, setId, weaponId );
|
||||||
var setId = ushort.Parse( groups[ "id" ].Value );
|
}
|
||||||
if( fileType == FileType.Imc || fileType == FileType.Model )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.Weapon( fileType, setId, weaponId );
|
|
||||||
}
|
|
||||||
|
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
return GameObjectInfo.Weapon( fileType, setId, weaponId, variant );
|
return GameObjectInfo.Weapon( fileType, setId, weaponId, variant );
|
||||||
}
|
|
||||||
catch( Exception e )
|
|
||||||
{
|
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleMonster( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleMonster( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var monsterId = ushort.Parse( groups[ "monster" ].Value );
|
||||||
|
var bodyId = ushort.Parse( groups[ "id" ].Value );
|
||||||
|
if( fileType == FileType.Imc || fileType == FileType.Model )
|
||||||
{
|
{
|
||||||
var monsterId = ushort.Parse( groups[ "monster" ].Value );
|
return GameObjectInfo.Monster( fileType, monsterId, bodyId );
|
||||||
var bodyId = ushort.Parse( groups[ "id" ].Value );
|
}
|
||||||
if( fileType == FileType.Imc || fileType == FileType.Model )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.Monster( fileType, monsterId, bodyId );
|
|
||||||
}
|
|
||||||
|
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
return GameObjectInfo.Monster( fileType, monsterId, bodyId, variant );
|
return GameObjectInfo.Monster( fileType, monsterId, bodyId, variant );
|
||||||
}
|
|
||||||
catch( Exception e )
|
|
||||||
{
|
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleDemiHuman( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleDemiHuman( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var demiHumanId = ushort.Parse( groups[ "id" ].Value );
|
||||||
|
var equipId = ushort.Parse( groups[ "equip" ].Value );
|
||||||
|
if( fileType == FileType.Imc )
|
||||||
{
|
{
|
||||||
var demiHumanId = ushort.Parse( groups[ "id" ].Value );
|
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId );
|
||||||
var equipId = ushort.Parse( groups[ "equip" ].Value );
|
|
||||||
if( fileType == FileType.Imc )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId );
|
|
||||||
}
|
|
||||||
|
|
||||||
var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ];
|
|
||||||
if( fileType == FileType.Model )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId, slot );
|
|
||||||
}
|
|
||||||
|
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
|
||||||
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId, slot, variant );
|
|
||||||
}
|
}
|
||||||
catch( Exception e )
|
|
||||||
|
var slot = GameData.SuffixToEquipSlot[ groups[ "slot" ].Value ];
|
||||||
|
if( fileType == FileType.Model )
|
||||||
{
|
{
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId, slot );
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
|
return GameObjectInfo.DemiHuman( fileType, demiHumanId, equipId, slot, variant );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleCustomization( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleCustomization( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
if( groups[ "skin" ].Success )
|
||||||
{
|
{
|
||||||
if( groups[ "skin" ].Success )
|
return GameObjectInfo.Customization( fileType, CustomizationType.Skin );
|
||||||
{
|
|
||||||
return GameObjectInfo.Customization( fileType, CustomizationType.Skin );
|
|
||||||
}
|
|
||||||
|
|
||||||
var id = ushort.Parse( groups[ "id" ].Value );
|
|
||||||
if( groups[ "location" ].Success )
|
|
||||||
{
|
|
||||||
var tmpType = groups[ "location" ].Value == "face" ? CustomizationType.DecalFace
|
|
||||||
: groups[ "location" ].Value == "equip" ? CustomizationType.DecalEquip : CustomizationType.Unknown;
|
|
||||||
return GameObjectInfo.Customization( fileType, tmpType, id );
|
|
||||||
}
|
|
||||||
|
|
||||||
var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value );
|
|
||||||
var bodySlot = GameData.StringToBodySlot[ groups[ "type" ].Value ];
|
|
||||||
var type = groups[ "slot" ].Success ? GameData.SuffixToCustomizationType[ groups[ "slot" ].Value ] : CustomizationType.Skin;
|
|
||||||
if( fileType == FileType.Material )
|
|
||||||
{
|
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
|
||||||
return GameObjectInfo.Customization( fileType, type, id, gr, bodySlot, variant );
|
|
||||||
}
|
|
||||||
|
|
||||||
return GameObjectInfo.Customization( fileType, type, id, gr, bodySlot );
|
|
||||||
}
|
}
|
||||||
catch( Exception e )
|
|
||||||
|
var id = ushort.Parse( groups[ "id" ].Value );
|
||||||
|
if( groups[ "location" ].Success )
|
||||||
{
|
{
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
var tmpType = groups[ "location" ].Value == "face" ? CustomizationType.DecalFace
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
: groups[ "location" ].Value == "equip" ? CustomizationType.DecalEquip : CustomizationType.Unknown;
|
||||||
|
return GameObjectInfo.Customization( fileType, tmpType, id );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var gr = GameData.GenderRaceFromCode( groups[ "race" ].Value );
|
||||||
|
var bodySlot = GameData.StringToBodySlot[ groups[ "type" ].Value ];
|
||||||
|
var type = groups[ "slot" ].Success ? GameData.SuffixToCustomizationType[ groups[ "slot" ].Value ] : CustomizationType.Skin;
|
||||||
|
if( fileType == FileType.Material )
|
||||||
|
{
|
||||||
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
|
return GameObjectInfo.Customization( fileType, type, id, gr, bodySlot, variant );
|
||||||
|
}
|
||||||
|
|
||||||
|
return GameObjectInfo.Customization( fileType, type, id, gr, bodySlot );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleIcon( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleIcon( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var hq = groups[ "hq" ].Success;
|
||||||
|
var id = uint.Parse( groups[ "id" ].Value );
|
||||||
|
if( !groups[ "lang" ].Success )
|
||||||
{
|
{
|
||||||
var hq = groups[ "hq" ].Success;
|
return GameObjectInfo.Icon( fileType, id, hq );
|
||||||
var id = uint.Parse( groups[ "id" ].Value );
|
}
|
||||||
if( !groups[ "lang" ].Success )
|
|
||||||
{
|
|
||||||
return GameObjectInfo.Icon( fileType, id, hq );
|
|
||||||
}
|
|
||||||
|
|
||||||
var language = groups[ "lang" ].Value switch
|
var language = groups[ "lang" ].Value switch
|
||||||
{
|
|
||||||
"en" => Dalamud.ClientLanguage.English,
|
|
||||||
"ja" => Dalamud.ClientLanguage.Japanese,
|
|
||||||
"de" => Dalamud.ClientLanguage.German,
|
|
||||||
"fr" => Dalamud.ClientLanguage.French,
|
|
||||||
_ => Dalamud.ClientLanguage.English,
|
|
||||||
};
|
|
||||||
return GameObjectInfo.Icon( fileType, id, hq, language );
|
|
||||||
}
|
|
||||||
catch( Exception e )
|
|
||||||
{
|
{
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
"en" => Dalamud.ClientLanguage.English,
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
"ja" => Dalamud.ClientLanguage.Japanese,
|
||||||
}
|
"de" => Dalamud.ClientLanguage.German,
|
||||||
|
"fr" => Dalamud.ClientLanguage.French,
|
||||||
|
_ => Dalamud.ClientLanguage.English,
|
||||||
|
};
|
||||||
|
return GameObjectInfo.Icon( fileType, id, hq, language );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static GameObjectInfo HandleMap( FileType fileType, ObjectType objectType, GroupCollection groups )
|
private static GameObjectInfo HandleMap( FileType fileType, ObjectType objectType, GroupCollection groups )
|
||||||
{
|
{
|
||||||
try
|
var map = Encoding.ASCII.GetBytes( groups[ "id" ].Value );
|
||||||
|
var variant = byte.Parse( groups[ "variant" ].Value );
|
||||||
|
if( groups[ "suffix" ].Success )
|
||||||
{
|
{
|
||||||
var map = Encoding.ASCII.GetBytes( groups[ "id" ].Value );
|
var suffix = Encoding.ASCII.GetBytes( groups[ "suffix" ].Value )[ 0 ];
|
||||||
var variant = byte.Parse( groups[ "variant" ].Value );
|
return GameObjectInfo.Map( fileType, map[ 0 ], map[ 1 ], map[ 2 ], map[ 3 ], variant, suffix );
|
||||||
if( groups[ "suffix" ].Success )
|
}
|
||||||
{
|
|
||||||
var suffix = Encoding.ASCII.GetBytes( groups[ "suffix" ].Value )[ 0 ];
|
|
||||||
return GameObjectInfo.Map( fileType, map[ 0 ], map[ 1 ], map[ 2 ], map[ 3 ], variant, suffix );
|
|
||||||
}
|
|
||||||
|
|
||||||
return GameObjectInfo.Map( fileType, map[ 0 ], map[ 1 ], map[ 2 ], map[ 3 ], variant );
|
return GameObjectInfo.Map( fileType, map[ 0 ], map[ 1 ], map[ 2 ], map[ 3 ], variant );
|
||||||
}
|
|
||||||
catch( Exception e )
|
|
||||||
{
|
|
||||||
PluginLog.Error( $"Parsing game path failed:\n{e}" );
|
|
||||||
return new GameObjectInfo { FileType = fileType, ObjectType = objectType };
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GameObjectInfo GetFileInfo( GamePath path )
|
public static GameObjectInfo GetFileInfo( GamePath path )
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue