Esempio n. 1
0
        public override void Load(Stream fs, CharacterDocument document, CharacterHandler handler)
        {
            var page = document.Pages [0];



            var br     = new BinaryReader(fs);
            var fontID = br.ReadString();

            if (string.IsNullOrEmpty(fontID))
            {
                page.Font = new BitFont(fs, BitFont.StandardCodePage);
            }
            else
            {
                page.Font = document.Info.GetFonts().SelectMany(r => r.Fonts).FirstOrDefault(r => r.ID == fontID);
            }
            var palSize = br.ReadInt16();
            var canvas  = page.Canvas;

            var pal = page.Palette;

            pal.Load(br, palSize, 0);

            ResizeCanvasWidth(fs, document, canvas);

            var p = Load(fs, canvas, pal);

            ResizeCanvasHeight(document, canvas, p.Y + 1);
        }
Esempio n. 2
0
 protected override int?GetWidth(Stream stream, CharacterDocument document, object state)
 {
     if (document.Sauce != null)
     {
         var charType = document.Sauce.TypeInfo as Sauce.Types.Character.DataTypeInfo;
         if (charType != null && charType.IsValidSize)
         {
             return(charType.Width);
         }
     }
     if (stream != null && stream.CanSeek)
     {
         var    last   = stream.Position;
         int    max    = document.Size.Width;
         var    reader = new StreamReader(stream);
         string line;
         while ((line = reader.ReadLine()) != null)
         {
             if (line.Contains("\x1b["))
             {
                 stream.Position = last;
                 return(base.GetWidth(stream, document, state));
             }
             max = Math.Max(max, line.Length);
         }
         stream.Position = last;
         return(max);
     }
     return(base.GetWidth(stream, document, state));
 }
        /// <summary>
        /// Converts a CharacterRecord to a prototypical CharacterDocument for character import.
        /// </summary>
        /// <returns>CharacterDocument derived from CharacterRecord data.</returns>
        public CharacterDocument ToCharacterDocument()
        {
            CharacterDocument doc = new CharacterDocument();
            Dictionary <int, RaceTemplate> raceDict = RaceTemplate.GetRaceDictionary();

            doc.raceTemplate                    = raceDict[(int)parsedData.race + 1];
            doc.gender                          = parsedData.gender;
            doc.career                          = parsedData.career;
            doc.name                            = parsedData.characterName;
            doc.faceIndex                       = parsedData.faceIndex;
            doc.workingStats                    = parsedData.currentStats;
            doc.workingSkills                   = parsedData.skills;
            doc.reflexes                        = parsedData.reflexes;
            doc.currentHealth                   = parsedData.currentHealth;
            doc.maxHealth                       = parsedData.maxHealth;
            doc.currentSpellPoints              = parsedData.currentSpellPoints;
            doc.reputationCommoners             = parsedData.reputationCommoners;
            doc.reputationMerchants             = parsedData.reputationMerchants;
            doc.reputationNobility              = parsedData.reputationNobility;
            doc.reputationScholars              = parsedData.reputationScholars;
            doc.reputationUnderworld            = parsedData.reputationUnderworld;
            doc.currentFatigue                  = parsedData.currentFatigue;
            doc.skillUses                       = parsedData.skillUses;
            doc.startingLevelUpSkillSum         = parsedData.startingLevelUpSkillSum;
            doc.minMetalToHit                   = parsedData.minMetalToHit;
            doc.armorValues                     = parsedData.armorValues;
            doc.lastTimePlayerBoughtTraining    = parsedData.lastTimePlayerBoughtTraining;
            doc.timeForThievesGuildLetter       = parsedData.timeForThievesGuildLetter;
            doc.timeForDarkBrotherhoodLetter    = parsedData.timeForDarkBrotherhoodLetter;
            doc.darkBrotherhoodRequirementTally = parsedData.darkBrotherhoodRequirementTally;
            doc.thievesGuildRequirementTally    = parsedData.thievesGuildRequirementTally;
            doc.biographyReactionMod            = parsedData.biographyReactionMod;

            return(doc);
        }
