コード例 #1
0
        private int MaxUses(HolosignProjectorComponent component, BatteryComponent?battery = null)
        {
            if (battery == null ||
                component.ChargeUse == 0f)
            {
                return(0);
            }

            return((int)(battery.MaxCharge / component.ChargeUse));
        }
コード例 #2
0
        private int UsesRemaining(HolosignProjectorComponent component, BatteryComponent?battery = null)
        {
            if (battery == null ||
                component.ChargeUse == 0f)
            {
                return(0);
            }

            return((int)(battery.CurrentCharge / component.ChargeUse));
        }
コード例 #3
0
        private void OnUse(EntityUid uid, HolosignProjectorComponent component, UseInHandEvent args)
        {
            if (args.Handled ||
                !_cellSystem.TryGetBatteryFromSlot(uid, out var battery) ||
                !battery.TryUseCharge(component.ChargeUse))
            {
                return;
            }

            // TODO: Too tired to deal
            var holo = EntityManager.SpawnEntity(component.SignProto, Transform(args.User).Coordinates.SnapToGrid(EntityManager));

            Transform(holo).Anchored = true;

            args.Handled = true;
        }
コード例 #4
0
        private void OnExamine(EntityUid uid, HolosignProjectorComponent component, ExaminedEvent args)
        {
            // TODO: This should probably be using an itemstatus
            // TODO: I'm too lazy to do this rn but it's literally copy-paste from emag.
            _cellSystem.TryGetBatteryFromSlot(uid, out var battery);
            var charges    = UsesRemaining(component, battery);
            var maxCharges = MaxUses(component, battery);

            args.PushMarkup(Loc.GetString("emag-charges-remaining", ("charges", charges)));

            if (charges > 0 && charges == maxCharges)
            {
                args.PushMarkup(Loc.GetString("emag-max-charges"));
                return;
            }
        }