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); } } } } }