Esempio n. 4
0
 protected override void FillSauce(Sauce.SauceInfo sauce, CharacterDocument document)
 {
     base.FillSauce(sauce, document);
     sauce.ByteFileType = (byte)Sauce.Types.Character.CharacterFileType.Ansi;
     FillSauceSize(sauce, document);
     FillFlags(sauce, document);
 }
Esempio n. 5
0
        public override void Load(Stream fs, CharacterDocument document, CharacterHandler handler)
        {
            var page = document.Pages[0];

            document.ICEColours = true;

            var    br     = new BinaryReader(fs);
            Canvas canvas = page.Canvas;

            Point p;

            ResizeCanvasWidth(fs, document, canvas);
            br.ReadByte();                                      // read version byte (unused)
            var id = Encoding.ASCII.GetString(br.ReadBytes(8)); // read signature ID

            if (id != TundraID)
            {
                throw new Exception("Not a valid tundra24 file");
            }

            var pal = new Palette();

            pal.FindAddColour(Colors.Black);

            page.Palette = pal;

            p = Load(fs, canvas, pal);

            ResizeCanvasHeight(document, canvas, p.Y + 1);
        }
Esempio n. 6
0
        public override void Save(Stream stream, CharacterDocument document)
        {
            var bw = new BinaryWriter(stream);

            var page   = document.Pages[0];
            var canvas = page.Canvas;
            int lasty  = canvas.FindEndY(CanvasElement.Default);

            var xbh = new XBinHeader
            {
                Width    = (ushort)canvas.Size.Width,
                Height   = (ushort)(lasty + 1),
                Compress = EnableCompression,
                NonBlink = document.ICEColours
            };

            if (page.Palette.Count == 16 && page.Palette != Palette.GetDosPalette())
            {
                xbh.Palette = true;
            }
            xbh.Font = true;
            if (xbh.Font)
            {
                xbh.FontSize = (byte)page.Font.Size.Height;
                xbh.Font512 |= page.Font.NumChars > 256;
            }
            xbh.Write(bw);

            if (xbh.Palette)
            {
                page.Palette.Save(bw, 2);
            }

            if (xbh.Font)
            {
                page.Font.Save(bw);
            }

            if (xbh.Compress)
            {
                for (int y = 0; y <= lasty; y++)
                {
                    WriteCompressedRow(canvas, y, bw);
                }
            }
            else
            {
                for (int y = 0; y <= lasty; y++)
                {
                    for (int x = 0; x < canvas.Width; x++)
                    {
                        var ce = canvas[x, y];
                        bw.Write((byte)ce.Character);
                        bw.Write((byte)ce.Attribute);
                    }
                }
            }

            bw.Flush();
        }
        /// <summary>
        /// Assigns player entity settings from a character document.
        /// </summary>
        public void AssignCharacter(CharacterDocument character, int level = 1, int maxHealth = 0)
        {
            if (character == null)
            {
                SetEntityDefaults();
                return;
            }

            this.level        = level;
            this.gender       = character.gender;
            this.raceTemplate = character.raceTemplate;
            this.career       = character.career;
            this.name         = character.name;
            this.faceIndex    = character.faceIndex;
            this.stats        = character.workingStats;
            this.skills       = character.workingSkills;
            this.reflexes     = character.reflexes;

            if (maxHealth <= 0)
            {
                this.maxHealth = FormulaHelper.RollMaxHealth(level, stats.Endurance, career.HitPointsPerLevelOrMonsterLevel);
            }
            else
            {
                this.maxHealth = maxHealth;
            }

            FillVitalSigns();

            DaggerfallUnity.LogMessage("Assigned character " + this.name, true);
        }
Esempio n. 8
0
            public void Load(Ansi ansi, Stream fs, CharacterDocument document, CharacterHandler handler)
            {
                AnimateView = document.AnimateView;
                Page page = document.Pages[0];

                ansi.ResizeCanvasWidth(fs, document, page.Canvas);
                Load(fs, page.Canvas, page.Palette, (sender, args) => document.OnWait(args));
                if (iceColours != null)
                {
                    document.ICEColours = iceColours.Value;
                }
                while (page.Palette.Count < 16)
                {
                    page.Palette.Add(Colors.Black);
                }

                if (!document.EditMode && document.FileName != null && string.Equals(Path.GetExtension(document.FileName), ".diz", StringComparison.OrdinalIgnoreCase))
                {
                    var endX = page.Canvas.FindEndX(CanvasElement.Default);
                    page.Canvas.ResizeCanvas(new Size(endX + 1, page.Canvas.Height), false, true);
                }

                if (lastLineHasData)
                {
                    ptCur.Y += 1;
                }

                if (!AnimateView)
                {
                    ansi.ResizeCanvasHeight(document, page.Canvas, ptCur.Y);
                }
            }
