Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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 "&nbsp;";

            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);
        }
Exemple #4
0
 /// <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();
 }
Exemple #5
0
 /// <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();
 }