public override int ReadFrom(byte[] Buffer, int StartIndex = 0) { int cursor = StartIndex; cursor += base.ReadFrom(Buffer, cursor); Mail = new Mail(stringResources, Buffer, cursor); cursor += Mail.ByteLength; return cursor - StartIndex; }
public MailMessage(Mail Mail) : base(MessageTypeGameMode.Mail) { this.Mail = Mail; }
/// <summary> /// Sets pathes to required resources. /// Will also remove any existing resources from the current lists. /// </summary> /// <param name="PathStrings"></param> /// <param name="PathRooms"></param> /// <param name="PathObjects"></param> /// <param name="PathRoomTextures"></param> /// <param name="PathSounds"></param> /// <param name="PathMusic"></param> /// <param name="PathMails"></param> public void Init( string PathStrings, string PathRooms, string PathObjects, string PathRoomTextures, string PathSounds, string PathMusic, string PathMails) { this.StringsFolder = PathStrings; this.RoomsFolder = PathRooms; this.ObjectsFolder = PathObjects; this.RoomTexturesFolder = PathRoomTextures; this.WavFolder = PathSounds; this.MusicFolder = PathMusic; this.MailFolder = PathMails; string[] files; // already executed once? if (Initialized) { StringResources.Clear(); StringDictionaries.Clear(); Objects.Clear(); RoomTextures.Clear(); Rooms.Clear(); Wavs.Clear(); Music.Clear(); // detach mail listener so we don't delete them Mails.ListChanged -= OnMailsListChanged; // clear our objects Mails.Clear(); } // register string dictionaries for different servers if (Directory.Exists(StringsFolder)) { // get available files files = Directory.GetFiles(StringsFolder, '*' + FileExtensions.RSB); foreach (string s in files) StringDictionaries.TryAdd(Path.GetFileName(s), null); } // register objects if (Directory.Exists(ObjectsFolder)) { // get available files files = Directory.GetFiles(ObjectsFolder, '*' + FileExtensions.BGF); foreach (string s in files) { string filename = Path.GetFileName(s); if (!filename.StartsWith("grd")) Objects.TryAdd(filename, null); } } // register roomtextures if (Directory.Exists(RoomTexturesFolder)) { // get available files files = Directory.GetFiles(RoomTexturesFolder, "grd*" + FileExtensions.BGF); foreach (string s in files) RoomTextures.TryAdd(Path.GetFileName(s), null); } // register rooms if (Directory.Exists(RoomsFolder)) { // get available files files = Directory.GetFiles(RoomsFolder, '*' + FileExtensions.ROO); foreach (string s in files) Rooms.TryAdd(Path.GetFileName(s), null); } // register wav sounds if (Directory.Exists(WavFolder)) { // get available files files = Directory.GetFiles(WavFolder, '*' + FileExtensions.WAV); foreach (string s in files) Wavs.TryAdd(Path.GetFileName(s), null); } // register music if (Directory.Exists(MusicFolder)) { // get available files files = Directory.GetFiles(MusicFolder, '*' + FileExtensions.MP3); foreach (string s in files) Music.TryAdd(Path.GetFileName(s), null); } // load mails if (Directory.Exists(MailFolder)) { // read available mail files files = Directory.GetFiles(MailFolder, '*' + FileExtensions.XML); foreach (string s in files) { // create mail object Mail mail = new Mail(); // load values from xml mail.Load(s); // add to list Mails.Add(mail); } } // hookup mails listener to write/delete the files Mails.ListChanged += OnMailsListChanged; // forced GC collection GC.Collect(2); // mark initialized Initialized = true; }