/// <summary> /// insert this into the db /// </summary> /// <returns>the object with ID and other db fields set</returns> public override IData Create() { var parms = new Dictionary <string, object>(); IPathwayData returnValue = default(IPathwayData); var sql = new StringBuilder(); sql.Append("insert into [dbo].[PathwayData]([Name],[ToLocationID],[FromLocationID],[ToLocationType],[FromLocationType],[MessageToDestination],[MessageToOrigin]"); sql.Append(",[MessageToActor],[AudibleToSurroundings],[VisibleToSurroundings],[AudibleStrength],[VisibleStrength]"); sql.Append(", [DimensionalModelLength], [DimensionalModelHeight], [DimensionalModelWidth], [DimensionalModelID], [DimensionalModelMaterialCompositions])"); sql.Append(" values(@Name,@ToLocationID,@FromLocationID,@ToLocationType,@FromLocationType,@MessageToDestination,@MessageToOrigin"); sql.Append(", @MessageToActor,@AudibleToSurroundings,@VisibleToSurroundings,@AudibleStrength,@VisibleStrength"); sql.Append(", @DimensionalModelLength, @DimensionalModelHeight, @DimensionalModelWidth, @DimensionalModelID, @DimensionalModelMaterialCompositions)"); sql.Append(" select * from [dbo].[PathwayData] where ID = Scope_Identity()"); parms.Add("Name", Name); parms.Add("ToLocationID", ToLocationID); parms.Add("FromLocationID", FromLocationID); parms.Add("ToLocationType", ToLocationType); parms.Add("FromLocationType", FromLocationType); parms.Add("MessageToDestination", MessageToDestination); parms.Add("MessageToOrigin", MessageToOrigin); parms.Add("MessageToActor", MessageToActor); parms.Add("AudibleToSurroundings", AudibleToSurroundings); parms.Add("VisibleToSurroundings", VisibleToSurroundings); parms.Add("AudibleStrength", AudibleStrength); parms.Add("VisibleStrength", VisibleStrength); parms.Add("DimensionalModelLength", Model.Length); parms.Add("DimensionalModelHeight", Model.Height); parms.Add("DimensionalModelWidth", Model.Width); parms.Add("DimensionalModelID", Model.ModelBackingData.ID); parms.Add("DimensionalModelMaterialCompositions", Model.SerializeMaterialCompositions()); try { var ds = SqlWrapper.RunDataset(sql.ToString(), CommandType.Text, parms); if (ds.Rows != null) { foreach (DataRow dr in ds.Rows) { Fill(dr); returnValue = this; } } } catch (Exception ex) { LoggingUtility.LogError(ex); } return(returnValue); }
private static string RenderPathwayToAsciiForModals(IPathwayData path, long originId, MovementDirectionType directionType, IRoomData destination, bool forAdmin = false) { var returnValue = String.Empty; var asciiCharacter = Utilities.TranslateDirectionToAsciiCharacter(directionType); if (!forAdmin) return " "; if (path != null) destination = BackingDataCache.Get<IRoomData>(int.Parse(path.ToLocationID)); long destinationId = -1; var destinationName = String.Empty; if (destination != null) { destinationName = destination.Name; destinationId = destination.ID; } if (path != null) { returnValue = String.Format("<a href='#' class='editData pathway AdminEditPathway' pathwayId='{0}' fromRoom='{3}' toRoom='{4}' title='Edit - {5} path to {1}' data-id='{0}'>{2}</a>", path.ID, destinationName, asciiCharacter, originId, destinationId, directionType.ToString()); } else { var roomString = String.Format("Add - {0} path and room", directionType.ToString()); if (!string.IsNullOrWhiteSpace(destinationName)) roomString = String.Format("Add {0} path to {1}", directionType.ToString(), destinationName); returnValue = String.Format("<a href='#' class='addData pathway AdminAddPathway' pathwayId='-1' fromRoom='{0}' toRoom='{3}' data-direction='{1}' title='{2}'>+</a>", originId, Utilities.TranslateDirectionToDegrees(directionType), roomString, destinationId); } return returnValue; }
/// <summary> /// Translates output text with entity variables (he, she, it, names, directions, etc) /// </summary> /// <param name="message">the text to translate</param> /// <returns>translated text</returns> public static string TranslateEntityVariables(string message, Dictionary <MessagingTargetType, IEntity[]> entities) { foreach (KeyValuePair <MessagingTargetType, IEntity[]> kvp in entities) { IEntity thing = null; if (kvp.Value.Length.Equals(1)) { if (kvp.Value[0] == null) { continue; } thing = kvp.Value[0]; } switch (kvp.Key) { case MessagingTargetType.Actor: message = message.Replace("$A$", thing.DataTemplate.Name); break; case MessagingTargetType.DestinationLocation: message = message.Replace("$D$", thing.DataTemplate.Name); break; case MessagingTargetType.OriginLocation: message = message.Replace("$O$", thing.DataTemplate.Name); break; case MessagingTargetType.Subject: message = message.Replace("$S$", thing.DataTemplate.Name); break; case MessagingTargetType.Target: message = message.Replace("$T$", thing.DataTemplate.Name); break; case MessagingTargetType.GenderPronoun: if (!thing.GetType().GetInterfaces().Contains(typeof(IGender))) { break; } IGender chr = (IGender)thing; message = message.Replace("$G$", chr.Gender); break; case MessagingTargetType.AmountOfSubject: message = message.Replace("$#S$", kvp.Value.Length.ToString()); break; case MessagingTargetType.AmountOfTarget: message = message.Replace("$#T$", kvp.Value.Length.ToString()); break; case MessagingTargetType.Direction: case MessagingTargetType.ReverseDirection: if (!thing.GetType().GetInterfaces().Contains(typeof(IPathway))) { break; } IPathwayData pathData = (IPathwayData)thing.DataTemplate; message = message.Replace("$DIR$", TranslateDegreesToDirection(pathData.DegreesFromNorth, kvp.Key == MessagingTargetType.ReverseDirection).ToString()); break; } } return(message); }
/// <summary> /// News up an entity with its backing data /// </summary> /// <param name="backingStore">the backing data</param> public Pathway(IPathwayData backingStore) { Enter = new MessageCluster(); DataTemplateId = backingStore.ID; GetFromWorldOrSpawn(); }
/// <summary> /// News up an entity with its backing data /// </summary> /// <param name="backingStore">the backing data</param> public Pathway(IPathwayData backingStore) { Enter = new MessageCluster(); DataTemplate = backingStore; GetFromWorldOrSpawn(); }