public static TradelistContainer FromFile(string filename) { TradelistContainer _container = new TradelistContainer(); Tradelist currentlist = null; if (File.Exists(filename)) { using (TraderReader reader = TraderReader.Open(filename)) while (reader.Read()) { _container.TradeMenu = reader.Menu; switch (reader[reader.Trade].node) { case TraderReader.NodeTypeSpeciafier.Grouped: goto AddGroupList; case TraderReader.NodeTypeSpeciafier.Single: goto AddSinglelist; } return(null); AddGroupList: GroupedTradelist gtrade = GetSafeGroup(_container, reader.Trade); currentlist = GetSafeList(gtrade, reader.Group - 1); goto AddItemCount; AddSinglelist: SingleTradelist strade = GetSafeSingle(_container, reader.Trade); currentlist = strade.list; goto AddItemCount; AddItemCount: switch (reader.Type) { case TraderReader.NodeType.Production: currentlist.AddProduct(reader.ItemId, reader.ItemCount); break; case TraderReader.NodeType.Supplement: currentlist.AddSupplement(reader.ItemId, reader.ItemCount); break; } } } return(_container); }
/// <summary> /// Helper funtion /// </summary> private static SingleTradelist GetSafeSingle(TradelistContainer _container, uint TradeId) { BaseTradelist blist = null; _container.dict.TryGetValue(TradeId, out blist); SingleTradelist slist = blist as SingleTradelist; if (slist != null) { return(slist); } else { slist = new SingleTradelist(); _container.dict[TradeId] = slist; return(slist); } }
/// <summary> /// Helper funtion /// </summary> private static GroupedTradelist GetSafeGroup(TradelistContainer _container, uint TradeId) { BaseTradelist blist = null; _container.dict.TryGetValue(TradeId, out blist); GroupedTradelist glist = blist as GroupedTradelist; if (glist != null) { return(glist); } else { glist = new GroupedTradelist(); _container.dict[TradeId] = glist; return(glist); } }
public static TradelistContainer FromFile(string filename) { TradelistContainer _container = new TradelistContainer(); Tradelist currentlist = null; if (File.Exists(filename)) using (TraderReader reader = TraderReader.Open(filename)) while (reader.Read()) { _container.TradeMenu = reader.Menu; switch (reader[reader.Trade].node) { case TraderReader.NodeTypeSpeciafier.Grouped: goto AddGroupList; case TraderReader.NodeTypeSpeciafier.Single: goto AddSinglelist; } return null; AddGroupList: GroupedTradelist gtrade = GetSafeGroup(_container, reader.Trade); currentlist = GetSafeList(gtrade, reader.Group - 1); goto AddItemCount; AddSinglelist: SingleTradelist strade = GetSafeSingle(_container, reader.Trade); currentlist = strade.list; goto AddItemCount; AddItemCount: switch (reader.Type) { case TraderReader.NodeType.Production: currentlist.AddProduct(reader.ItemId, reader.ItemCount); break; case TraderReader.NodeType.Supplement: currentlist.AddSupplement(reader.ItemId, reader.ItemCount); break; } } return _container; }
/// <summary> /// Caches the trader object form a file. /// </summary> /// <param name="npc"></param> protected virtual void OnCacheTrader(BaseNPC npc) { string filename = Server.SecurePath("~/traders/{0}.xml", npc.ModelId); _container = TradelistContainer.FromFile(filename); }
/// <summary> /// Helper funtion /// </summary> private static GroupedTradelist GetSafeGroup(TradelistContainer _container, uint TradeId) { BaseTradelist blist = null; _container.dict.TryGetValue(TradeId, out blist); GroupedTradelist glist = blist as GroupedTradelist; if (glist != null) { return glist; } else { glist = new GroupedTradelist(); _container.dict[TradeId] = glist; return glist; } }
/// <summary> /// Helper funtion /// </summary> private static SingleTradelist GetSafeSingle(TradelistContainer _container, uint TradeId) { BaseTradelist blist = null; _container.dict.TryGetValue(TradeId, out blist); SingleTradelist slist = blist as SingleTradelist; if (slist != null) { return slist; } else { slist = new SingleTradelist(); _container.dict[TradeId] = slist; return slist; } }