private HolsterResult DoHolsterMainHand() { if (in_hands == null || in_hands.IsHolstered()) { return(HolsterResult.Invalid); } switch (in_hands.GetItemSize()) { case ItemSize.Small: Debug.Log("Stash to inventory: " + in_hands.gameObject.name); // Item is holstered and hidden in_hands.SetHolstered(true); in_hands.SetVisible(false); // Item is selected active_item = in_hands; AttachToRightHand(in_hands); // Hand is empty now, but do not detach in_hands = null; return(HolsterResult.Success); case ItemSize.Large: if (on_back == null) { Debug.Log("Holster to back: " + in_hands.gameObject.name); // Item is holstered, but visible in_hands.SetHolstered(true); in_hands.SetVisible(true); // Item is on back on_back = in_hands; AttachToBack(in_hands); // Hand is empty now, but do not detach in_hands = null; return(HolsterResult.Success); } else { // Do not holster, but also do not do anything else return(HolsterResult.Blocked); } case ItemSize.Bulky: case ItemSize.Case: // Do not holster, but also do not do anything else return(HolsterResult.Blocked); default: Debug.Log("Unsupported"); break; } return(HolsterResult.Invalid); }
public void Pickup(PickupInteraction item) { /* * if (item == in_hands || item == suitcase || item == on_back || item == active_item || HasI)*/ if (item == null) { return; } if (HasItem(item)) { return; } switch (item.GetItemSize()) { case ItemSize.Bulky: PickupCarryOnly(item); return; case ItemSize.Small: case ItemSize.Large: PickupHolsterable(item); return; default: Debug.Log("This should be impossible"); break; } }
private void PickupHolsterable(PickupInteraction item) { DoButtonCooldown(); // Picking up a large item, while carrying a suitcase? if (suitcase != null && item.GetItemSize() == ItemSize.Large) { // Store to back if the slot is free? if (on_back == null) { AddToBack(item); return; } // TODO: No idea whether suit and bulky item will be dropped... // Cancel for now return; } // Already holding something? if (in_hands != null) { if (in_hands.GetItemSize() == ItemSize.Large || in_hands.GetItemSize() == ItemSize.Bulky) { switch (item.GetItemSize()) { case ItemSize.Large: if (on_back == null) { AddToBack(item); } else { PickupSwap(item, on_back); } break; case ItemSize.Bulky: PickupSwap(item, in_hands); break; case ItemSize.Small: AddToInventory(item); break; default: Debug.Log("This code should not be reached"); break; } return; } else if (in_hands.GetItemSize() == ItemSize.Small) { DoHolsterMainHand(); } } // Hand is free, pick it up if (in_hands == null) { AddToHand(item); return; } }