42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
|
|
using Content.Shared._White.CoinDice;
|
|||
|
|
using Content.Shared.Popups;
|
|||
|
|
using JetBrains.Annotations;
|
|||
|
|
using Robust.Shared.Audio;
|
|||
|
|
using Robust.Shared.Audio.Systems;
|
|||
|
|
using Robust.Shared.Random;
|
|||
|
|
|
|||
|
|
namespace Content.Server._White.CoinDice;
|
|||
|
|
|
|||
|
|
[UsedImplicitly]
|
|||
|
|
public sealed class CoinDiceSystem : SharedCoinDiceSystem
|
|||
|
|
{
|
|||
|
|
[Dependency] private readonly IRobustRandom _random = default!;
|
|||
|
|
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
|||
|
|
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
|||
|
|
|
|||
|
|
public override void Roll(EntityUid uid, CoinDiceComponent? die = null)
|
|||
|
|
{
|
|||
|
|
if (!Resolve(uid, ref die))
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
var roll = _random.Next(1, die.Sides + 1);
|
|||
|
|
SetCurrentSide(uid, roll, die);
|
|||
|
|
var coindiceResult = "";
|
|||
|
|
switch (die.CurrentValue)
|
|||
|
|
{
|
|||
|
|
case 1:
|
|||
|
|
coindiceResult = "орёл";
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
coindiceResult = "решка";
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
coindiceResult = "ребро";
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_popup.PopupEntity(Loc.GetString("coindice-component-on-roll-land", ("die", uid), ("currentSide", coindiceResult)), uid);
|
|||
|
|
_audio.PlayPvs(die.Sound, uid);
|
|||
|
|
}
|
|||
|
|
}
|