Esempio n. 9
0
        public void Reroll(DFCareer dfClass)
        {
            // Assign base stats from class template
            DaggerfallStats rolledStats = CharacterDocument.GetClassBaseStats(dfClass);

            // Roll bonus value for each base stat
            // Using maxBonusRoll + 1 as Unity's Random.Range(int,int) is exclusive
            // of maximum value and we want to be inclusive of maximum value
            rolledStats.Strength     += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Intelligence += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Willpower    += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Agility      += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Endurance    += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Personality  += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Speed        += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);
            rolledStats.Luck         += UnityEngine.Random.Range(minBonusRoll, maxBonusRoll + 1);

            // Roll bonus pool for player to distribute
            // Using maxBonusPool + 1 for inclusive range as above
            int bonusPool = UnityEngine.Random.Range(minBonusPool, maxBonusPool + 1);

            // Apply stats to control
            SetStats(rolledStats, rolledStats, bonusPool);
            UpdateStatLabels();

            // Play "rolling dice" sound
            DaggerfallUI.Instance.PlayOneShot(SoundClips.DiceRoll);
        }
Esempio n. 10
0
 public void Attach(DummySession parent, CharacterDocument doc)
 {
     _parent = parent;
     if (!_viewer.IsDisposed)
     {
         _viewer.SetContent(doc);
     }
 }
Esempio n. 11
0
        public override void Load(Stream stream, CharacterDocument doc, CharacterHandler handler)
        {
            var loader = new Loader {
                Format = this
            };

            loader.Load(stream, doc, handler);
        }
Esempio n. 12
0
 public override void FillSauce(Sauce.SauceInfo sauce, CharacterDocument document)
 {
     base.FillSauce(sauce, document);
     sauce.ByteFileType = (byte)Sauce.Types.Character.CharacterFileType.TundraDraw;
     FillSauceSize(sauce, document);
     document.ICEColours = true;             // tundra always has ice colors on
     FillFlags(sauce, document);
 }
Esempio n. 13
0
        public override void Load(Stream fs, CharacterDocument doc, CharacterHandler handler)
        {
            Page page = doc.Pages [0];

            BinaryReader br     = new BinaryReader(fs);
            Canvas       canvas = page.Canvas;
            Rectangle    rClip  = new Rectangle(0, 0, canvas.Width, canvas.Height);

            ResizeCanvasWidth(fs, doc, canvas);

            Point p = rClip.Location;

            try {
                br.ReadByte();                  // read version byte (unused)
                Palette pal = new Palette();
                pal.Load(br, 64, 0);

                /*
                 * TextWriter tw = new StreamWriter("c:\\blah.txt");
                 * for (int i=0; i<pal.Size; i++)
                 * tw.WriteLine("{0}, {1}, {2}", pal[i].R, pal[i].G, pal[i].B);
                 * tw.Close();
                 */

                page.Palette = Palette.FromEGA(pal);
                page.Font    = new BitFont(256, 8, 16, BitFont.StandardCodePage);
                page.Font.Load(br);

                WaitEventArgs args = new WaitEventArgs();
                while (true)
                {
                    p.X = rClip.Left;
                    for (int x = 0; x < 80; x++)
                    {
                        byte ch   = br.ReadByte();
                        byte attr = br.ReadByte();
                        doc.OnWait(args);
                        if (args.Exit)
                        {
                            break;
                        }
                        if (p.X <= rClip.InnerRight)
                        {
                            canvas [p.X - rClip.Left, p.Y] = new CanvasElement(ch, attr);
                        }
                        p.X++;
                    }
                    p.Y++;
                    if (p.Y > rClip.InnerBottom)
                    {
                        break;
                    }
                }
            } catch (EndOfStreamException) {
            }
            ResizeCanvasHeight(doc, canvas, p.Y + 1);
        }
