Block on events where the inventory will close after, block in general to prevent inventory scrolling during inventory message display
This commit is contained in:
@@ -235,13 +235,13 @@ public partial class Game : Node3D, IGame
|
|||||||
switch (item)
|
switch (item)
|
||||||
{
|
{
|
||||||
case BoxItem boxItem:
|
case BoxItem boxItem:
|
||||||
EnactBoxItemEffects(boxItem);
|
await EnactBoxItemEffects(boxItem);
|
||||||
break;
|
break;
|
||||||
case ConsumableItem consumableItem:
|
case ConsumableItem consumableItem:
|
||||||
EnactConsumableItemEffects(consumableItem);
|
EnactConsumableItemEffects(consumableItem);
|
||||||
break;
|
break;
|
||||||
case EffectItem effectItem:
|
case EffectItem effectItem:
|
||||||
EnactEffectItemEffects(effectItem);
|
await EnactEffectItemEffects(effectItem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
RemoveItemOrSubtractFromItemCount(item);
|
RemoveItemOrSubtractFromItemCount(item);
|
||||||
@@ -465,13 +465,14 @@ public partial class Game : Node3D, IGame
|
|||||||
|
|
||||||
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
|
private void FinishedLoadingSaveFile() => EmitSignal(SignalName.SaveFileLoaded);
|
||||||
|
|
||||||
private void EnactBoxItemEffects(BoxItem boxItem)
|
private async Task EnactBoxItemEffects(BoxItem boxItem)
|
||||||
{
|
{
|
||||||
switch (boxItem.ItemTag)
|
switch (boxItem.ItemTag)
|
||||||
{
|
{
|
||||||
case ItemTag.DamagesPlayer:
|
case ItemTag.DamagesPlayer:
|
||||||
_effectService.DamagesPlayer(boxItem.Stats.DamageToPlayer);
|
_effectService.DamagesPlayer(boxItem.Stats.DamageToPlayer);
|
||||||
InventoryEventNotification.Invoke($"{boxItem.Stats.DamageToPlayer} damage done to self.");
|
InventoryEventNotification.Invoke($"{boxItem.Stats.DamageToPlayer} damage done to self.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case ItemTag.ContainsAccessory:
|
case ItemTag.ContainsAccessory:
|
||||||
@@ -560,6 +561,7 @@ public partial class Game : Node3D, IGame
|
|||||||
ThrowItem(item);
|
ThrowItem(item);
|
||||||
_player.Inventory.Items.Clear();
|
_player.Inventory.Items.Clear();
|
||||||
InventoryEventNotification.Invoke($"All items have been ejected from inventory.");
|
InventoryEventNotification.Invoke($"All items have been ejected from inventory.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -600,7 +602,7 @@ public partial class Game : Node3D, IGame
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EnactEffectItemEffects(EffectItem effectItem)
|
private async Task EnactEffectItemEffects(EffectItem effectItem)
|
||||||
{
|
{
|
||||||
switch (effectItem.UsableItemTag)
|
switch (effectItem.UsableItemTag)
|
||||||
{
|
{
|
||||||
@@ -608,22 +610,26 @@ public partial class Game : Node3D, IGame
|
|||||||
_effectService.TeleportEnemiesToCurrentRoom(GetTree().GetNodesInGroup("enemy").OfType<IEnemy>().ToList());
|
_effectService.TeleportEnemiesToCurrentRoom(GetTree().GetNodesInGroup("enemy").OfType<IEnemy>().ToList());
|
||||||
SfxDatabase.Instance.Play(SoundEffect.RecallEnemies);
|
SfxDatabase.Instance.Play(SoundEffect.RecallEnemies);
|
||||||
InventoryEventNotification.Invoke($"All enemies have been summoned.");
|
InventoryEventNotification.Invoke($"All enemies have been summoned.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
_player.PlaySpellFX(SpellFXEnum.DivinityRecall);
|
_player.PlaySpellFX(SpellFXEnum.DivinityRecall);
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.KillHalfEnemiesInRoom:
|
case UsableItemTag.KillHalfEnemiesInRoom:
|
||||||
_effectService.KillHalfEnemiesInRoom();
|
_effectService.KillHalfEnemiesInRoom();
|
||||||
InventoryEventNotification.Invoke($"The balance has been achieved.");
|
InventoryEventNotification.Invoke($"The balance has been achieved.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.TurnAllEnemiesIntoHealingItem:
|
case UsableItemTag.TurnAllEnemiesIntoHealingItem:
|
||||||
_effectService.TurnAllEnemiesInRoomIntoHealingItem();
|
_effectService.TurnAllEnemiesInRoomIntoHealingItem();
|
||||||
InventoryEventNotification.Invoke($"Enemies in current room have been converted.");
|
InventoryEventNotification.Invoke($"Enemies in current room have been converted.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.HealsAllInRoomToMaxHP:
|
case UsableItemTag.HealsAllInRoomToMaxHP:
|
||||||
_effectService.HealAllEnemiesAndPlayerInRoomToFull();
|
_effectService.HealAllEnemiesAndPlayerInRoomToFull();
|
||||||
InventoryEventNotification.Invoke($"All present have been renewed.");
|
InventoryEventNotification.Invoke($"All present have been renewed.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.AbsorbHPFromAllEnemiesInRoom:
|
case UsableItemTag.AbsorbHPFromAllEnemiesInRoom:
|
||||||
@@ -631,11 +637,13 @@ public partial class Game : Node3D, IGame
|
|||||||
if (hpAbsorbed == 0)
|
if (hpAbsorbed == 0)
|
||||||
{
|
{
|
||||||
InventoryEventNotification.Invoke($"No enemies present to absorb from or invalid location.");
|
InventoryEventNotification.Invoke($"No enemies present to absorb from or invalid location.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_player.HealthComponent.Heal(hpAbsorbed);
|
_player.HealthComponent.Heal(hpAbsorbed);
|
||||||
InventoryEventNotification.Invoke($"Enemies have surrendered {hpAbsorbed} to you.");
|
InventoryEventNotification.Invoke($"Enemies have surrendered {hpAbsorbed} to you.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
_player.PlaySpellFX(SpellFXEnum.Kyuuketsuki);
|
_player.PlaySpellFX(SpellFXEnum.Kyuuketsuki);
|
||||||
break;
|
break;
|
||||||
@@ -643,11 +651,13 @@ public partial class Game : Node3D, IGame
|
|||||||
case UsableItemTag.DealElementalDamageToAllEnemiesInRoom:
|
case UsableItemTag.DealElementalDamageToAllEnemiesInRoom:
|
||||||
_effectService.DealElementalDamageToAllEnemiesInRoom(effectItem.Stats.ElementalDamageType);
|
_effectService.DealElementalDamageToAllEnemiesInRoom(effectItem.Stats.ElementalDamageType);
|
||||||
InventoryEventNotification.Invoke($"All enemies present have taken {effectItem.Stats.ElementalDamageType} to you.");
|
InventoryEventNotification.Invoke($"All enemies present have taken {effectItem.Stats.ElementalDamageType} to you.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.SwapHPAndVT:
|
case UsableItemTag.SwapHPAndVT:
|
||||||
_effectService.SwapHPandVT();
|
_effectService.SwapHPandVT();
|
||||||
InventoryEventNotification.Invoke($"HP and VT have been traded.");
|
InventoryEventNotification.Invoke($"HP and VT have been traded.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.RaiseCurrentWeaponAttack:
|
case UsableItemTag.RaiseCurrentWeaponAttack:
|
||||||
@@ -696,6 +706,7 @@ public partial class Game : Node3D, IGame
|
|||||||
InventoryEventNotification.Invoke($"Moved to exit room.");
|
InventoryEventNotification.Invoke($"Moved to exit room.");
|
||||||
else
|
else
|
||||||
InventoryEventNotification.Invoke($"Unable to locate exit room.");
|
InventoryEventNotification.Invoke($"Unable to locate exit room.");
|
||||||
|
await ToSignal(GetTree().CreateTimer(2f), "timeout");
|
||||||
GameRepo.CloseInventory();
|
GameRepo.CloseInventory();
|
||||||
break;
|
break;
|
||||||
case UsableItemTag.IncreaseAttack:
|
case UsableItemTag.IncreaseAttack:
|
||||||
|
|||||||
@@ -81,6 +81,12 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
|||||||
|
|
||||||
public override void _Input(InputEvent @event)
|
public override void _Input(InputEvent @event)
|
||||||
{
|
{
|
||||||
|
if (_blocking)
|
||||||
|
{
|
||||||
|
GetViewport().SetInputAsHandled();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var validSelectableItems = _player.Inventory.Items.ToList();
|
var validSelectableItems = _player.Inventory.Items.ToList();
|
||||||
|
|
||||||
if (Input.IsActionJustPressed(GameInputs.MoveUp) && _currentlySelected != null && _currentlySelected.Item.Value != validSelectableItems.First())
|
if (Input.IsActionJustPressed(GameInputs.MoveUp) && _currentlySelected != null && _currentlySelected.Item.Value != validSelectableItems.First())
|
||||||
|
|||||||
Reference in New Issue
Block a user