public void onGetItemList(SocketModel module)
 {
     ItemMessage.MsgGetItemListRep msg = MsgSerializer.Deserialize<ItemMessage.MsgGetItemListRep>(module);
     BagStruct bag = MonoInstancePool.getInstance<BagManager>().getBagByType(msg.type);
     if (bag == null)
     {
         Debug.LogError("have not this bag!");
         return;
     }
     bag.clear();
     //Debug.Log("bag: " + msg.type + " have: " + msg.itemList.Count + " " + msg.equipList.Count);
     if (msg.type == (int)GlobalDef.BagType.B_EQUIPMENT)
     {
         for (int i = 0; i < msg.equipList.Count; i++)
         {
             Property.Equip item = msg.equipList[i];
             EquipmentItem baseItem = new EquipmentItem();
             baseItem.parseData(item);
             bag.addItem(baseItem);
             bag.IsDirty = true;
         }
     }
     else
     {
         for (int i = 0; i < msg.itemList.Count; i++)
         {
             Property.Item item = msg.itemList[i];
             BaseItem baseItem = MonoInstancePool.getInstance<BagManager>().createItemByData(item);
             bag.addItem(baseItem);
             bag.IsDirty = true;
         }
     }
 }
	/// <summary>
	/// 解析从服务器接收到的数据
	/// </summary>
	public void parseServerHero(Property.Hero data)
	{
		//template Data
		parseData(data.heroid);

		guid = (long)data.guid;
		templateID = data.heroid;
		activate = data.activate;
		level = data.level;
		if(data.starLevel > starLevel ){starLevel = data.starLevel;}
		exp = data.exp;
		debris = data.debris;
		realmList.curRealmLevel = data.realm;
		battle = data.battle;
		fighting = data.fighting;

		equipmentList.clear ();
		for(int j = 0; j < data.items.Count; j++)
		{
			EquipmentItem item = new EquipmentItem();
			Property.Equip item_data = data.items[j];
			item.parseData(data.items[j]);	
			equipmentList.addItem(item.guid, item);
			
			item.gemList.Clear();
			for(int k = 0; k < item_data.gemAry.Count; k++)
			{
				DiamondItem gemItem = new DiamondItem();
				Property.Item gemData = item_data.gemAry[k];
				gemItem.guid = (long)gemData.guid;
				gemItem.templateID = (int)gemData.templateid;
				gemItem.haveNum = (int)gemData.number;
				//					gemItem.type = (int)gemData.type;
				item.gemList.Add(gemItem.guid, gemItem);
			}			
		}
		Property.Horse horse = data.horse;
		//skill
		skillList.Clear();
		skillList.clearUseSkill();
		for(int s = 0; s < data.skills.Count; s++)
		{
			Property.Skill skillData = data.skills[s];
			int skillId = skillData.skillid;
			
			SkillItem skill = new SkillItem(this, skillId);
			skill.level = skillData.level;
			skill.active = skillData.activate;
			skill.slot = skillData.slot;
			skillList.Add(skill);
			if(skill.slot != -1 && skill.slot < skillList.useSkills.Length)
			{
				skillList.useSkills[skill.slot] = s;
			}
		}
	}
    void SetDatas(HeroManager manager, List<HeroDebugData> heroDatas)
    {
        HeroDebugData data;
        HeroData hero;
        for (int i = 0; i < heroDatas.Count; i++)
        {
            hero = new HeroData();
            data = heroDatas[i];

            //set max
            for (int j = 0; j < data.equipment.Count; j++)
            {
                EquipmentItem item = new EquipmentItem();
                Property.Equip e = new Property.Equip();

                if (data.equipment[j].equipId > 0 && data.equipment[j].equipLevel > 0)
                {
                    e.templateid = (uint)data.equipment[j].equipId;
                    item.parseData(e);

                    //Debug.Log(item.equitype);
                    //set level
                    item.equiplev = data.equipment[j].equipLevel;
                    hero.equipmentList.addItem(i * 10 + j, item);
                }
            }

            //set id level
            if (data.heroId > 0 && data.heroLevel > 0)
            {
                hero.templateID = data.heroId;
                hero.guid = (long)1111111 + i;
                hero.level = data.heroLevel;
                hero.property.country = i + 1;
                hero.activate = false;
                hero.battle = i;
                hero.starLevel = data.heroStar;

                hero.parseData(hero.templateID);

                hero.refreshProperty();
                manager.addHero(hero.guid, hero);
                Debug.Log("hero is init " + i + "   resname : " + hero.resname);
            }

            if (i < 3)
                manager.fightHeroList.setFightHero(hero.battle, hero.guid);
        }
    }
	public void onUpdateEquipment(SocketModel module)
	{
		DataMessage.MsgHeroUpdateEquipRep msg = MsgSerializer.Deserialize<DataMessage.MsgHeroUpdateEquipRep>(module);

		long heroid = (long)msg.heroGuid;
		int type = msg.type;
		HeroData hero =  MonoInstancePool.getInstance<HeroManager>().getHero(heroid);
		if(null == hero)
		{
			return;
		}
		if(type == (int)GlobalDef.EquipmentChange.E_PUTON)
		{
			EquipmentItem item = new EquipmentItem();
			item.parseData(msg.equipInfo);
			Debug.Log("    ********************************* recive" + (long)msg.equipInfo.guid);
			hero.equipmentList.addItem((long)msg.equipInfo.guid,item);
			hero.equipmentList.isDirty = true;

			//背包列表
			HeroSysEquipBagWindow window = (HeroSysEquipBagWindow)FindObjectOfType(typeof(HeroSysEquipBagWindow));
			if(window != null)
			{
				window.refresh();
			}
			//身上装备列表
			UIEquipmentList window1 = (UIEquipmentList)FindObjectOfType(typeof(UIEquipmentList));
			if(window1 != null)
			{
				window1.refresh(hero);
			}
		}
		else if(type == (int)GlobalDef.EquipmentChange.E_PUTOFF)
		{
			long guid = (long)msg.guid;
//			MonoInstancePool.getInstance<BagManager>().getEquipmentBag().removeItem(guid);
//			MonoInstancePool.getInstance<BagManager>().getEquipmentBag().IsDirty = true;

			hero.equipmentList.removeItem(guid);
			hero.equipmentList.isDirty = true;

			HeroSysEquipBagWindow window = (HeroSysEquipBagWindow)FindObjectOfType(typeof(HeroSysEquipBagWindow));
			if(window != null)
			{
				window.refresh();
			}
			//身上装备列表
			UIEquipmentList window1 = (UIEquipmentList)FindObjectOfType(typeof(UIEquipmentList));
			if(window1 != null)
			{
				window1.refresh(hero);
			}
		}
	}