Esempio n. 14
0
        protected override int?GetWidth(Stream stream, CharacterDocument document, object state = null)
        {
            var header = state as IdfHeader;

            if (header != null)
            {
                return(header.Bounds.Width);
            }
            return(base.GetWidth(stream, document, state));
        }
Esempio n. 15
0
        private static void TestCharacterDocument()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            CharacterDocument doc = CharacterDocument.LoadForTest(HOMEDIR + "Executable\\characterdocumenttest1.txt");
            CharacterDocumentViewerContainer f = new CharacterDocumentViewerContainer(doc);

            Application.Run(f);
        }
Esempio n. 16
0
 void SummaryWindow_OnClose()
 {
     if (!createCharSummaryWindow.Cancelled)
     {
         characterDocument = createCharSummaryWindow.GetUpdatedCharacterDocument();
         StartNewGame();
     }
     else
     {
         SetSelectReflexesWindow();
     }
 }
Esempio n. 17
0
        public override void Save(Stream stream, CharacterDocument document)
        {
            var doc = document;

            if (doc != null)
            {
                var page = doc.Pages [0];
                var args = new SaveArgs(page.Canvas, page.Palette, stream);
                args.iCEColours = document.ICEColours;
                args.Save();
            }
        }
Esempio n. 18
0
        public override void Load(Stream fs, CharacterDocument doc, CharacterHandler handler)
        {
            Page page = doc.Pages[0];

            BinaryReader br     = new BinaryReader(fs);
            Canvas       canvas = page.Canvas;

            ResizeCanvasWidth(fs, doc, canvas);
            Rectangle rClip = new Rectangle(0, 0, canvas.Width, canvas.Height);

            Point p = rClip.Location;

            try
            {
                //page.Palette = Palette.GetDefaultPalette ();
                //page.Font = BitFont.GetStandard8x16 ();

                CanvasElement ce = new CanvasElement(32, 7);
                p = rClip.Location;
                WaitEventArgs args = new WaitEventArgs();
                while (true)
                {
                    doc.OnWait(args);
                    if (args.Exit)
                    {
                        break;
                    }

                    ce.Character = br.ReadByte();
                    ce.Attribute = br.ReadByte();
                    if (p.X < canvas.Size.Width && p.Y < canvas.Size.Height)
                    {
                        canvas[p] = ce;
                    }
                    p.X++;
                    if (p.X > rClip.InnerRight)
                    {
                        p.X = rClip.Left;
                        p.Y++;
                        if (p.Y > rClip.InnerBottom)
                        {
                            canvas.ShiftUp();
                            p.Y = rClip.InnerBottom;
                        }
                    }
                }
            }
            catch (EndOfStreamException)
            {
            }
            ResizeCanvasHeight(doc, canvas, p.Y + 1);
        }
