Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        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);
 }
Ejemplo n.º 6
0
        /// <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;
            }
        }
Ejemplo n.º 7
0
 /// <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;
     }
 }