示例#1
0
		private void OnUpdateData(GameServerPacket packet)
		{
			int player = GetLocalPlayer(packet.ReadByte());
			CardLocation loc = (CardLocation)packet.ReadByte();

			IList<ClientCard> cards = null;
			switch (loc)
			{
				case CardLocation.Hand:
					cards = _duel.Fields[player].Hand;
					break;
				case CardLocation.MonsterZone:
					cards = _duel.Fields[player].MonsterZone;
					break;
				case CardLocation.SpellZone:
					cards = _duel.Fields[player].SpellZone;
					break;
				case CardLocation.Grave:
					cards = _duel.Fields[player].Graveyard;
					break;
				case CardLocation.Removed:
					cards = _duel.Fields[player].Banished;
					break;
				case CardLocation.Deck:
					cards = _duel.Fields[player].Deck;
					break;
				case CardLocation.Extra:
					cards = _duel.Fields[player].ExtraDeck;
					break;
			}
			if (cards != null)
			{
				foreach (ClientCard card in cards)
				{
					try{
						int len = packet.ReadInt32();
						if (len < 8) continue;
						long pos = packet.GetPosition();
						card.Update(packet, _duel);
						packet.SetPosition(pos + len - 4);
					}catch(Exception){
						
					}
				}
			}
		}