Ejemplo n.º 1
0
        private void Transform_V1(RoomData backingData, Room newEntity, XElement docRoot, bool older)
        {
            if (!older)
            {
                //We added dim mods in v1
                var dimModelLength = docRoot.Element("LiveData").Element("DimensionalModel").GetSafeAttributeValue <int>("Length");
                var dimModelHeight = docRoot.Element("LiveData").Element("DimensionalModel").GetSafeAttributeValue <int>("Height");
                var dimModelWidth  = docRoot.Element("LiveData").Element("DimensionalModel").GetSafeAttributeValue <int>("Width");

                backingData.Model = new DimensionalModel(dimModelLength, dimModelHeight, dimModelWidth);
                newEntity.Model   = backingData.Model;

                //Added medium, zone and wall materials in v1
                var mediumId = docRoot.Element("BackingData").GetSafeAttributeValue <long>("Medium");
                backingData.Medium = ReferenceWrapper.GetOne <IMaterial>(mediumId);

                var zoneId = docRoot.Element("BackingData").GetSafeAttributeValue <long>("Zone");
                backingData.ZoneAffiliation = ReferenceWrapper.GetOne <IZone>(zoneId);

                backingData.Borders = backingData.DeserializeBorders(docRoot.Element("LiveData").GetSafeElementValue("Borders"));
            }
            else //what if we're older
            {
                //Get it from the db
                var backD = DataWrapper.GetOne <RoomData>(backingData.ID);
                backingData.Model           = backD.Model;
                newEntity.Model             = backD.Model;
                backingData.Borders         = backD.Borders;
                backingData.Medium          = backD.Medium;
                backingData.ZoneAffiliation = backD.ZoneAffiliation;
            }
        }
