SendChangedMessage() public method

Send only the changed attributes. How nice is that?
public SendChangedMessage ( GameClient client, uint actorID ) : void
client GameClient the client we send it to
actorID uint the actor this attribs belong to
return void
Esempio n. 1
0
 /// <summary>
 /// Equips an item in an equipment slot
 /// </summary>
 public void EquipItem(Item item, int slot)
 {
     _equipment[slot] = item.DynamicID;
     item.Owner = _owner;
     item.SetInventoryLocation(slot, 0, 0);
     item.Attributes[GameAttributeB.Item_Equipped] = true;
     if (slot == (int)EquipmentSlotId.Off_Hand)
     {
         if (_equipment[(int)EquipmentSlotId.Main_Hand] != 0)
         {
             Item mainWeapon = GetEquipment(EquipmentSlotId.Main_Hand);
             GameAttributeMap other = new GameAttributeMap();
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = item.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = 0;
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             mainWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = item.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = 0;
             other.SendChangedMessage((mainWeapon.Owner as Player).InGameClient, mainWeapon.DynamicID);
         }
     }
     else if (slot == (int)EquipmentSlotId.Main_Hand)
     {
         if (_equipment[(int)EquipmentSlotId.Off_Hand] != 0)
         {
             Item offHandWeapon = GetEquipment(EquipmentSlotId.Off_Hand);
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = item.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total];
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = item.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total];
             offHandWeapon.Attributes[GameAttribute.Held_In_OffHand] = true;
             item.Attributes[GameAttribute.Damage_Weapon_Min_Total_OffHand] = 0;
             item.Attributes[GameAttribute.Damage_Weapon_Delta_Total_OffHand] = 0;
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Delta_Total_MainHand] = 0;
             offHandWeapon.Attributes[GameAttribute.Damage_Weapon_Min_Total_MainHand] = 0;
             offHandWeapon.Attributes.SendChangedMessage((offHandWeapon.Owner as Player).InGameClient, offHandWeapon.DynamicID);
         }
     }
     if (item.Owner is Player)
     {
         item.Attributes.SendChangedMessage((item.Owner as Player).InGameClient, item.DynamicID); // flag item as equipped, so as not to shown in red color
     }
     _equippedMap = null;
     // compute stats (depends on items)
     AttributeMath.ComputeStats(_owner, GetEquippedMap());
 }