public IEquippableItemIcon CreateStubEqpII(bool isBowOrWear, bool isInEqpIG, bool isEquipped)
    {
        IEquippableItemIcon eqpII = Substitute.For <IEquippableItemIcon>();

        eqpII.IsBowOrWearItemIcon().Returns(isBowOrWear);
        eqpII.IsInEqpIG().Returns(isInEqpIG);
        eqpII.IsEquipped().Returns(isEquipped);
        return(eqpII);
    }
    public void EvaluateHoverability_PickedEqpIIIsNotBowOrWear_CallsEngineBecomeHoverable()
    {
        IEquipToolPanelConstArg arg;
        EqpToolPoolItemsPanel   panel       = CreateEqpToolPoolItemsPanel(out arg);
        IEquippableItemIcon     pickedEqpII = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsBowOrWearItemIcon().Returns(false);
        IPanelTransactionStateEngine engine = arg.panelTransactionStateEngine;

        panel.EvaluateHoverability(pickedEqpII);

        engine.Received(1).BecomeHoverable();
    }
 protected override bool IsEligibleForHover(IItemIcon pickedII)
 {
     if (pickedII is IEquippableItemIcon)
     {
         IEquippableItemIcon pickedEqpII    = pickedII as IEquippableItemIcon;
         IUIItem             pickedItem     = pickedEqpII.GetUIItem();
         IItemTemplate       pickedItemTemp = pickedItem.GetItemTemplate();
         if (pickedEqpII.IsBowOrWearItemIcon())               // always swapped
         {
             return(true);
         }
         else
         {
             if (pickedEqpII.IsInEqpIG())
             {
                 return(true);                 //always revertable
             }
             else                              // pickd from pool
             {
                 if (pickedEqpII.IsEquipped()) //always has the same partially picked item
                 {
                     return(true);
                 }
                 else
                 {
                     IEquipToolIG relevantEqpIG = thisEqpIITAM.GetRelevantEquipIG(pickedEqpII);
                     if (relevantEqpIG.GetSize() == 1)                            //swap target is deduced
                     {
                         return(true);
                     }
                     else
                     {
                         if (relevantEqpIG.HasSlotSpace())                               //add target is deduced
                         {
                             return(true);
                         }
                         else
                         {
                             return(false);
                         }
                     }
                 }
             }
         }
     }
     else
     {
         throw new System.ArgumentException("pickedII must be of type IEquippableItemIcon");
     }
 }
    public void CheckAndAddEmptyAddTarget_PickedEqpIIIsBowOrWear_DoesNotCallRelevEqpCGIGAddEmpty()
    {
        IEquipToolPanelConstArg     arg;
        EquipToolEquippedItemsPanel eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon         pickedEqpII   = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsBowOrWearItemIcon().Returns(true);
        IEquipToolEquipIG relevEqpCGIG = Substitute.For <IEquipToolEquipIG>();

        arg.eqpIITAM.GetRelevantEquippedCarriedGearsIG().Returns(relevEqpCGIG);

        eqpItemsPanel.CheckAndAddEmptyAddTarget(pickedEqpII);

        relevEqpCGIG.DidNotReceive().AddEmptyAddTarget(Arg.Any <IEquippableUIItem>());
    }
    public void CheckAndAddEmptyAddTarget_PickedEqpIIIsNotBowOrWear_RelevEqpCGIGDoesNotHaveSameItem_CallRelevEqpCGIGAddEmpty()
    {
        IEquipToolPanelConstArg     arg;
        EquipToolEquippedItemsPanel eqpItemsPanel = CreateEqpToolEqpItemsPanel(out arg);
        IEquippableItemIcon         pickedEqpII   = Substitute.For <IEquippableItemIcon>();

        pickedEqpII.IsBowOrWearItemIcon().Returns(false);
        IEquippableUIItem pickedEqpItem = Substitute.For <IEquippableUIItem>();

        pickedEqpII.GetEquippableItem().Returns(pickedEqpItem);
        IEquipToolEquippedCarriedGearsIG relevEqpCGIG = Substitute.For <IEquipToolEquippedCarriedGearsIG>();

        arg.eqpIITAM.GetRelevantEquippedCarriedGearsIG().Returns(relevEqpCGIG);
        relevEqpCGIG.GetItemIconFromItem(pickedEqpItem).Returns((IEquippableItemIcon)null);

        eqpItemsPanel.CheckAndAddEmptyAddTarget(pickedEqpII);

        relevEqpCGIG.Received(1).AddEmptyAddTarget(Arg.Any <IEquippableUIItem>());
    }
 protected override bool IsEligibleForHover(IItemIcon pickedII)
 {
     if (pickedII is IEquippableItemIcon)
     {
         IEquippableItemIcon pickedEqpII = (IEquippableItemIcon)pickedII;
         if (pickedEqpII.IsBowOrWearItemIcon())
         {
             return(false);                   //can't specify target
         }
         else
         {
             return(true);                   //always slot out from equipIG
         }
     }
     else
     {
         throw new System.ArgumentException("pickedII must be of type IEquippableItemIcon");
     }
 }
 bool IsEligibleForEmptyAddTargetAddition(IEquippableItemIcon pickedEqpII)
 {
     if (pickedEqpII.IsBowOrWearItemIcon())
     {
         return(false);
     }
     else
     {
         IEquipToolEquippedCarriedGearsIG eqpCGIG = thisEqpIITAM.GetRelevantEquippedCarriedGearsIG();
         IEquippableItemIcon sameItemEqpII        = (IEquippableItemIcon)eqpCGIG.GetItemIconFromItem(pickedEqpII.GetEquippableItem());
         if (sameItemEqpII != null)
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
 }