/// <summary> /// Deserializes xml markup from file into an LootTable object /// </summary> /// <param name="fileName">string xml file to load and deserialize</param> /// <param name="obj">Output LootTable object</param> /// <param name="exception">output Exception value if deserialize failed</param> /// <returns>true if this Serializer can deserialize the object; otherwise, false</returns> public static bool LoadFromFile(string fileName, out LootTable obj, out Exception exception) { exception = null; obj = default(LootTable); try { obj = LoadFromFile(fileName); return(true); } catch (Exception ex) { exception = ex; return(false); } }
/// <summary> /// Deserializes workflow markup into an LootTable object /// </summary> /// <param name="input">string workflow markup to deserialize</param> /// <param name="obj">Output LootTable object</param> /// <param name="exception">output Exception value if deserialize failed</param> /// <returns>true if this Serializer can deserialize the object; otherwise, false</returns> public static bool Deserialize(string input, out LootTable obj, out Exception exception) { exception = null; obj = default(LootTable); try { obj = Deserialize(input); return(true); } catch (Exception ex) { exception = ex; return(false); } }
/// <summary> /// Calculate drops from a specific loot table. /// </summary> /// <param name="table">The table to be evaluated.</param> /// <returns>Loot structure containing Xp/Gold/List of items to be awarded.</returns> public static Loot CalculateTable(Xml.LootTable table) { var tableLoot = new Loot(0, 0); if (table.Gold != null) { if (table.Gold.Max != 0) { tableLoot.Gold += RollBetween(table.Gold.Min, table.Gold.Max); } else { tableLoot.Gold += table.Gold.Min; } GameLog.SpawnInfo("Processing loot: added {Gold} gp", tableLoot.Gold); } if (table.Xp != null) { if (table.Xp.Max != 0) { tableLoot.Xp += RollBetween(table.Xp.Min, table.Xp.Max); } else { tableLoot.Xp += table.Xp.Min; } GameLog.SpawnInfo("Processing loot: added {Xp} xp", tableLoot.Xp); } // Handle items now if (table.Items != null) { foreach (var itemlist in table.Items) { tableLoot.Items.AddRange(CalculateItems(itemlist)); } } else { GameLog.SpawnWarning("Loot table is null!"); } return(tableLoot); }
public static bool LoadFromFile(string fileName, out LootTable obj) { Exception exception = null; return(LoadFromFile(fileName, out obj, out exception)); }
public static bool Deserialize(string input, out LootTable obj) { Exception exception = null; return(Deserialize(input, out obj, out exception)); }