Exemple #1
0
        public override void Control(Entity entity, EntityUniverseFacade facade, ControlState main, ControlState alt)
        {
            if (!main.DownClick)
            {
                return;
            }

            if (entity.PlayerEntityLogic.LookingAtTile(out var target, out _))
            {
                if (facade.TryGetLightPower(target, out var efficiency, out var phase, out var reductions))
                {
                    var notificationParams = new NotificationParams(3);

                    notificationParams.SetString(0, efficiency + "%");
                    notificationParams.SetFloat(1, phase);
                    notificationParams.SetFloat(2, reductions);


                    var notification = GameContext.NotificationDatabase.CreateNotificationFromCode(
                        "nimbusfox.powerapi.notifications.lightInformation", facade.Step, notificationParams, true);

                    entity.PlayerEntityLogic.ShowNotification(notification);
                }
            }
        }
        public override void Update(Timestep timestep, EntityUniverseFacade entityUniverseFacade)
        {
            if (!entityUniverseFacade.TryGetLightPower(Location, out var efficiency, out _, out _))
            {
                base.Update(timestep, entityUniverseFacade, 0);
                return;
            }

            base.Update(timestep, entityUniverseFacade, efficiency);
        }
Exemple #3
0
        public override void ClientUpdate(Timestep timestep, Entity entity, AvatarController avatarController, EntityUniverseFacade facade)
        {
            var fail = true;

            if (entity.Logic is SolarPanelTileEntityLogic logic)
            {
                if (facade.ReadTile(logic.Location, TileAccessFlags.None, out var tile))
                {
                    if (tile.Configuration.Components.Select <ChargeableComponent>().Any())
                    {
                        if (ClientHook.NameTags.Contains(logic.Location))
                        {
                            if (NameTag == null)
                            {
                                NameTag = ClientContext.NameTagRenderer.RegisterNameTag(entity.Id);
                            }

                            if (_efficienyTag == null)
                            {
                                _efficienyTag = ClientContext.NameTagRenderer.RegisterNameTag(entity.Id);
                            }

                            if (_chargeTag == null)
                            {
                                _chargeTag = ClientContext.NameTagRenderer.RegisterNameTag(entity.Id);
                            }

                            if (facade.TryGetLightPower(logic.Location, out var efficiency, out _, out _))
                            {
                                var pos = Constants.NameTagLowerOffset;
                                NameTag.Setup(entity.Physics.Position, new Vector3D(pos.X, pos.Y + 0.2, pos.Z), logic.TilePower.CurrentCharge.ToString("N0") + " / " + logic.TilePower.MaxCharge.ToString("N0"), false, false, false);
                                _efficienyTag.Setup(entity.Physics.Position, new Vector3D(pos.X, pos.Y, pos.Z), efficiency + "%", false, false, false);
                                _chargeTag.Setup(entity.Physics.Position, new Vector3D(pos.X, pos.Y - 0.2, pos.Z), logic.Generated + ClientContext.LanguageDatabase.GetTranslationString("nimbusfox.powerapi.perCycle"), false, false, false);
                                fail = false;
                            }
                        }
                    }
                }

                if (fail)
                {
                    if (NameTag != null)
                    {
                        ClientContext.NameTagRenderer.Unregister(NameTag);
                        NameTag = null;
                    }

                    if (_efficienyTag != null)
                    {
                        ClientContext.NameTagRenderer.Unregister(_efficienyTag);
                        _efficienyTag = null;
                    }

                    if (_chargeTag != null)
                    {
                        ClientContext.NameTagRenderer.Unregister(_chargeTag);
                        _chargeTag = null;
                    }
                }
            }
        }