예제 #1
0
        private void LoadPattern(DesignPatternPRO dp)
        {
            const int w = DesignPatternPRO.Width * scale;
            const int h = DesignPatternPRO.Height * scale;

            PB_Sheet0.Image = ImageUtil.ResizeImage(dp.GetImage(0), w, h);
            PB_Sheet1.Image = ImageUtil.ResizeImage(dp.GetImage(1), w, h);
            PB_Sheet2.Image = ImageUtil.ResizeImage(dp.GetImage(2), w, h);
            PB_Sheet3.Image = ImageUtil.ResizeImage(dp.GetImage(3), w, h);

            PB_Palette.Image   = ImageUtil.ResizeImage(dp.GetPalette(), 150, 10);
            L_PatternName.Text = dp.DesignName + Environment.NewLine +
                                 dp.TownName + Environment.NewLine +
                                 dp.PlayerName;
        }
예제 #2
0
        private void B_LoadDesign_Click(object sender, EventArgs e)
        {
            var original = Patterns[Index];
            var name     = original.DesignName;

            using var ofd = new OpenFileDialog
                  {
                      Filter   = "New Horizons PRO Design (*.nhpd)|*.nhpd|All files (*.*)|*.*",
                      FileName = $"{name}.nhd",
                  };
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var file         = ofd.FileName;
            var expectLength = original.Data.Length;
            var fi           = new FileInfo(file);

            if (fi.Length != expectLength)
            {
                var msg = string.Format(MessageStrings.MsgDataSizeMismatchImport, fi.Length, expectLength);
                WinFormsUtil.Error(MessageStrings.MsgCanceling, msg);
                return;
            }

            var data    = File.ReadAllBytes(ofd.FileName);
            var d       = new DesignPatternPRO(data);
            var player0 = original;

            if (!d.IsOriginatedFrom(player0))
            {
                var notHost = string.Format(MessageStrings.MsgDataDidNotOriginateFromHost_0, player0.PlayerName);
                var result  = WinFormsUtil.Prompt(MessageBoxButtons.YesNoCancel, notHost, MessageStrings.MsgAskUpdateValues);
                if (result == DialogResult.Cancel)
                {
                    return;
                }
                if (result == DialogResult.Yes)
                {
                    d.ChangeOrigins(player0, d.Data);
                }
            }

            Patterns[Index] = d;
            LoadPattern(d);
        }
예제 #3
0
 private static string GetPatternSummary(DesignPatternPRO p) => p.DesignName;
예제 #4
0
 public static Bitmap GetPalette(this DesignPatternPRO bg)
 {
     return(GetBitmap(bg.GetPaletteBitmap(), DesignPatternPRO.PaletteColorCount, 1, PixelFormat.Format24bppRgb));
 }
예제 #5
0
 public static Bitmap GetImage(this DesignPatternPRO bg, int sheet)
 {
     return(GetBitmap(bg.GetBitmap(sheet), DesignPatternPRO.Width, DesignPatternPRO.Height));
 }