예제 #1
0
        private void B_DumpDesign_Click(object sender, EventArgs e)
        {
            if (sender == B_DumpDesignAll)
            {
                using var fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                var dir = Path.GetDirectoryName(fbd.SelectedPath);
                if (dir == null || !Directory.Exists(dir))
                {
                    return;
                }
                bool indexed = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MessageStrings.MsgAskExportResultsWithFileIndex) == DialogResult.Yes;
                Patterns.Dump(fbd.SelectedPath, indexed);
                return;
            }

            var original = Patterns[Index];
            var name     = original.DesignName;

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

            var d = original;

            File.WriteAllBytes(sfd.FileName, d.Data);
        }
예제 #2
0
        private void B_EditVillagerPlayerMemories_Click(object sender, EventArgs e)
        {
            if (ModifierKeys == Keys.Shift)
            {
                var prompt = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MessageStrings.MsgVillagerFriendshipMax);
                if (prompt != DialogResult.Yes)
                {
                    return;
                }
                foreach (var villager in Villagers)
                {
                    villager.SetFriendshipAll();
                }
                System.Media.SystemSounds.Asterisk.Play();
                return;
            }

            var v = Villagers[VillagerIndex];

            using var editor = new VillagerMemoryEditor(v);
            if (editor.ShowDialog() == DialogResult.OK)
            {
            }   // editor saves our changes
        }
예제 #3
0
        private void Remove(Control sender, Func <int, int, int, int, int> removal)
        {
            bool wholeMap = ModifierKeys == Keys.Shift;

            string q        = string.Format(MessageStrings.MsgFieldItemRemoveAsk, sender.Text);
            var    question = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, q);

            if (question != DialogResult.Yes)
            {
                return;
            }

            var count = wholeMap
                ? removal(0, 0, Layer.MapWidth, Layer.MapHeight)
                : removal(X, Y, Layer.GridWidth, Layer.GridHeight);

            if (count == 0)
            {
                WinFormsUtil.Alert(MessageStrings.MsgFieldItemRemoveNone);
                return;
            }
            LoadGrid(X, Y);
            WinFormsUtil.Alert(string.Format(MessageStrings.MsgFieldItemRemoveCount, count));
        }
예제 #4
0
        private void Remove(Control sender, Func <int, int, int, int, int> removal)
        {
            bool wholeMap = ModifierKeys == Keys.Shift;

            string q        = $"Are you sure you want to remove {sender.Text}?";
            var    question = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, q);

            if (question != DialogResult.Yes)
            {
                return;
            }

            var count = wholeMap
                ? removal(0, 0, Layer.MapWidth, Layer.MapHeight)
                : removal(X, Y, Layer.GridWidth, Layer.GridHeight);

            if (count == 0)
            {
                WinFormsUtil.Alert("Nothing removed (none found).");
                return;
            }
            LoadGrid(X, Y);
            WinFormsUtil.Alert($"Removed {count} from the map.");
        }
예제 #5
0
        private void B_Save_Click(object sender, EventArgs e)
        {
            var unsupported = Map.Items.GetUnsupportedTiles();
            if (unsupported.Count != 0)
            {
                var err = MessageStrings.MsgFieldItemUnsupportedLayer2Tile;
                var ask = MessageStrings.MsgAskContinue;
                var prompt = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, err, ask);
                if (prompt != DialogResult.Yes)
                    return;
            }

            Map.Items.Save();
            SAV.SetTerrainTiles(Map.Terrain.Tiles);

            SAV.SetAcreBytes(Map.Terrain.BaseAcres);
            SAV.OutsideFieldTemplateUniqueId = (ushort)NUD_MapAcreTemplateOutside.Value;
            SAV.MainFieldParamUniqueID = (ushort)NUD_MapAcreTemplateField.Value;

            SAV.Buildings = Map.Buildings;
            SAV.EventPlazaLeftUpX = Map.PlazaX;
            SAV.EventPlazaLeftUpZ = Map.PlazaY;
            Close();
        }
예제 #6
0
        private void B_LoadDesign_Click(object sender, EventArgs e)
        {
            if (sender == B_LoadDesignAll)
            {
                using var fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                var dir = Path.GetDirectoryName(fbd.SelectedPath);
                if (dir == null || !Directory.Exists(dir))
                {
                    return;
                }
                var result = WinFormsUtil.Prompt(MessageBoxButtons.YesNoCancel, MessageStrings.MsgAskUpdateValues);
                Patterns.Load(fbd.SelectedPath, result == DialogResult.Yes);
                LoadPattern(Patterns[Index]);
                RepopulateList(Index);
                return;
            }

            var original = Patterns[Index];
            var name     = original.DesignName;

            using var ofd = new OpenFileDialog
                  {
                      Filter   = "New Horizons Design Pattern (*.nhd)|*.nhd|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 DesignPattern(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);
            RepopulateList(Index);
        }