private void Update(ResourceContext ctx, Action <ResourceContext, TimeSpan> onTick, TimeSpan timeLeft) { UpdateResourceGain(ctx, () => { onTick?.Invoke(ctx, timeLeft); AddDrop(ctx.MiningLevel, itemDropped => { ctx.AddItem(itemDropped); }); ++ctx.Ore; }); }