Added drag and drop to backpack for quick storage.

添加拖拽到背包快速存储的功能。
This commit is contained in:
Cold-Mint 2024-07-03 23:31:31 +08:00
parent 221628346e
commit 4aff26d7bc
Signed by: Cold-Mint
GPG Key ID: C5A9BF8A98E0CE99
3 changed files with 79 additions and 4 deletions

View File

@ -52,4 +52,11 @@ log_no_points,巡逻路径没有点。,The patrol path has no points.,巡回路
log_patrol_to_next_point,下一个点{0},当前位置{1},偏移量{2},距离为{3}。,"Next point {0}, current position {1}, offset {2}, distance {3}.",次のポイント{0}、現在の位置{1}、オフセット{2}、距離{3}。
log_patrol_arrival_point,到达巡逻点{0}。,Arrival at patrol point {0}.,巡回ポイント{0}に到着します。
log_patrol_origin_position,巡逻路径的起始位置是{0}。,The starting position of the patrol path is {0}.,巡回路の開始位置は{0}です。
log_patrol_not_on_floor,不能将初始路径设置在空中。,The initial path cannot be set in the air.,初期パスを空中に設定できません。
log_patrol_not_on_floor,不能将初始路径设置在空中。,The initial path cannot be set in the air.,初期パスを空中に設定できません。
log_item_container_is_null,物品容器为空。,Item container is null.,アイテム・コンテナが空です。
log_can_add_item,可以添加物品{0}。,Can add item {0}.,アイテム{0}を追加できます。
log_backpack_not_allowed,不允许添加到背包。,Not allowed to add to backpack.,バックパックに追加することは許可されていません。
log_item_is_null,物品为空。,Item is null.,アイテムが空です。
log_item_id_not_same,物品ID不同。,Item ID is different.,アイテムIDが異なります。
log_max_quantity_exceeded,超过最大数量。,Exceeded maximum quantity.,最大数量を超えました。
log_item_slot_is_selected_and_not_allowed,已选择物品槽,不允许添加。,"Item slot is selected, not allowed to add.",アイテムスロットが選択されており、追加は許可されていません。
1 id zh en ja
52 log_patrol_not_on_floor 不能将初始路径设置在空中。 The initial path cannot be set in the air. 初期パスを空中に設定できません。
53 log_item_container_is_null 物品容器为空。 Item container is null. アイテム・コンテナが空です。
54 log_can_add_item 可以添加物品{0}。 Can add item {0}. アイテム{0}を追加できます。
55 log_backpack_not_allowed 不允许添加到背包。 Not allowed to add to backpack. バックパックに追加することは許可されていません。
56 log_item_is_null 物品为空。 Item is null. アイテムが空です。
57 log_item_id_not_same 物品ID不同。 Item ID is different. アイテムIDが異なります。
58 log_max_quantity_exceeded 超过最大数量。 Exceeded maximum quantity. 最大数量を超えました。
59 log_item_slot_is_selected_and_not_allowed 已选择物品槽,不允许添加。 Item slot is selected, not allowed to add. アイテムスロットが選択されており、追加は許可されていません。
60
61
62

View File

@ -1,4 +1,5 @@
using System;
using ColdMint.scripts.debug;
using ColdMint.scripts.utils;
using Godot;
@ -62,6 +63,14 @@ public partial class ItemSlotNode : MarginContainer
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
if (_isSelect)
{
//Do not place items in the selected item slot, even if the item slot is empty.
//禁止在已选中的物品槽内放置物品,即使物品槽是空的。
LogCat.Log("item_slot_is_selected_and_not_allowed");
return false;
}
//If the preplaced slot does not have an icon, the preplaced slot is not allowed.
//如果预放置的槽位没有图标,那么不允许放置。
if (_iconTextureRect == null)
@ -86,6 +95,35 @@ public partial class ItemSlotNode : MarginContainer
return false;
}
if (item is Packsack packsack)
{
if (_item == null)
{
//If the dragged item is a backpack and there are no items in the current slot, return whether the backpack is allowed.
//如果拖拽的物品是背包,且当前槽位没有物品,那么返回是否允许放置背包。
return BackpackAllowed;
}
if (packsack.ItemContainer == null)
{
LogCat.Log("item_container_is_null");
return false;
}
return packsack.ItemContainer.CanAddItem(_item);
}
if (_item is Packsack currentPacksack)
{
if (currentPacksack.ItemContainer == null)
{
LogCat.Log("item_container_is_null");
return false;
}
return currentPacksack.ItemContainer.CanAddItem(item);
}
return CanAddItem(item);
}
@ -194,16 +232,40 @@ public partial class ItemSlotNode : MarginContainer
}
var itemSlotNode = data.As<ItemSlotNode>();
var item = itemSlotNode.GetItem();
if (item == null)
var sourceItem = itemSlotNode.GetItem();
if (sourceItem == null)
{
//Return null when trying to get the source item.
//尝试获取源物品时返回null。
return;
}
if (sourceItem is Packsack packsack)
{
//If the source item is a backpack.
//如果源物品是背包。
if (packsack.ItemContainer != null && _item != null)
{
packsack.ItemContainer.AddItem(_item);
ClearItem(false);
return;
}
}
if (_item is Packsack customPacksack)
{
if (customPacksack.ItemContainer == null)
{
return;
}
customPacksack.ItemContainer.AddItem(sourceItem);
itemSlotNode.ClearItem(false);
return;
}
AddItem(sourceItem);
itemSlotNode.ClearItem(false);
AddItem(item);
}
/// <summary>
@ -337,6 +399,7 @@ public partial class ItemSlotNode : MarginContainer
if (!BackpackAllowed && item is Packsack)
{
//如果禁止放置背包,且新物品是背包
LogCat.Log("backpack_not_allowed");
return false;
}
@ -344,6 +407,7 @@ public partial class ItemSlotNode : MarginContainer
{
//If there is no item in the current item slot, it is allowed to add.
//如果当前物品槽内没物品,那么允许添加。
LogCat.Log("item_is_null");
return true;
}
@ -351,6 +415,7 @@ public partial class ItemSlotNode : MarginContainer
{
//If the item ID you want to add is different from the current item ID, disable.
//如果要添加的物品ID和当前的物品ID不一样那么禁止。
LogCat.Log("item_id_not_same");
return false;
}
@ -359,6 +424,7 @@ public partial class ItemSlotNode : MarginContainer
{
//The maximum number is exceeded and items cannot be added.
//超过了最大数量,无法添加物品。
LogCat.Log("max_quantity_exceeded");
return false;
}

View File

@ -45,6 +45,8 @@ public partial class MainMenuLoader : UiLoaderTemplate
//在发行版禁用所有日志。
LogCat.MinLogLevel = LogCat.DisableAllLogLevel;
}
LogCat.DisableLogLabel(LogCat.LogLabel.PatrolStateProcessor);
ContributorDataManager.RegisterAllContributorData();
DeathInfoGenerator.RegisterDeathInfoHandler(new SelfDeathInfoHandler());
MapGenerator.RegisterRoomInjectionProcessor(new ChanceRoomInjectionProcessor());