public override void ClientUpdate(Timestep timestep, Entity entity, AvatarController avatarController, EntityUniverseFacade facade)
        {
            Universe = facade;
            if (Universe == null)
            {
                return;
            }
            var fail = true;

            if (entity.Logic is ChargeableTileEntityLogic logic)
            {
                if (Universe.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);
                            }

                            NameTag.Setup(entity.Physics.Position, Constants.NameTagLowerOffset, logic.TilePower.CurrentCharge.ToString("N0") + " / " + logic.TilePower.MaxCharge.ToString("N0"), false, false, false);
                            fail = false;
                        }
                    }
                }

                if (entity.Logic is InnerCableTileEntityLogic innerLogic)
                {
                    if (ClientHook.NameTags.Contains(innerLogic.Location))
                    {
                        if (NameTag == null)
                        {
                            NameTag = ClientContext.NameTagRenderer.RegisterNameTag(entity.Id);
                        }

                        NameTag.Setup(entity.Physics.Position, Constants.NameTagLowerOffset, innerLogic.TilePower.CurrentCharge.ToString("N0") + " / " + innerLogic.TilePower.MaxCharge.ToString("N0"), false, false, false);
                        fail = false;
                    }
                }

                if (fail)
                {
                    if (NameTag != null)
                    {
                        ClientContext.NameTagRenderer.Unregister(NameTag);
                        NameTag = null;
                    }
                }
            }
        }
示例#2
0
 protected virtual void UpdateNameTag(Entity entity)
 {
     if (entity.Logic is BotEntityLogic logic)
     {
         NameTag?.Setup(entity.Physics.Position, Constants.NameTagDefaultOffset,
                        $"{logic.Owner} ({ClientContext.LanguageDatabase.GetTranslationString(logic.Mode)})", false, false,
                        true);
     }
 }
        public override void ClientUpdate(Timestep timestep, Entity entity, AvatarController avatarController, EntityUniverseFacade facade)
        {
            var fail    = true;
            var runBase = true;

            if (entity.Logic is InnerCableTileEntityLogic logic)
            {
                if (ClientHook.ShowCables.Contains(logic.Location))
                {
                    if (NameTag == null)
                    {
                        NameTag       = ClientContext.NameTagRenderer.RegisterNameTag(entity.Id);
                        ThisClassMade = true;
                    }

                    NameTag.Setup(logic.Location.ToTileCenterVector3D(), Constants.NameTagLowerOffset, ClientContext.LanguageDatabase.GetTranslationString(logic.Tile + ".name"), false, false, false);
                    fail    = false;
                    runBase = false;
                }

                if (fail)
                {
                    if (NameTag != null && ThisClassMade)
                    {
                        ClientContext.NameTagRenderer.Unregister(NameTag);
                        NameTag.Dispose();
                        NameTag       = null;
                        runBase       = false;
                        ThisClassMade = false;
                    }
                }
            }

            if (runBase)
            {
                base.ClientUpdate(timestep, entity, avatarController, facade);
            }
        }
示例#4
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;
                    }
                }
            }
        }