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) }
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(); }
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(); }