mirror of
https://github.com/DeltaV-Station/Delta-v.git
synced 2026-10-04 13:27:30 +00:00
* add reputation system * add contracts button to PDA * give traitors contracts * add GetRandomObjective to SharedObjectivesSystem * add TryRemoveObjective overload * add everything needed for reputation store and objectives * "ui" * giant uplink reputation tagging * prevent buying reputation-locked gear with uplink implant * :trollface: * more ui stuff * :trollface: * :trollface: * remove default objectives * :trollface: * UI fixes * stuff * objective component changes * add offerings and stuff to yml * make some objectives work * make rcd objective real * more ui fix * :trollface: * ui usable * bunch of low risk objectives * syndie jail wip * more wip * massive amount of work * add bad guidebooks * prevent fultoning anchored things * fixes * disable claim buttons when no slots are open * :trollface: * :trollface: * :trollface: * update ui when a slot unlocks * move rejecting to offerings, remove rescan (automatic now) * add verb to attach fulton, fix * dont get objective to ransom/kill someone you already ransomed * make offering slots random + maximum count in rep level * :trollface: * rela * update syndie jail * more syndie jail update * make marshal real * fix * fix power room power * remove access from timer * :trollface: * engine * allow syndicate items on syndie jail * add ransom ui * update map loading * add ransom purchasing to cargo request console * warn not error for loading * ui fixes * final fixy * mg book fix * final fixy II * remove redundant Announcement word * more [] * end ransom when leaving the jail * :trollface: * 10 tc for roundstart traitors * make nuke core objective work for traitor * guidebook gaming * early merge of guidebook comments * update bunch of objectives * add min reputation to kill fellow traitor * guidebook gaming * evil * giant stuff * dont offer dupe objectives * evil * pronoun * fix * grr * blacklist assist and DAGD from assist objective * grr * fix linter * remove objectives from traitor rule test * nuke disk anti-troll * evil test * add objectives test to find bad objective groups * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixy * fix * fix stuff * reword ransom announcement * pro * goida --------- Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
74 lines
1.6 KiB
C#
74 lines
1.6 KiB
C#
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Shared.Timing;
|
|
|
|
namespace Content.Client._DV.Reputation.UI;
|
|
|
|
/// <summary>
|
|
/// Label that updates for an unlock timer automatically.
|
|
/// </summary>
|
|
public sealed class UnlockLabel : Label
|
|
{
|
|
[Dependency] private readonly IGameTiming _timing = default!;
|
|
|
|
public event Action? OnUnlock;
|
|
|
|
private TimeSpan? _nextUnlock;
|
|
private TimeSpan _nextUpdate;
|
|
|
|
public TimeSpan? NextUnlock
|
|
{
|
|
get
|
|
{
|
|
return _nextUnlock;
|
|
}
|
|
set
|
|
{
|
|
_nextUnlock = value;
|
|
_nextUpdate = _timing.CurTime;
|
|
UpdateUnlock();
|
|
}
|
|
}
|
|
|
|
public bool IsLocked => Visible;
|
|
|
|
public UnlockLabel()
|
|
{
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
Visible = false;
|
|
}
|
|
|
|
private void UpdateUnlock()
|
|
{
|
|
if (_nextUnlock is not {} next)
|
|
return;
|
|
|
|
var now = _timing.CurTime;
|
|
if (now >= next)
|
|
{
|
|
// unlocked now
|
|
_nextUnlock = null;
|
|
Visible = false;
|
|
OnUnlock?.Invoke();
|
|
return;
|
|
}
|
|
|
|
Visible = true;
|
|
var remaining = next - now;
|
|
var time = $"{remaining.Minutes:00}:{remaining.Seconds:00}";
|
|
Text = Loc.GetString("contract-next-unlock", ("time", time));
|
|
}
|
|
|
|
protected override void FrameUpdate(FrameEventArgs args)
|
|
{
|
|
base.FrameUpdate(args);
|
|
|
|
var now = _timing.CurTime;
|
|
if (now < _nextUpdate)
|
|
return;
|
|
|
|
_nextUpdate = now + TimeSpan.FromSeconds(1);
|
|
UpdateUnlock();
|
|
}
|
|
}
|