public static ITileWithPower GetPowerForTile(this object target, EntityUniverseFacade facade) { if (target is ITileWithPower power) { return(power); } if (target is ChargeableTileStateEntityLogic logic) { var id = logic.GetOwner(); if (id == EntityId.NullEntityId) { return(null); } if (facade.TryGetEntity(id, out var entity)) { if (entity.Logic is ITileWithPower tilePower) { return(tilePower); } } } return(null); }
public override void PostUpdate(Timestep timestep, EntityUniverseFacade entityUniverseFacade) { if (!entityUniverseFacade.TryGetEntity(Owner, out _)) { Entity.SetRemoved(); entityUniverseFacade.RemoveEntity(Entity.Id); } }
public void Invoke(PlayerEntityLogic logic, Entity entity, Blob config, Timestep timestep, EntityUniverseFacade facade) { string message = config.GetString("message"); Color color = new Color() { PackedValue = (uint)config.GetLong("color") }; float scale = (float)config.GetDouble("scale"); BmFontAlign align = (BmFontAlign)config.GetLong("align"); EntityId id = config.GetLong("id"); Entity ent = default(Entity); if (facade.TryGetEntity(id, out ent) && ent.TileStateEntityLogic != null) { BetterSignTileStateEntityLogic entLogic = ent.TileStateEntityLogic as BetterSignTileStateEntityLogic; entLogic.ChangeSign(message, color, scale, align); } }
public override void Control(Entity entity, EntityUniverseFacade facade, ControlState main, ControlState alt) { //if (alt.DownClick) { // if (_mode == Mode.PickUp) { // _mode = Mode.Power; // } else { // _mode = Mode.PickUp; // } // entity.Inventory.ItemStoreNeedsStorage(); //} if (!main.DownClick) { return; } if (_mode == Mode.Rotate) { if (entity.PlayerEntityLogic.LookingAtTile(out var target, out _)) { if (facade.ReadTile(target, TileAccessFlags.SynchronousWait, out var tile)) { facade.PlaceTile(entity, target, tile.Configuration.MakeTile(tile.Configuration.BuildRotationVariant(tile.Configuration.Rotation(0))), TileAccessFlags.SynchronousWait); } } } else if (_mode == Mode.PickUp) { if (entity.PlayerEntityLogic.LookingAtTile(out var target, out _)) { if (facade.ReadTile(target, TileAccessFlags.SynchronousWait, out var tile)) { if (tile.Configuration.Components.Contains <WrenchableComponent>()) { if (facade.TryFetchTileStateEntityLogic(target, TileAccessFlags.SynchronousWait, out var logic)) { if (logic is ChargeableTileStateEntityLogic chargeable) { if (facade.TryGetEntity(chargeable.GetOwner(), out var owner)) { if (owner.Logic is ITileWithPower tileWithPower) { tileWithPower.ActiveNameTag = false; } facade.RemoveEntity(chargeable.GetOwner()); } facade.RemoveEntity(chargeable.Entity.Id); } } var destructor = DestructionEntityBuilder.Spawn(entity, target, facade, ""); destructor.AttemptPickup(); destructor.EnqueueDeferredDestructionQueue(facade.Step, target, tile); } } } } }