У меня есть этот класс Item:
public class Item
{
public string Name;
public Entity ItemOwner;
public Action<Entity> effect;
public Item(string name, Action<Entity> effect)
{
Name = name;
this.effect = effect;
}
public void Use()
{
effect(ItemOwner);
}
}
и этот класс Entity:
public class Entity
{
public string Name;
public float Health;
public List<Item> Items = new List<Item>();
public bool CanDie;
public bool Dead;
public Entity(string name, float health, bool canDie)
{
Name = name;
Health = health;
CanDie = canDie;
}
public void UseItem(string name)
{
foreach (var item in Items)
{
if (item.Name == name)
{
item.Use();
Items.Remove(item);
break;
}
}
}
}
Я хочу знать, возможно ли установить EntityOwner для данного объекта, когда это предмет помещен в инвентарь сущности.
что я могу сделать в данный момент, это «Основная программа»:
Entity Player = new Entity("Dave", 50, true);
Item Potion = new Item("Healing Potion", ItemOwner => ItemOwner.Health += 25);
Potion.ItemOwner = Player;
Player.Items.Add(Potion);
Player.UseItem("Healing Potion");
Я хочу этот конкретный c фрагмент кода:
Potion.ItemOwner = Player;
Срабатывать, когда предмет помещается в инвентарь сущности.
Возможно ли это как-нибудь?