private void LoadButtonClick(object sender, EventArgs e)
        {
            this.stages        = Stages.Read(this.stagesTextBox.Text);
            this.stringsConfig = StringsConfig.Read(this.stringsTextBox.Text);

            // todo 0005: implement (or remove if not needed; also remove stage.cs and FileConstants.Stages in that case)
        }
Example #2
0
        private void GetStringsData(StringBuilder builder)
        {
            var stringConfig = StringsConfig.Read(this.stringsTextBox.Text);

            builder.AppendLine(
                @";****************************************************************
; Strings                                                       ;
;****************************************************************
");

            builder.AppendLine("StringPointers:");

            var maxId = stringConfig.Strings.Max(s => s.Id);

            if (maxId > 127)
            {
                throw new Exception("Too many strings");
            }

            for (var i = 0; i <= maxId; i++)
            {
                builder.AppendLine($"; {i}");

                var str = stringConfig.Strings.FirstOrDefault(s => s.Id == i);
                if (str != null)
                {
                    builder.AppendLine($"; \"{str.Value}\"");
                    builder.AppendLine($"STR_{i} = {i * 2}"); // x2 because it's a pointer
                    builder.AppendLine($"  .byte LOW(string{i}), HIGH(string{i})");
                }
                else
                {
                    builder.AppendLine($"; placeholder");
                    builder.AppendLine($"  .byte $00, $00");
                }

                builder.AppendLine();
            }

            builder.AppendLine();
            builder.AppendLine("Strings:");
            foreach (var str in stringConfig.Strings)
            {
                builder.AppendLine($"string{str.Id}:");
                builder.AppendLine($"  .byte {string.Join(", ", EncodeString(str.Value).Select(b => ToHex(b)))}");
            }

            builder.AppendLine();
        }
Example #3
0
        private void LoadButtonClick(object sender, System.EventArgs e)
        {
            this.story = Story.Read(this.storyTextBox.Text);
            this.stringsConfig = StringsConfig.Read(this.stringsTextBox.Text);
            var tiles = new List<MyBitmap>();
            TitleDialog.ProcessFont(this.fontTextBox.Text, tiles);

            var strings = new List<StringToRedner>();

            foreach (var strData in this.story.Strings)
            {
                if (strData.X < 1 || strData.Y < 1)
                {
                    throw new System.Exception("Invalid string position");
                }

                var str = this.stringsConfig.Strings.First(s => s.Id == strData.StringId).Value;
                if (str.Length > 30)
                {
                    throw new System.Exception("Invalid string length");
                }

                strings.Add(new StringToRedner(strData.X, strData.Y, str.ToLower()));
            }

            strings.Add(new StringToRedner(PressStartX, PressStartY, PressStart));

            var bmp = new MyBitmap(512, 448, System.Drawing.Color.Black); // 448 means NTSC
            foreach (var str in strings)
            {
                var x = str.X;
                foreach (var chr in str.Str.ToCharArray())
                {
                    var tile = tiles[TitleDialog.Chars.IndexOf(chr)].Scale(BitmapZoom);
                    bmp.DrawImage(tile, x * Constants.SpriteWidth * BitmapZoom, (str.Y - 1) * Constants.SpriteHeight * BitmapZoom); // - 1 because of NTSC
                    x++;
                }
            }

            this.pictureBox.Image = bmp.ToBitmap();
        }