Skip to content

Commit c68a947

Browse files
committed
update: hotkeys and bags handling for DragAndDrop_HandleDrop
- Required logic update after fixes for item's icon handling. - (bags seriously need a big refactor): replaced direct packet store (buggy) and slider (never been coded properly) for at least, a simple and functional YesNo Prompt that stores whole item stacks from inventory. - HotbarItem case returns false (required so items don't go invisible when placing them to hotbars). - SpellItem to Hotbar case returns false (required so spells don't go invisible when placing them to hotbars).
1 parent 44c1a0a commit c68a947

6 files changed

Lines changed: 24 additions & 27 deletions

File tree

Intersect.Client.Core/Entities/Player.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,41 +1121,32 @@ public void TryStoreItemInBag(int inventorySlotIndex, int bagSlotIndex)
11211121
}
11221122

11231123
var quantity = inventorySlot.Quantity;
1124-
var maxQuantity = quantity;
1125-
1126-
if (maxQuantity < 2)
1127-
{
1128-
PacketSender.SendStoreBagItem(inventorySlotIndex, 1, bagSlotIndex);
1129-
return;
1130-
}
11311124

11321125
_ = new InputBox(
11331126
title: Strings.Bags.StoreItem,
11341127
prompt: Strings.Bags.StoreItemPrompt.ToString(itemDescriptor.Name),
1135-
inputType: InputType.NumericSliderInput,
1128+
inputType: InputType.YesNo,
11361129
quantity: quantity,
1137-
maximumQuantity: maxQuantity,
1138-
userData: new Tuple<int, int>(inventorySlotIndex, bagSlotIndex),
1130+
userData: new Tuple<int, int, int>(inventorySlotIndex, bagSlotIndex, quantity),
11391131
onSubmit: TryStoreItemInBagOnSubmit
11401132
);
11411133
}
11421134

11431135
private static void TryStoreItemInBagOnSubmit(Base sender, InputSubmissionEventArgs args)
11441136
{
1145-
if (sender is not InputBox { UserData: (int inventorySlotIndex, int bagSlotIndex) })
1137+
if (sender is not InputBox { UserData: (int inventorySlotIndex, int bagSlotIndex, int quantity) })
11461138
{
11471139
return;
11481140
}
11491141

1150-
if (args.Value is not NumericalSubmissionValue submissionValue)
1142+
if (args.Value is not BooleanSubmissionValue submissionValue)
11511143
{
11521144
return;
11531145
}
11541146

1155-
var value = (int)Math.Round(submissionValue.Value);
1156-
if (value > 0)
1147+
if (submissionValue.Value)
11571148
{
1158-
PacketSender.SendStoreBagItem(inventorySlotIndex, value, bagSlotIndex);
1149+
PacketSender.SendStoreBagItem(inventorySlotIndex, quantity, bagSlotIndex);
11591150
}
11601151
}
11611152

@@ -1445,12 +1436,17 @@ public void AddToHotbar(int hotbarSlot, sbyte itemType, int itemSlot)
14451436
PacketSender.SendHotbarUpdate(hotbarSlot, itemType, itemSlot);
14461437
}
14471438

1448-
public void HotbarSwap(int index, int swapIndex)
1439+
public bool HotbarSwap(int index, int swapIndex)
14491440
{
14501441
var itemId = Hotbar[index].ItemOrSpellId;
14511442
var bagId = Hotbar[index].BagId;
14521443
var stats = Hotbar[index].PreferredStatBuffs;
14531444

1445+
if (Hotbar[swapIndex].ItemOrSpellId == itemId)
1446+
{
1447+
return false;
1448+
}
1449+
14541450
Hotbar[index].ItemOrSpellId = Hotbar[swapIndex].ItemOrSpellId;
14551451
Hotbar[index].BagId = Hotbar[swapIndex].BagId;
14561452
Hotbar[index].PreferredStatBuffs = Hotbar[swapIndex].PreferredStatBuffs;
@@ -1460,6 +1456,7 @@ public void HotbarSwap(int index, int swapIndex)
14601456
Hotbar[swapIndex].PreferredStatBuffs = stats;
14611457

14621458
PacketSender.SendHotbarSwap(index, swapIndex);
1459+
return true;
14631460
}
14641461

14651462
// Change the dimension if the player is on a gateway

Intersect.Client.Core/Interface/Game/Hotbar/HotbarItem.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,9 @@ public override bool DragAndDrop_HandleDrop(Package package, int x, int y)
217217
if (targetNode is HotbarItem hotbarItem)
218218
{
219219
player.HotbarSwap(SlotIndex, hotbarItem.SlotIndex);
220-
return true;
221-
}
222-
else
223-
{
224-
targetNode = targetNode.Parent;
225220
}
221+
222+
targetNode = targetNode.Parent;
226223
}
227224

228225
// If we've reached the top of the tree, we can't drop here, so cancel drop

Intersect.Client.Core/Interface/Game/Inventory/InventoryItem.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ public override bool DragAndDrop_HandleDrop(Package package, int x, int y)
421421

422422
case BagItem bagItem:
423423
player.TryStoreItemInBag(SlotIndex, bagItem.SlotIndex);
424-
return true;
424+
return false;
425425

426426
case BankItem bankItem:
427427
return player.TryStoreItemInBank(
@@ -433,11 +433,11 @@ public override bool DragAndDrop_HandleDrop(Package package, int x, int y)
433433

434434
case HotbarItem hotbarItem:
435435
player.AddToHotbar(hotbarItem.SlotIndex, 0, SlotIndex);
436-
return true;
436+
return false;
437437

438438
case ShopWindow:
439439
player.TrySellItem(SlotIndex);
440-
return true;
440+
return false;
441441

442442
default:
443443
targetNode = targetNode.Parent;

Intersect.Client.Core/Interface/Game/Spells/SpellItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public override bool DragAndDrop_HandleDrop(Package package, int x, int y)
173173

174174
case HotbarItem hotbarItem:
175175
player.AddToHotbar(hotbarItem.SlotIndex, 1, SlotIndex);
176-
return true;
176+
return false;
177177

178178
default:
179179
targetNode = targetNode.Parent;

Intersect.Client.Core/Localization/Strings.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,10 @@ public partial struct Bags
541541
public static LocalizedString StoreItem = @"Store Item";
542542

543543
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
544-
public static LocalizedString StoreItemPrompt = @"How many/much {00} would you like to store?";
544+
public static LocalizedString StoreMultipleItemPrompt = @"How many/much {00} would you like to store?";
545+
546+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
547+
public static LocalizedString StoreItemPrompt = @"Do you wish to store the item: {00} ?";
545548

546549
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
547550
public static LocalizedString Title = @"Bag";

Intersect.Client.Framework/Entities/IPlayer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public interface IPlayer : IEntity
3434
void AddToHotbar(int hotbarSlot, sbyte itemType, int itemSlot);
3535
int FindHotbarItem(IHotbarInstance hotbarInstance);
3636
int FindHotbarSpell(IHotbarInstance hotbarInstance);
37-
void HotbarSwap(int index, int swapIndex);
37+
bool HotbarSwap(int index, int swapIndex);
3838
int FindItem(Guid itemId, int itemVal = 1);
3939
void SwapItems(int item1, int item2);
4040
long GetItemCooldown(Guid id);

0 commit comments

Comments
 (0)