Esempio n. 19
0
        public DummySession()
        {
            _caption = String.Format("dummy {0}", _count);
            //_document = CharacterDocument.SingleLine(String.Format("document {0}", _count));
            _document = new CharacterDocument();
            _document.LoadForTest(@"C:\P4\doc\test\characterdocument.txt");

            _count++;
            _document.SetOwner(this);
            _icon = null;

            _document.Caption = _caption;
        }
        public override UIHandleResult OnMouseDown(MouseEventArgs args)
        {
            if (args.Button != MouseButtons.Left || !_viewer.EnabledEx)
            {
                return(UIHandleResult.Pass);
            }

            //テキスト選択ではないのでちょっと柄悪いが。UserControl->Controlの置き換えに伴う
            if (!_viewer.Focused)
            {
                _viewer.Focus();
            }


            CharacterDocument document = _viewer.CharacterDocument;

            lock (document) {
                int col, row;
                _viewer.MousePosToTextPos(args.X, args.Y, out col, out row);
                int           target_id = _viewer.GetTopLine().ID + row;
                TextSelection sel       = _viewer.TextSelection;
                if (sel.State == SelectionState.Fixed)
                {
                    sel.Clear(); //変なところでMouseDownしたとしてもClearだけはする
                }
                if (target_id <= document.LastLineNumber)
                {
                    //if(InFreeSelectionMode) ExitFreeSelectionMode();
                    //if(InAutoSelectionMode) ExitAutoSelectionMode();
                    RangeType rt;
                    //Debug.WriteLine(String.Format("MouseDown {0} {1}", sel.State, sel.PivotType));

                    //同じ場所でポチポチと押すとChar->Word->Line->Charとモード変化する
                    if (sel.StartX != args.X || sel.StartY != args.Y)
                    {
                        rt = RangeType.Char;
                    }
                    else
                    {
                        rt = sel.PivotType == RangeType.Char ? RangeType.Word : sel.PivotType == RangeType.Word ? RangeType.Line : RangeType.Char;
                    }

                    //マウスを動かしていなくても、MouseDownとともにMouseMoveが来てしまうようだ
                    GLine tl = document.FindLine(target_id);
                    sel.StartSelection(tl, col, rt, args.X, args.Y);
                }
            }
            _viewer.Invalidate(); //NOTE 選択状態に変化のあった行のみ更新すればなおよし
            return(UIHandleResult.Capture);
        }
Esempio n. 21
0
            public CharacterDocumentViewerContainer(CharacterDocument doc)
            {
                _viewer = new CharacterDocumentViewer();
                _viewer.SetContent(doc, GEnv.DefaultRenderProfile);
                _viewer.Dock = DockStyle.Fill;

                _caretTimer          = new System.Windows.Forms.Timer();
                _caretTimer.Interval = Win32.GetCaretBlinkTime();
                _caretTimer.Tick    += new EventHandler(this.OnCaretTimer);
                _caretTimer.Start();

                this.Controls.Add(_viewer);
                this.Size = new Size(300, 300);
            }
Esempio n. 22
0
        /// <summary>
        /// Assigns player entity settings from a character document.
        /// </summary>
        public void AssignCharacter(CharacterDocument character, int level = 1, int maxHealth = 0, bool fillVitals = true)
        {
            if (character == null)
            {
                SetEntityDefaults();
                return;
            }

            this.level                   = level;
            this.gender                  = character.gender;
            this.raceTemplate            = character.raceTemplate;
            this.career                  = character.career;
            this.name                    = character.name;
            this.faceIndex               = character.faceIndex;
            this.stats                   = character.workingStats;
            this.skills                  = character.workingSkills;
            this.reflexes                = character.reflexes;
            this.maxHealth               = character.maxHealth;
            this.currentHealth           = character.currentHealth;
            this.currentMagicka          = character.currentSpellPoints;
            this.currentFatigue          = character.currentFatigue;
            this.skillUses               = character.skillUses;
            this.startingLevelUpSkillSum = character.startingLevelUpSkillSum;
            this.ArmorValues             = character.armorValues;

            SetCurrentLevelUpSkillSum();

            if (startingLevelUpSkillSum <= 0) // new character
            {
                startingLevelUpSkillSum = currentLevelUpSkillSum;
            }

            if (maxHealth <= 0)
            {
                this.maxHealth = FormulaHelper.RollMaxHealth(level, career.HitPointsPerLevel);
            }
            else
            {
                this.maxHealth = maxHealth;
            }

            if (fillVitals)
            {
                FillVitalSigns();
            }

            timeOfLastSkillIncreaseCheck = DaggerfallUnity.Instance.WorldTime.Now.ToClassicDaggerfallTime();

            DaggerfallUnity.LogMessage("Assigned character " + this.name, true);
        }
Esempio n. 23
0
        static void AssignSkillSpellbook(PlayerEntity playerEntity, CharacterDocument characterDocument)
        {
            Debug.Log("Starting Spells: Assigning Based on Skills");

            // Skill based items
            AssignSkillSpells(playerEntity, playerEntity.Career.PrimarySkill1, true);
            AssignSkillSpells(playerEntity, playerEntity.Career.PrimarySkill2, true);
            AssignSkillSpells(playerEntity, playerEntity.Career.PrimarySkill3, true);

            AssignSkillSpells(playerEntity, playerEntity.Career.MajorSkill1);
            AssignSkillSpells(playerEntity, playerEntity.Career.MajorSkill2);
            AssignSkillSpells(playerEntity, playerEntity.Career.MajorSkill3);

            Debug.Log("Starting Spells: Assigning Finished");
        }
