public IGrabableItem CreateItem(ItemData itemData, Tile parentTile) { CurrentTile = parentTile; itemData.Processed = true; descriptor = builder.Data.GetItemDescriptor(itemData.ObjectID.Category, ((GrabableItemData)itemData).ItemTypeIndex); return(itemData.CreateItem(this)); }
public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList<ActuatorItemData> matchedSequence) { descriptor = FindChampionDescriptor(context).Split('|'); var champion = new Champion(context.ChampionToken, context.CreatureToken.ToEnumerable(), this) { Name = descriptor[0], Title = descriptor[1] + descriptor[2], IsMale = descriptor[3] == "M", }; var items = context.WallActuatorCreator.CurrentGrabableItems.Select(k => context.ItemCreator.CreateItem(k, currentTile)); var res = new ChampoinActuator(context.GetWallPosition(matchedSequence[0].TilePosition, context.WallActuatorCreator.CurrentTile), champion); ((CubeGraphic)res.Graphics).Texture = context.WallTextures[matchedSequence[0].Decoration - 1]; return res; }
public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList <ActuatorItemData> matchedSequence) { descriptor = FindChampionDescriptor(context).Split('|'); var champion = new Champion(context.ChampionToken, context.CreatureToken.ToEnumerable(), this) { Name = descriptor[0], Title = descriptor[1] + descriptor[2], IsMale = descriptor[3] == "M", }; var items = context.WallActuatorCreator.CurrentGrabableItems.Select(k => context.ItemCreator.CreateItem(k, currentTile)); var res = new ChampoinActuator(context.GetWallPosition(matchedSequence[0].TilePosition, context.WallActuatorCreator.CurrentTile), champion); ((CubeGraphic)res.Graphics).Texture = context.WallTextures[matchedSequence[0].Decoration - 1]; return(res); }
public virtual async Task <Tuple <Tile, MapDirection> > GetTargetTile(Point?target, MapDirection requesteDirection) { MapDirection invertMessageDirection = requesteDirection; if (target == null) { return(null); } await tileInitialized.Task; Tile tile = null; TilePositions.TryGetValue(target.Value, out tile); if (tile == null) { var targetTileData = CurrentMap.GetTileData(target.Value); if (targetTileData.Actuators.Any() && targetTileData.Actuators.All(x => x.ActuatorType == 5 || x.ActuatorType == 6)) { throw new InvalidOperationException("this should not be possible"); } else if (targetTileData.Actuators.Any() && !targetTileData.Actuators.All(x => x.ActuatorType != 5 && x.ActuatorType != 6)) { throw new InvalidOperationException("mixture of wall and virtual actuators"); } else {//find floor tile where is wall actuator put & thus invert message direction invertMessageDirection = requesteDirection.Opposite; TilePositions.TryGetValue(target.Value + requesteDirection.RelativeShift, out tile); if (tile == null) { throw new InvalidOperationException(); } } } return(Tuple.Create(tile, invertMessageDirection)); }