|
|
|
@ -1,20 +1,16 @@
|
|
|
|
using Babushka.scripts.CSharp.Common.Savegame;
|
|
|
|
using Babushka.scripts.CSharp.Common.Savegame;
|
|
|
|
|
|
|
|
using Babushka.scripts.CSharp.GameEntity.Entities;
|
|
|
|
|
|
|
|
using Babushka.scripts.CSharp.GameEntity.LoadSave;
|
|
|
|
using Godot;
|
|
|
|
using Godot;
|
|
|
|
using Godot.Collections;
|
|
|
|
using Godot.Collections;
|
|
|
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Babushka.scripts.CSharp.Common.Inventory;
|
|
|
|
namespace Babushka.scripts.CSharp.Common.Inventory;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
public partial class ItemOnGround2D : PositionalEntity
|
|
|
|
{
|
|
|
|
{
|
|
|
|
private ItemInstance _itemInstance;
|
|
|
|
private ItemInstance _itemInstance;
|
|
|
|
|
|
|
|
|
|
|
|
[Export] public bool IsActive = true;
|
|
|
|
|
|
|
|
[Export] private bool _infiniteSupply = false;
|
|
|
|
|
|
|
|
[Export] private int _finiteSupply = 1;
|
|
|
|
|
|
|
|
[Export] private bool _saveToDisk = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private int pickUpCounter = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Signal] public delegate void SuccessfulPickUpEventHandler();
|
|
|
|
[Signal] public delegate void SuccessfulPickUpEventHandler();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -34,16 +30,12 @@ public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
|
|
|
|
|
|
|
|
public override void _Ready()
|
|
|
|
public override void _Ready()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
LoadFromSaveData();
|
|
|
|
|
|
|
|
UpdateVisuals();
|
|
|
|
UpdateVisuals();
|
|
|
|
_pickupErrorLabel.Text = "";
|
|
|
|
_pickupErrorLabel.Text = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void TryPickUp()
|
|
|
|
public void TryPickUp()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!IsActive)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = InventoryManager.Instance.CollectItem(itemInstance.Clone());
|
|
|
|
var result = InventoryManager.Instance.CollectItem(itemInstance.Clone());
|
|
|
|
EmitSignal(SignalName.SuccessfulPickUp);
|
|
|
|
EmitSignal(SignalName.SuccessfulPickUp);
|
|
|
|
if (result == InventoryActionResult.Success)
|
|
|
|
if (result == InventoryActionResult.Success)
|
|
|
|
@ -58,16 +50,7 @@ public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
|
|
|
|
|
|
|
|
private void Pickup()
|
|
|
|
private void Pickup()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!_infiniteSupply)
|
|
|
|
// remove from entity manager
|
|
|
|
{
|
|
|
|
|
|
|
|
pickUpCounter++;
|
|
|
|
|
|
|
|
if (pickUpCounter >= _finiteSupply)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
QueueFree();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UpdateSaveData();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void FailToPickup()
|
|
|
|
private void FailToPickup()
|
|
|
|
@ -80,9 +63,6 @@ public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
|
|
|
|
|
|
|
|
public void UpdateVisuals()
|
|
|
|
public void UpdateVisuals()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!IsActive)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_iconSprite.Texture = itemInstance?.blueprint?.icon;
|
|
|
|
_iconSprite.Texture = itemInstance?.blueprint?.icon;
|
|
|
|
if (_iconSprite.Texture == null)
|
|
|
|
if (_iconSprite.Texture == null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -94,7 +74,20 @@ public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// todo: What do we do with instances that are created at runtime?
|
|
|
|
protected override void LoadEntity(JObject json)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
base.LoadEntity(json);
|
|
|
|
|
|
|
|
_itemInstance.LoadFromJson(json.GetObject("item"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override void SaveEntity(JObject json)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
base.SaveEntity(json);
|
|
|
|
|
|
|
|
json["item"] = _itemInstance.SaveToJson();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// old save
|
|
|
|
|
|
|
|
/*
|
|
|
|
public void UpdateSaveData()
|
|
|
|
public void UpdateSaveData()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!_saveToDisk)
|
|
|
|
if (!_saveToDisk)
|
|
|
|
@ -157,5 +150,5 @@ public partial class ItemOnGround2D : Node, ISaveable
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|