Esempio n. 24
0
 protected override int?GetWidth(Stream stream, CharacterDocument document, object state)
 {
     if (!fpBinaryWidth.Enabled)
     {
         return(BinaryWidth);
     }
     else if (document.Sauce != null && document.Sauce.ByteFileType > 1)
     {
         return(document.Sauce.ByteFileType * 2);
     }
     else
     {
         return(null);
     }
 }
Esempio n. 25
0
            public void Load(Stream stream, CharacterDocument doc, Handler handler)
            {
                Page page = doc.Pages [0];

                br     = new BinaryReader(stream);
                canvas = page.Canvas;

                Format.ResizeCanvasWidth(stream, doc, canvas);

                rClip = new Rectangle(canvas.Size);

                p    = rClip.Location;
                attr = CanvasElement.Default.Attribute;
                try {
                    while (true)
                    {
                        var b = br.ReadByte();

                        if (b == 1)
                        {
                            ReadCtrlA();
                            if (ended)
                            {
                                break;
                            }
                        }
                        else if (b == 13)
                        {
                            // do nothing?
                            p.X = rClip.Left;
                        }
                        else if (b == 10)
                        {
                            // LF(+CR?)
                            IncrementY();
                            p.X = rClip.Left;
                        }
                        else
                        {
                            canvas [p] = new CanvasElement(b, attr);
                            IncrementX();
                        }
                    }
                } catch (EndOfStreamException) {
                }

                Format.ResizeCanvasHeight(doc, canvas, p.Y + 1);
            }
        /// <summary>
        /// Converts a CharacterRecord to a prototypical CharacterDocument for character import.
        /// </summary>
        /// <param name="stripLycanthropyType">Lycanthropy type to remove, if previously read.</param>
        /// <returns>CharacterDocument derived from CharacterRecord data.</returns>
        public CharacterDocument ToCharacterDocument(LycanthropyTypes stripLycanthropyType = LycanthropyTypes.None)
        {
            CharacterDocument doc = new CharacterDocument();
            Dictionary <int, RaceTemplate> raceDict = RaceTemplate.GetRaceDictionary();

            // Strip back classic changes for vampire or lycanthrope as this is handled by effect system in DFU
            // If player is not transformed then this will simply return parsedData.race + 1
            Races classicTransformedRace;
            Races liveRace = StripTransformedRace(out classicTransformedRace, stripLycanthropyType);

            doc.raceTemplate                      = raceDict[(int)liveRace];
            doc.gender                            = parsedData.gender;
            doc.career                            = parsedData.career;
            doc.name                              = parsedData.characterName;
            doc.faceIndex                         = parsedData.faceIndex;
            doc.workingStats                      = parsedData.currentStats;
            doc.workingSkills                     = parsedData.skills;
            doc.reflexes                          = parsedData.reflexes;
            doc.currentHealth                     = parsedData.currentHealth;
            doc.maxHealth                         = parsedData.baseHealth;
            doc.currentSpellPoints                = parsedData.currentSpellPoints;
            doc.reputationCommoners               = parsedData.reputationCommoners;
            doc.reputationMerchants               = parsedData.reputationMerchants;
            doc.reputationNobility                = parsedData.reputationNobility;
            doc.reputationScholars                = parsedData.reputationScholars;
            doc.reputationUnderworld              = parsedData.reputationUnderworld;
            doc.currentFatigue                    = parsedData.currentFatigue;
            doc.skillUses                         = parsedData.skillUses;
            doc.skillsRaisedThisLevel1            = parsedData.skillsRaisedThisLevel1;
            doc.skillsRaisedThisLevel2            = parsedData.skillsRaisedThisLevel2;
            doc.startingLevelUpSkillSum           = parsedData.startingLevelUpSkillSum;
            doc.minMetalToHit                     = parsedData.minMetalToHit;
            doc.armorValues                       = parsedData.armorValues;
            doc.timeToBecomeVampireOrWerebeast    = parsedData.timeToBecomeVampireOrWerebeast;
            doc.hasStartedInitialVampireQuest     = parsedData.hasStartedInitialVampireQuest;
            doc.lastTimeVampireNeedToKillSatiated = parsedData.lastTimeVampireNeedToKillSatiated;
            doc.lastTimePlayerAteOrDrankAtTavern  = parsedData.lastTimePlayerAteOrDrankAtTavern;
            doc.lastTimePlayerBoughtTraining      = parsedData.lastTimePlayerBoughtTraining;
            doc.timeForThievesGuildLetter         = parsedData.timeForThievesGuildLetter;
            doc.timeForDarkBrotherhoodLetter      = parsedData.timeForDarkBrotherhoodLetter;
            doc.vampireClan                       = parsedData.vampireClan;
            doc.darkBrotherhoodRequirementTally   = parsedData.darkBrotherhoodRequirementTally;
            doc.thievesGuildRequirementTally      = parsedData.thievesGuildRequirementTally;
            doc.biographyReactionMod              = parsedData.biographyReactionMod;
            doc.classicTransformedRace            = classicTransformedRace;

            return(doc);
        }
