necrourn budget [N]: учёт и лимит общего бюджета шагов урн; necrourn info - состояние работы урны
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ecae8eb6a7
commit
054897eb78
@@ -34,18 +34,54 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Взять одно дело из бюджета кадра.</summary>
|
||||
public static bool TryTakeStep()
|
||||
/// <summary>Взять одно дело из бюджета кадра. _who - урна (учёт для necrourn budget).</summary>
|
||||
public static bool TryTakeStep(Vector3i _who)
|
||||
{
|
||||
NewFrame();
|
||||
if (_used >= StepsPerFrame)
|
||||
{
|
||||
Count(_denied, _who);
|
||||
return false;
|
||||
}
|
||||
_used++;
|
||||
Count(_granted, _who);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Учёт бюджета (23.10: сборщики 600 с не получили ни одного шага, логист рядом - получал): кому дали, кому отказали.
|
||||
static readonly Dictionary<Vector3i, int> _granted = new Dictionary<Vector3i, int>();
|
||||
static readonly Dictionary<Vector3i, int> _denied = new Dictionary<Vector3i, int>();
|
||||
static float _countSince;
|
||||
static int _frames0;
|
||||
|
||||
static void Count(Dictionary<Vector3i, int> _d, Vector3i _who)
|
||||
{
|
||||
_d.TryGetValue(_who, out int n);
|
||||
_d[_who] = n + 1;
|
||||
}
|
||||
|
||||
/// <summary>Сводка с прошлого вызова и сброс (команда necrourn budget).</summary>
|
||||
public static string Budget()
|
||||
{
|
||||
float sec = Time.time - _countSince;
|
||||
int frames = Time.frameCount - _frames0;
|
||||
string s = "за " + sec.ToString("0") + " с, кадров " + frames + ", лимит " + StepsPerFrame + "/кадр; дано:";
|
||||
foreach (KeyValuePair<Vector3i, int> kv in _granted)
|
||||
{
|
||||
s += " " + kv.Key + "=" + kv.Value;
|
||||
}
|
||||
s += "; отказано:";
|
||||
foreach (KeyValuePair<Vector3i, int> kv in _denied)
|
||||
{
|
||||
s += " " + kv.Key + "=" + kv.Value;
|
||||
}
|
||||
_granted.Clear();
|
||||
_denied.Clear();
|
||||
_countSince = Time.time;
|
||||
_frames0 = Time.frameCount;
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>Идёт ли кровавый прилив (раз за кадр).</summary>
|
||||
public static bool Tide
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user