// Type: PBServer.data.xml.parsers.StartedInventoryItemsParser
// Assembly: PBServer, Version=0.7.3.28, Culture=neutral, PublicKeyToken=null
// MVID: DD1C8254-EB73-4D21-BA9E-7165990AED98
// Assembly location: D:\mmo game servers\pb\Debug\PBServer.exe
using PBServer;
using PBServer.data.model;
using PBServer.data.xml.holders;
using PBServer.Properties;
using System.Collections.Generic;
using System.IO;
using System.Xml;
namespace PBServer.data.xml.parsers
{
public final class ShopItemParser extends AbstractDirParser<ShopItemHolder>
{
private static ShopItemParser _instance;
private int _currentItemId;
public static ShopItemParser getInstance()
{
if(_instance == null)
{
_instance = new ShopItemParser();
}
return _instance;
}
private ShopItemParser()
{
super("./data/shopItems/", "template.xml", ShopItemHolder.getInstance());
}
[USER=2000004426]Override[/USER]
protected void readData(Node doc, String file) throws Exception
{
super.readData(doc, file);
if("list".equalsIgnoreCase(doc.getNodeName()))
{
for(Node sa = doc.getFirstChild(); sa != null; sa = sa.getNextSibling())
{
if("weapon".equalsIgnoreCase(sa.getNodeName()) || "armor".equalsIgnoreCase(sa.getNodeName()) || "cupon".equalsIgnoreCase(sa.getNodeName()))
{
parseItem(sa.getNodeName(), sa);
}
}
}
}
public void parseItem(String type, Node sa) throws Exception
{
NamedNodeMap map = sa.getAttributes();
StatsSet set = new StatsSet();
set.set("num", ParserUtils.intValue(map.getNamedItem("id")));
set.set("name", ParserUtils.stringValue(map.getNamedItem("name")));
_currentItemId = set.getInt("num");
for(Node s1 = sa.getFirstChild(); s1 != null; s1 = s1.getNextSibling())
{
if("set".equalsIgnoreCase(s1.getNodeName()))
{
map = s1.getAttributes();
set.set(map.getNamedItem("name").getNodeValue(), map.getNamedItem("val").getNodeValue());
}
}
AbstractShopItemTemplate template = null;
try
{
if(type.equalsIgnoreCase("weapon"))
{
template = new ShopWeaponTemplate(set);
}
else if(type.equalsIgnoreCase("armor"))
{
template = new ShopArmorTemplate(set);
}
else if(type.equalsIgnoreCase("cupon"))
{
template = new ShopCuponTemplate(set);
}
}
catch(Exception e)
{
info("Fail create item: " + _currentItemId, e);
return;
}
getHolder().addTemplate(template);
}
public abstract class AbstractShopItemTemplate
{
protected Logger _log = Logger.getLogger(getClass());
private final int _num;
private final String _name;
private final int _count;
private final int _price;
protected ITEM_TYPE _itemType;
protected AbstractShopItemTemplate(StatsSet set)
{
_num = set.getInt("num");
_name = set.getString("name");
_count = set.getInt("COUNT");
_price = set.getInt("PRICE");
}
public abstract int getItemId();
public int getItemNum()
{
return _num;
}
public String getItemName()
{
return _name;
}
public int getItemCount()
{
return _count;
}
public int getItemPrice()
{
return _price;
}
public ITEM_TYPE getItemType()
{
return _itemType;
}
}
public final class ShopWeaponTemplate extends AbstractShopItemTemplate
{
public ShopWeaponTemplate(StatsSet set)
{
super(set);
_itemType = set.getEnum("ITEM_TYPE", ITEM_TYPE.class, ITEM_TYPE.WEAPON);
}
[USER=2000004426]Override[/USER]
public int getItemId()
{
return getItemNum();
}
}
public final class ShopArmorTemplate extends AbstractShopItemTemplate
{
public ShopArmorTemplate(StatsSet set)
{
super(set);
_itemType = set.getEnum("ITEM_TYPE", ITEM_TYPE.class, ITEM_TYPE.ARMOR);
}
[USER=2000004426]Override[/USER]
public int getItemId()
{
return getItemNum();
}
}
public final class ShopCuponTemplate extends AbstractShopItemTemplate
{
public ShopCuponTemplate(StatsSet set)
{
super(set);
_itemType = set.getEnum("ITEM_TYPE", ITEM_TYPE.class, ITEM_TYPE.CUPON);
}
[USER=2000004426]Override[/USER]
public int getItemId()
{
return getItemNum();
}
}
}