Esempio n. 27
0
        protected void Save(Stream stream, CharacterDocument document, bool asTundra)
        {
            var bw = new BinaryWriter(stream);

            if (asTundra)
            {
                bw.Write((byte)24);
                bw.Write(Encoding.ASCII.GetBytes(TundraID));
            }

            var page   = document.Pages[0];
            var canvas = page.Canvas;
            var pal    = page.Palette;

            Save(stream, canvas, pal);
        }
Esempio n. 28
0
        /// <summary>
        /// Converts a CharacterRecord to a prototypical CharacterDocument for character import.
        /// </summary>
        /// <returns>CharacterDocument derived from CharacterRecord data.</returns>
        public CharacterDocument ToCharacterDocument()
        {
            CharacterDocument doc = new CharacterDocument();
            Dictionary <int, RaceTemplate> raceDict = RaceTemplate.GetRaceDictionary();

            doc.raceTemplate  = raceDict[(int)parsedData.race + 1];
            doc.gender        = parsedData.gender;
            doc.career        = parsedData.career;
            doc.name          = parsedData.characterName;
            doc.faceIndex     = parsedData.faceIndex;
            doc.workingStats  = parsedData.currentStats;
            doc.workingSkills = parsedData.skills;
            doc.reflexes      = parsedData.reflexes;

            return(doc);
        }
Esempio n. 29
0
        public override void Save(Stream stream, CharacterDocument document)
        {
            Page page   = document.Pages[0];
            var  canvas = page.Canvas;

            int maxY = page.Canvas.FindEndY(new CanvasElement(32, 7));

            for (int y = 0; y <= maxY; y++)
            {
                for (int x = 0; x < canvas.Size.Width; x++)
                {
                    var elem = canvas[x, y];
                    stream.WriteByte(elem.Character);
                    stream.WriteByte((byte)elem.Attribute);
                }
            }
        }
Esempio n. 30
0
 void SetCharacterSheet(CharacterDocument characterDocument)
 {
     this.characterDocument          = characterDocument;
     this.textBox.Text               = characterDocument.name;
     this.statsRollout.StartingStats = characterDocument.startingStats;
     this.statsRollout.WorkingStats  = characterDocument.workingStats;
     this.statsRollout.BonusPool     = 0;
     this.skillsRollout.SetClassSkills(characterDocument.career);
     this.skillsRollout.StartingSkills          = characterDocument.startingSkills;
     this.skillsRollout.WorkingSkills           = characterDocument.workingSkills;
     this.skillsRollout.PrimarySkillBonusPoints = 0;
     this.skillsRollout.MajorSkillBonusPoints   = 0;
     this.skillsRollout.MinorSkillBonusPoints   = 0;
     this.facePicker.FaceIndex = characterDocument.faceIndex;
     this.facePicker.SetFaceTextures(characterDocument.raceTemplate, characterDocument.gender);
     this.reflexPicker.PlayerReflexes = characterDocument.reflexes;
 }