Overhaul item and inventory and clean up bits and pieces
This commit is contained in:
@@ -7,7 +7,6 @@ using Chickensoft.SaveFileBuilder;
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using Zennysoft.Game.Abstractions;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
@@ -158,9 +157,7 @@ public partial class Game : Node3D, IGame
|
||||
GameState.Set(_player);
|
||||
GameState.Set(_map);
|
||||
GameState.Set(InGameUI);
|
||||
GameRepo.Resume();
|
||||
|
||||
InGameUI.Show();
|
||||
HandleGameLogic();
|
||||
GameState.Start();
|
||||
this.Provide();
|
||||
@@ -189,6 +186,8 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
GameRepo.IsPaused.Sync += IsPaused_Sync;
|
||||
InGameUI.PlayerInfoUI.Activate();
|
||||
InGameUI.Show();
|
||||
GameRepo.Resume();
|
||||
}
|
||||
|
||||
private void GameRepo_EnemyDied(IEnemy obj)
|
||||
@@ -210,14 +209,13 @@ public partial class Game : Node3D, IGame
|
||||
_effectService = new EffectService(this, _player, _map);
|
||||
_player.Activate();
|
||||
await _map.LoadFloor();
|
||||
GameLoaded?.Invoke();
|
||||
}
|
||||
|
||||
public async Task Save() => await SaveFile.Save();
|
||||
|
||||
public void FloorExitReached() => GameState.Input(new GameState.Input.FloorExitEntered());
|
||||
|
||||
public async Task UseItem(InventoryItem item)
|
||||
public async Task UseItem(IBaseInventoryItem item)
|
||||
{
|
||||
if (item.ItemTag == ItemTag.MysteryItem)
|
||||
_effectService.RerollItem(item);
|
||||
@@ -234,13 +232,10 @@ public partial class Game : Node3D, IGame
|
||||
EnactEffectItemEffects(effectItem);
|
||||
break;
|
||||
}
|
||||
|
||||
await ToSignal(GetTree().CreateTimer(0.3f), "timeout");
|
||||
|
||||
RemoveItemOrSubtractFromItemCount(item);
|
||||
}
|
||||
|
||||
public void DropItem(InventoryItem item)
|
||||
public void DropItem(IBaseInventoryItem item)
|
||||
{
|
||||
var droppedScene = GD.Load<PackedScene>("res://src/items/dropped/DroppedItem.tscn");
|
||||
var dropped = droppedScene.Instantiate<DroppedItem>();
|
||||
@@ -250,7 +245,7 @@ public partial class Game : Node3D, IGame
|
||||
_player.Inventory.Remove(item);
|
||||
}
|
||||
|
||||
public void SetItem(InventoryItem item)
|
||||
public void SetItem(IBaseInventoryItem item)
|
||||
{
|
||||
var setScene = GD.Load<PackedScene>("res://src/items/misc/SetItem.tscn");
|
||||
var setItem = setScene.Instantiate<SetItem>();
|
||||
@@ -259,7 +254,7 @@ public partial class Game : Node3D, IGame
|
||||
_player.Inventory.Remove(item);
|
||||
}
|
||||
|
||||
public void ThrowItem(InventoryItem item)
|
||||
public void ThrowItem(IBaseInventoryItem item)
|
||||
{
|
||||
var thrownScene = GD.Load<PackedScene>("res://src/items/thrown/ThrownItem.tscn");
|
||||
var thrown = thrownScene.Instantiate<ThrownItem>();
|
||||
@@ -399,7 +394,10 @@ public partial class Game : Node3D, IGame
|
||||
InGameUI.InventoryMenu.SetProcessInput(false);
|
||||
}
|
||||
|
||||
private async void LoadLevel() => await _map.LoadFloor();
|
||||
private async void LoadLevel()
|
||||
{
|
||||
await _map.LoadFloor();
|
||||
}
|
||||
|
||||
private void FloorClearMenu_GoToNextFloor() => GameState.Input(new GameState.Input.LoadNextFloor());
|
||||
|
||||
@@ -420,7 +418,6 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
private void UseTeleportPrompt_TeleportToNextFloor()
|
||||
{
|
||||
//_player.LookUp();
|
||||
GameState.Input(new GameState.Input.UseTeleport());
|
||||
}
|
||||
|
||||
@@ -459,10 +456,10 @@ public partial class Game : Node3D, IGame
|
||||
_player.Inventory.TryAdd(_effectService.GetRandomItemOfType<ConsumableItem>());
|
||||
break;
|
||||
case ItemTag.DropTo1HPAndGainRareItem:
|
||||
_effectService.DropTo1HPAndGainRareItem<InventoryItem>();
|
||||
_effectService.DropTo1HPAndGainRareItem<IBaseInventoryItem>();
|
||||
break;
|
||||
case ItemTag.TradeAllRandomItems:
|
||||
var newInventory = _effectService.TradeAllRandomItems<InventoryItem>(boxItem);
|
||||
var newInventory = _effectService.TradeAllRandomItems(boxItem);
|
||||
_player.Inventory.Items.Clear();
|
||||
_player.Inventory.TryAdd(boxItem);
|
||||
foreach (var item in newInventory)
|
||||
@@ -472,7 +469,7 @@ public partial class Game : Node3D, IGame
|
||||
_effectService.GetUnobtainedItem();
|
||||
break;
|
||||
case ItemTag.ContainsBasicItem:
|
||||
_effectService.GetBasicItem<InventoryItem>();
|
||||
_effectService.GetBasicItem<IBaseInventoryItem>();
|
||||
break;
|
||||
case ItemTag.UnequipAllItems:
|
||||
_player.EquipmentComponent.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);
|
||||
@@ -567,7 +564,7 @@ public partial class Game : Node3D, IGame
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveItemOrSubtractFromItemCount(InventoryItem item)
|
||||
private void RemoveItemOrSubtractFromItemCount(IBaseInventoryItem item)
|
||||
{
|
||||
if (item is IStackable stackableItem && stackableItem.Count.Value > 1)
|
||||
stackableItem.SetCount(stackableItem.Count.Value - 1);
|
||||
@@ -589,6 +586,8 @@ public partial class Game : Node3D, IGame
|
||||
private void OnFloorLoadFinished()
|
||||
{
|
||||
LoadNextLevel.Hide();
|
||||
GameLoaded?.Invoke();
|
||||
_map.FadeIn();
|
||||
}
|
||||
|
||||
private void OnQuit() => GameExitRequested?.Invoke();
|
||||
|
||||
Reference in New Issue
Block a user