Ejemplo n.º 2
0
        public ActionResult AddCharacter(string newName, string newSurName, string newGender, long raceId, StaffRank chosenRole = StaffRank.Player)
        {
            string message = string.Empty;
            var    userId  = User.Identity.GetUserId();
            var    model   = new ManageCharactersViewModel
            {
                authedUser = UserManager.FindById(userId)
            };

            var newChar = new Character();

            newChar.Name    = newName;
            newChar.SurName = newSurName;
            newChar.Gender  = newGender;
            var race = ReferenceWrapper.GetOne <Race>(raceId);

            if (race != null)
            {
                newChar.RaceData = race;
            }

            if (User.IsInRole("Admin"))
            {
                newChar.GamePermissionsRank = chosenRole;
            }
            else
            {
                newChar.GamePermissionsRank = StaffRank.Player;
            }

            message = model.authedUser.GameAccount.AddCharacter(newChar);

            return(RedirectToAction("ManageCharacters", new { Message = message }));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Fills a data object with data from a data row
        /// </summary>
        /// <param name="dr">the data row to fill from</param>
        public override void Fill(DataRow dr)
        {
            ID          = DataUtility.GetFromDataRow <long>(dr, "ID");
            Created     = DataUtility.GetFromDataRow <DateTime>(dr, "Created");
            LastRevised = DataUtility.GetFromDataRow <DateTime>(dr, "LastRevised");
            Name        = DataUtility.GetFromDataRow <string>(dr, "Name");

            var armsId     = DataUtility.GetFromDataRow <long>(dr, "ArmsId");
            var armsAmount = DataUtility.GetFromDataRow <short>(dr, "ArmsAmount");

            Arms = new Tuple <IInanimateData, short>(DataWrapper.GetOne <InanimateData>(armsId), armsAmount);

            var LegsId     = DataUtility.GetFromDataRow <long>(dr, "LegsId");
            var LegsAmount = DataUtility.GetFromDataRow <short>(dr, "LegsAmount");

            Legs = new Tuple <IInanimateData, short>(DataWrapper.GetOne <InanimateData>(LegsId), LegsAmount);

            var torsoId = DataUtility.GetFromDataRow <long>(dr, "Torso");

            Torso = DataWrapper.GetOne <InanimateData>(torsoId);

            var headId = DataUtility.GetFromDataRow <long>(dr, "Head");

            Head = DataWrapper.GetOne <InanimateData>(headId);

            var bodyPartJson = DataUtility.GetFromDataRow <string>(dr, "BodyParts");

            BodyParts = DeserializeBodyParts(bodyPartJson);

            DietaryNeeds = (DietType)DataUtility.GetFromDataRow <short>(dr, "DietaryNeeds");

            var bloodId = DataUtility.GetFromDataRow <long>(dr, "SanguinaryMaterial");

            SanguinaryMaterial = ReferenceWrapper.GetOne <Material>(bloodId);

            var visionLow  = DataUtility.GetFromDataRow <short>(dr, "VisionRangeLow");
            var visionHigh = DataUtility.GetFromDataRow <short>(dr, "VisionRangeHigh");

            VisionRange = new Tuple <short, short>(visionLow, visionHigh);

            var tempLow  = DataUtility.GetFromDataRow <short>(dr, "TemperatureToleranceLow");
            var tempHigh = DataUtility.GetFromDataRow <short>(dr, "TemperatureToleranceHigh");

            TemperatureTolerance = new Tuple <short, short>(tempLow, tempHigh);

            Breathes = (RespiratoryType)DataUtility.GetFromDataRow <short>(dr, "Breathes");

            TeethType = (DamageType)DataUtility.GetFromDataRow <short>(dr, "TeethType");

            var startRoomId = DataUtility.GetFromDataRow <long>(dr, "StartingLocation");

            StartingLocation = DataWrapper.GetOne <RoomData>(startRoomId);

            var recallRoomId = DataUtility.GetFromDataRow <long>(dr, "EmergencyLocation");

            EmergencyLocation = DataWrapper.GetOne <RoomData>(recallRoomId);
        }
Ejemplo n.º 4
0
        public DimensionalModel(int length, int height, int width, long backingDataId, string compJson)
        {
            Length      = length;
            Height      = height;
            Width       = width;
            Composition = DeserializeMaterialCompositions(compJson);

            ModelBackingData = ReferenceWrapper.GetOne <DimensionalModelData>(backingDataId);
        }
Ejemplo n.º 5
0
        public DimensionalModel(int length, int height, int width, long backingDataId, IDictionary <string, IMaterial> materialComps)
        {
            Length      = length;
            Height      = height;
            Width       = width;
            Composition = materialComps;

            ModelBackingData = ReferenceWrapper.GetOne <DimensionalModelData>(backingDataId);
        }
Ejemplo n.º 6
0
        public string[] GetDimensionalData(long id)
        {
            var model = ReferenceWrapper.GetOne <IDimensionalModelData>(id);

            if (model == null)
            {
                return(new string[0]);
            }

            return(model.ModelPlanes.Select(plane => plane.TagName).Distinct().ToArray());
        }
Ejemplo n.º 7
0
        public string GetEntityModelView(long modelId, short yaw, short pitch, short roll)
        {
            var model = ReferenceWrapper.GetOne <IDimensionalModelData>(modelId);

            if (model == null)
            {
                return(String.Empty);
            }

            return(model.ViewFlattenedModel(pitch, yaw, roll));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Fills a data object with data from a data row
        /// </summary>
        /// <param name="dr">the data row to fill from</param>
        public override void Fill(DataRow dr)
        {
            ID          = DataUtility.GetFromDataRow <long>(dr, "ID");
            Created     = DataUtility.GetFromDataRow <DateTime>(dr, "Created");
            LastRevised = DataUtility.GetFromDataRow <DateTime>(dr, "LastRevised");
            Name        = DataUtility.GetFromDataRow <string>(dr, "Name");

            SurName = DataUtility.GetFromDataRow <string>(dr, "SurName");;
            Gender  = DataUtility.GetFromDataRow <string>(dr, "Gender");;

            var raceId = DataUtility.GetFromDataRow <long>(dr, "Race");;

            RaceData = ReferenceWrapper.GetOne <Race>(raceId);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Create model serialized from existing xml with a valid ID from the database
        /// </summary>
        /// <param name="dataId">the data id</param>
        /// <param name="modelXML">JSON of model planes (all 11 11x11 planes)</param>
        public DimensionalModelData(long dataId, string modelJson)
        {
            ModelPlanes = new HashSet <IDimensionalModelPlane>();

            var backingModel = ReferenceWrapper.GetOne <DimensionalModelData>(dataId);

            ID          = backingModel.ID;
            Name        = backingModel.Name;
            Created     = backingModel.Created;
            LastRevised = backingModel.LastRevised;
            ModelType   = backingModel.ModelType;

            DeserializeModel(modelJson);
        }
Ejemplo n.º 10
0
        private IDictionary <IMaterial, short> DeserializeCompositions(string compJson)
        {
            var compositions = new Dictionary <IMaterial, short>();

            dynamic comps = JsonConvert.DeserializeObject(compJson);

            foreach (dynamic comp in comps)
            {
                long  compId = long.Parse(comp.Name);
                short amount = comp.Value;

                compositions.Add(ReferenceWrapper.GetOne <Material>(compId), amount);
            }

            return(compositions);
        }
Ejemplo n.º 11
0
        private void Transform_V1(Character backingData, Player newEntity, XElement docRoot, bool older)
        {
            if (!older)
            {
                // We added Race in v1 as well
                var raceID      = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("ID");
                var raceHeadID  = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("Head");
                var raceTorsoID = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("Torso");
                var raceSanguinaryMaterialID     = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("SanguinaryMaterial");
                var raceBreathes                 = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("Breathes");
                var raceDietaryNeeds             = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("DietaryNeeds");
                var raceEmergencyLocationID      = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("EmergencyLocation");
                var raceStartingLocationID       = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <long>("StartingLocation");
                var raceTeethType                = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("TeethType");
                var raceTemperatureToleranceLow  = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("TemperatureToleranceLow");
                var raceTemperatureToleranceHigh = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("TemperatureToleranceHigh");
                var raceVisionRangeLow           = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("VisionRangeLow");
                var raceVisionRangeHigh          = docRoot.Element("BackingData").Element("Race").GetSafeAttributeValue <short>("VisionRangeHigh");
                var raceArmsId        = docRoot.Element("BackingData").Element("Race").Element("Arms").GetSafeAttributeValue <long>("ID");
                var raceArmsAmount    = docRoot.Element("BackingData").Element("Race").Element("Arms").GetSafeAttributeValue <short>("Amount");
                var raceLegsId        = docRoot.Element("BackingData").Element("Race").Element("Legs").GetSafeAttributeValue <long>("ID");
                var raceLegsAmount    = docRoot.Element("BackingData").Element("Race").Element("Legs").GetSafeAttributeValue <short>("Amount");
                var raceBodyPartsJson = docRoot.Element("BackingData").Element("Race").GetSafeElementValue("BodyParts");

                var raceData = new Race(raceBodyPartsJson);

                raceData.ID    = raceID;
                raceData.Head  = DataWrapper.GetOne <InanimateData>(raceHeadID);
                raceData.Torso = DataWrapper.GetOne <InanimateData>(raceTorsoID);
                raceData.SanguinaryMaterial   = ReferenceWrapper.GetOne <Material>(raceSanguinaryMaterialID);
                raceData.Breathes             = (RespiratoryType)raceBreathes;
                raceData.DietaryNeeds         = (DietType)raceDietaryNeeds;
                raceData.EmergencyLocation    = DataWrapper.GetOne <RoomData>(raceEmergencyLocationID);
                raceData.StartingLocation     = DataWrapper.GetOne <RoomData>(raceStartingLocationID);
                raceData.TeethType            = (DamageType)raceDietaryNeeds;
                raceData.TemperatureTolerance = new Tuple <short, short>(raceTemperatureToleranceLow, raceTemperatureToleranceHigh);
                raceData.VisionRange          = new Tuple <short, short>(raceVisionRangeLow, raceVisionRangeHigh);
                raceData.Arms = new Tuple <IInanimateData, short>(DataWrapper.GetOne <InanimateData>(raceArmsId), raceArmsAmount);
                raceData.Legs = new Tuple <IInanimateData, short>(DataWrapper.GetOne <InanimateData>(raceLegsId), raceLegsAmount);
            }
            else //what if we're older
            {
                //Get it from the db
                var backD = DataWrapper.GetOne <Character>(backingData.ID);
                backingData.RaceData = backD.RaceData;
            }
        }
Ejemplo n.º 12
0
        public IDictionary <string, IMaterial> DeserializeBorders(string json)
        {
            var returntionary = new Dictionary <string, IMaterial>();

            dynamic borders = JsonConvert.DeserializeObject(json);

            foreach (dynamic border in borders)
            {
                long   objId = long.Parse(border.Value);
                string name  = border.Key;

                var material = ReferenceWrapper.GetOne <IMaterial>(objId);

                returntionary.Add(name, material);
            }

            return(returntionary);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Fills a data object with data from a data row
        /// </summary>
        /// <param name="dr">the data row to fill from</param>
        public override void Fill(DataRow dr)
        {
            ID          = DataUtility.GetFromDataRow <long>(dr, "ID");
            Created     = DataUtility.GetFromDataRow <DateTime>(dr, "Created");
            LastRevised = DataUtility.GetFromDataRow <DateTime>(dr, "LastRevised");
            Name        = DataUtility.GetFromDataRow <string>(dr, "Name");

            var mediumId = DataUtility.GetFromDataRow <long>(dr, "Medium");

            Medium = ReferenceWrapper.GetOne <IMaterial>(mediumId);

            var zoneId = DataUtility.GetFromDataRow <long>(dr, "Zone");

            ZoneAffiliation = ReferenceWrapper.GetOne <IZone>(zoneId);

            Borders = DeserializeBorders(DataUtility.GetFromDataRow <string>(dr, "Borders"));

            Model = new DimensionalModel(dr);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Find a parameter target in reference data
        /// </summary>
        /// <typeparam name="T">the system type of the data</typeparam>
        /// <param name="commandType">the system type of the command</param>
        /// <param name="currentNeededParm">the conditions for the parameter we're after</param>
        public void SeekInReferenceData <T>(Type commandType, CommandParameterAttribute currentNeededParm) where T : IReferenceData
        {
            var internalCommandString = CommandStringRemainder.ToList();

            var parmWords = internalCommandString.Count();

            while (parmWords > 0)
            {
                var currentParmString = string.Join(" ", RemoveGrammaticalNiceities(internalCommandString.Take(parmWords)));

                if (!currentNeededParm.MatchesPattern(currentParmString))
                {
                    parmWords--;
                    continue;
                }

                var validObject = ReferenceWrapper.GetOne <T>(currentParmString);

                if (validObject != null && !validObject.Equals(default(T)))
                {
                    switch (currentNeededParm.Usage)
                    {
                    case CommandUsage.Supporting:
                        Supporting = validObject;
                        break;

                    case CommandUsage.Subject:
                        Subject = validObject;
                        break;

                    case CommandUsage.Target:
                        Target = validObject;
                        break;
                    }

                    CommandStringRemainder = CommandStringRemainder.Skip(parmWords);
                    return;
                }

                parmWords--;
            }
        }
Ejemplo n.º 15
0
        private IDictionary <string, IMaterial> DeserializeMaterialCompositions(string compJson)
        {
            var composition = new Dictionary <string, IMaterial>();

            dynamic comps = JsonConvert.DeserializeObject(compJson);

            foreach (dynamic comp in comps)
            {
                string sectionName = comp.Name;
                long   materialId  = comp.Value;

                var material = ReferenceWrapper.GetOne <Material>(materialId);

                if (material != null && !string.IsNullOrWhiteSpace(sectionName))
                {
                    composition.Add(sectionName, material);
                }
            }

            return(composition);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Fills a data object with data from a data row
        /// </summary>
        /// <param name="dr">the data row to fill from</param>
        public override void Fill(DataRow dr)
        {
            ID          = DataUtility.GetFromDataRow <long>(dr, "ID");
            Created     = DataUtility.GetFromDataRow <DateTime>(dr, "Created");
            LastRevised = DataUtility.GetFromDataRow <DateTime>(dr, "LastRevised");
            Name        = DataUtility.GetFromDataRow <string>(dr, "Name");

            SurName = DataUtility.GetFromDataRow <string>(dr, "SurName");;
            Gender  = DataUtility.GetFromDataRow <string>(dr, "Gender");;

            StillANoob = DataUtility.GetFromDataRow <bool>(dr, "StillANoob");;

            var raceId = DataUtility.GetFromDataRow <long>(dr, "Race");;

            RaceData = ReferenceWrapper.GetOne <Race>(raceId);

            AccountHandle       = DataUtility.GetFromDataRow <string>(dr, "AccountHandle");
            GamePermissionsRank = DataUtility.GetFromDataRow <StaffRank>(dr, "GamePermissionsRank");

            LastKnownLocation     = DataUtility.GetFromDataRow <string>(dr, "LastKnownLocation");
            LastKnownLocationType = DataUtility.GetFromDataRow <string>(dr, "LastKnownLocationType");
        }
Ejemplo n.º 17
0
        public DimensionalModel(global::System.Data.DataRow dr)
        {
            Length = DataUtility.GetFromDataRow <int>(dr, "DimensionalModelLength");
            Height = DataUtility.GetFromDataRow <int>(dr, "DimensionalModelHeight");
            Width  = DataUtility.GetFromDataRow <int>(dr, "DimensionalModelWidth");

            long outDimModId = DataUtility.GetFromDataRow <long>(dr, "DimensionalModelID");

            if (outDimModId > 0)
            {
                ModelBackingData = ReferenceWrapper.GetOne <DimensionalModelData>(outDimModId);

                string materialComps = DataUtility.GetFromDataRow <string>(dr, "DimensionalModelMaterialCompositions");
                Composition = DeserializeMaterialCompositions(materialComps);
            }
            else //0 dimensional models don't have an actual model
            {
                ModelBackingData           = new DimensionalModelData();
                ModelBackingData.ModelType = DimensionalModelType.None;
                Composition = new Dictionary <string, IMaterial>();
            }
        }