Esempio n. 1
0
 /// <summary>
 /// Saves a collection of races to disk.
 /// </summary>
 /// <param name="config"></param>
 /// <param name="races"></param>
 public void SaveRaces(MudConfig config, List <Race> races)
 {
     foreach (var race in races)
     {
         SaveRace(config, race);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Searches a configurable root directory for all .account files.
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public List <PlayerAccount> LoadAccounts(MudConfig config)
        {
            var accounts = new List <PlayerAccount>( );
            var root     = config.AccountFileRootDirectory;

            //make sure this exists
            if (!Directory.Exists(root))
            {
                Directory.CreateDirectory(root);
            }

            //make sure each of the letter directories exist, and load accounts from it
            IEnumerable <string> alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray( ).Select(c => c.ToString( ));

            foreach (var a in alphabet)
            {
                var path = Path.Combine(root, a);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                foreach (string accountFile in Directory.GetFiles(path, "*.account"))
                {
                    var rawJson = File.ReadAllText(accountFile);
                    var player  = JsonConvert.DeserializeObject <PlayerAccount>(rawJson);
                    accounts.Add(player);
                }
            }

            return(accounts);
        }
Esempio n. 3
0
 /// <summary>
 /// Saves helps.
 /// </summary>
 /// <param name="config"></param>
 /// <param name="helps"></param>
 public void SaveHelps(MudConfig config, List <Help> helps)
 {
     foreach (var help in helps)
     {
         SaveHelp(config, help);
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Loads all the help files from the file system.
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public List <Help> LoadHelps(MudConfig config)
        {
            var helps = new List <Help>( );
            var root  = config.HelpFileDirectory;

            //check if it exists
            if (!Directory.Exists(root))
            {
                Directory.CreateDirectory(root);
            }

            var helpFiles = Directory.GetFiles(root, "*.help");

            foreach (var file in helpFiles)
            {
                var fileName  = new FileInfo(file).Name;
                var rawHelp   = File.ReadAllText(file);
                var helpParts = rawHelp.Split('\n');
                var keyword   = helpParts[0].Replace("#", "").Replace("\r", "").Replace("\n", "");
                var contents  = string.Join("\n", helpParts, 1, helpParts.Length - 1).Replace("\r", "");
                var help      = new Help( )
                {
                    FileName = fileName,
                    Keywords = keyword,
                    Contents = contents
                };
                helps.Add(help);
            }
            return(helps);
        }
Esempio n. 5
0
 /// <summary>
 /// Saves many accounts.
 /// </summary>
 /// <param name="config"></param>
 /// <param name="accounts"></param>
 public void SaveAccounts(MudConfig config, List <PlayerAccount> accounts)
 {
     //don't need to check for dirs because we always LOAD first!
     foreach (var account in accounts)
     {
         SaveAccount(config, account);
     }
 }
Esempio n. 6
0
        /// <summary>
        /// Save helps.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="help"></param>
        public void SaveHelp(MudConfig config, Help help)
        {
            var root     = config.HelpFileDirectory;
            var path     = Path.Combine(root, help.FileName);
            var contents = help.Contents.Replace("\r", "").Replace("\n", Environment.NewLine);
            var rawHelp  = string.Concat(help.Keywords, Environment.NewLine, contents);

            File.WriteAllText(path, rawHelp);
        }
Esempio n. 7
0
        /// <summary>
        /// Loads races into memory.
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public List <Race> LoadRaces(MudConfig config)
        {
            var races = new List <Race>();

            foreach (var raceFile in config.RaceFiles)
            {
                var rawJson = File.ReadAllText(raceFile);
                var race    = JsonConvert.DeserializeObject <Race>(rawJson);
                races.Add(race);
            }
            return(races);
        }
Esempio n. 8
0
        /// <summary>
        /// Loads all areas from the area-files list in mud.json
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public List <Area> LoadAreas(MudConfig config)
        {
            var areas = new List <Area>( );

            foreach (var areaFile in config.AreaFiles)
            {
                var rawJson = File.ReadAllText(areaFile);
                var area    = JsonConvert.DeserializeObject <Area>(rawJson);
                area.Rooms.ForEach(r => r.Exits = r.Exits.OrderBy(kv => kv.Key).ToDictionary(kv => kv.Key, kv => kv.Value));
                areas.Add(area);
            }
            return(areas);
        }
Esempio n. 9
0
        /// <summary>
        /// Saves an account to a file.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="account"></param>
        public void SaveAccount(MudConfig config, PlayerAccount account)
        {
            //don't need to check for dirs because we always LOAD first!
            var root     = config.AccountFileRootDirectory;
            var fileName = $"{account.Name.ToTitleCase()}.account";
            var a        = account.Name[0].ToString().ToUpper();
            var path     = Path.Combine(root, a, fileName);
            var rawJson  = JsonConvert.SerializeObject(account, new JsonSerializerSettings( )
            {
                Formatting = Formatting.Indented
            });

            File.WriteAllText(path, rawJson);
        }
Esempio n. 10
0
        /// <summary>
        /// Saves a race to disk, if it's been defined in config.
        /// </summary>
        /// <param name="config"></param>
        /// <param name="race"></param>
        public void SaveRace(MudConfig config, Race race)
        {
            string raceFile = config.RaceFiles.FirstOrDefault(r => r.EndsWith(race.Name.ToLower() + ".json"));

            if (string.IsNullOrEmpty(raceFile))
            {
                throw new InvalidOperationException("Cannot find race to save. Add it to mud.config please.");
            }

            var rawJson = JsonConvert.SerializeObject(race, new JsonSerializerSettings()
            {
                Formatting = Formatting.Indented
            });

            File.WriteAllText(raceFile, rawJson);
        }
Esempio n. 11
0
        public List <CommandMetaData> LoadCommands(MudConfig config)
        {
            var metaDatas = new List <CommandMetaData>( );

            var root = config.CommandDirectory;

            if (!Directory.Exists(root))
            {
                Directory.CreateDirectory(root);
            }

            foreach (var commandMeta in config.Commands)
            {
                var path = Path.Combine(root, commandMeta.FileName);
                if (File.Exists(path))
                {
                    var rawJs = File.ReadAllText(path);
                    commandMeta.RawJavascript = rawJs;
                    metaDatas.Add(commandMeta);
                }
            }

            return(metaDatas.OrderBy(md => md.Priority).ToList());
        }