public void UnEquipWeapon(WeaponEquipPayload payload)
 {
     GD.Print("WeaponController - UnEquipWeapon");
     if (mainHand != null && mainHand.GetStats().weaponEquipType == WeaponEquipType.TWO_HANDS)
     {
         mainHand = null;
         offHand  = null;
     }
     else
     {
         if (payload.targetSlotType == WeaponSlotType.MAIN_HAND)
         {
             mainHand = null;
         }
         else if (payload.targetSlotType == WeaponSlotType.OFF_HAND)
         {
             offHand = null;
         }
     }
 }
        public void EquipWeapon(WeaponEquipPayload payload)
        {
            GD.Print("WeaponController - EquipWeapon");
            Weapon          weapon     = payload.equipable as Weapon;
            WeaponStats     weaponData = weapon.GetStats();
            WeaponEquipType equipType  = weaponData.weaponEquipType;

            if (equipType == WeaponEquipType.MAIN_HAND && payload.targetSlotType == WeaponSlotType.MAIN_HAND)
            {
                UnEquipWeapon(payload);
                mainHand = weapon;
            }
            else if (equipType == WeaponEquipType.OFF_HAND && payload.targetSlotType == WeaponSlotType.OFF_HAND)
            {
                UnEquipWeapon(payload);
                offHand = weapon;
            }
            else if (equipType == WeaponEquipType.TWO_HANDS)
            {
                UnEquipWeapon(payload);
                mainHand = weapon;
                offHand  = weapon;
            }
            else if (equipType == WeaponEquipType.EITHER_HAND)
            {
                UnEquipWeapon(payload);
                if (payload.targetSlotType == WeaponSlotType.MAIN_HAND)
                {
                    mainHand = weapon;
                }
                else if (payload.targetSlotType == WeaponSlotType.OFF_HAND)
                {
                    offHand = weapon;
                }
            }
        }