public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList<ActuatorItemData> matchedSequence) { var data = matchedSequence[0]; var constrain = new GrabableItemConstrain(context.GetItemFactory(data.Data), invertConstraion: false); var item = context.WallActuatorCreator.CurrentGrabableItems.Select(k => new LegacyItemCreator(context).CreateItem(k, currentTile)).SingleOrDefault(); return new ExchangerActuator(context.GetWallPosition(data.TilePosition, context.WallActuatorCreator.CurrentTile), item, constrain, data.IsOnceOnly) { DecorationActivated = context.WallTextures[data.Decoration - 1], DecorationDeactived = context.WallTextures[matchedSequence[1].Decoration - 1] }; }
public bool PrepareActuatorData(ActuatorItemData i, out Tile targetTile, out IConstrain constrain, out Texture2D decoration, bool putOnWall) { targetTile = GetTargetTile(i); constrain = null; decoration = null; if (i.Data > 0) constrain = new GrabableItemConstrain(GetItemFactory(i.Data), i.IsRevertable); else constrain = new NoConstrain(); if (i.IsLocal) throw new NotSupportedException("yet"); decoration = GetTexture(i, putOnWall); return true; }