// Use this for initialization void Start() { _GDB = GameObject.FindGameObjectWithTag("MainUI").GetComponent <GlobalDB>(); _SEL = GameObject.FindGameObjectWithTag("MainUI").GetComponent <Select>(); _SB = gameObject.GetComponent <ShipBuild>(); _sbm = gameObject.GetComponent <Station>(); }
public static Ship mockShip() { SpacegameServer.Core.ShipBuild builder = new ShipBuild(Core.Instance); var hull = mockShipHull(); hull.ShipHullsModulePositions.Add(Mock.mockShipHullsModulePosition(hull.id, 2, 3)); hull.ShipHullGain = Mock.mockShipHullsGain(hull.id, crew: 3); Core.Instance.ShipHulls[hull.id] = hull; int newShipId = (int)Core.Instance.identities.shipLock.getNext(); Field field = Mock.mockField(); User user = Mock.MockUser(id: (int)Core.Instance.identities.allianceId.getNext()); Core.Instance.users.TryAdd(user.id, user); int userId = user.id; Colony colony = Mock.mockColony(ColonyUserId: userId); bool fastBuild = false; ShipTemplate template = Mock.mockShipTemplate(shiphullid: hull.id, userid: userId); Module crew = Mock.mockModule(); crew.moduleGain = Mock.mockModulesGain(crew.id, crew: 5); Core.Instance.Modules[crew.id] = crew; template.shipModules.Add(Mock.mockShipTemplateModules()); Ship newShip = builder.buildShip(newShipId, template, field, user.id, colony, fastBuild); return(newShip); }
private void BtnRecommendedBuild_Click(object sender, EventArgs e) { Settings settings = Commons.GetSettings(); if (!settings.SaveLocation.Equals("")) { string filename = settings.SaveLocation + "\\" + RandomizedShip.Name + ".bld"; if (File.Exists(filename)) { ShipBuild build = BinarySerialize.ReadFromBinaryFile <ShipBuild>(filename); if (build != null) { BuildManager BManager = new BuildManager(); BManager.LoadBuild(build); BManager.Show(); } else { MessageBox.Show("Couldn\'t open personal build.", "Unable to open personal build", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Couldn\'t find a build to open. File must be named with shipname only: '" + filename + "'.", "Unable to open personal build", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void OpenFile(object sender, EventArgs e) { Settings settings = Commons.GetSettings(); OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "Randomizer Ship Build (*.bld)|*.bld"; openFile.DefaultExt = "bld"; openFile.InitialDirectory = settings.SaveLocation; string fileName = ""; if (openFile.ShowDialog() == DialogResult.OK) { fileName = openFile.FileName; } else { return; } ShipBuild build = BinarySerialize.ReadFromBinaryFile <ShipBuild>(fileName); Ship findShip = Program.AllShips.Find(x => x.ID == build.ID); AddShipToCompare(findShip, build); }
public void getCommNodeMessageTest() { instance.commNodes.First().Value.commNodeMessages.Clear(); instance.identities.commNodeMessage.id = 0; //create user User user = Mock.mockGeneratedUser(instance); List <SpacegameServer.BC.XMLGroups.CommNode> commNodes = SpacegameServer.BC.XMLGroups.CommNodes.createKnownAndNearNodesList(user); var node = commNodes.First().node; //create ship SpacegameServer.Core.ShipBuild builder = new ShipBuild(instance); int newShipId = (int)instance.identities.shipLock.getNext(); ShipTemplate template = instance.shipTemplate.Where(e => e.Value.hullid == 1).First().Value; var targetRegionId = GeometryIndex.calcRegionId(node.positionX, node.positionY); Field field = GeometryIndex.regions[targetRegionId].findOrCreateField(node.positionX, node.positionY); Colony colony = Mock.mockColony(ColonyUserId: user.id); Ship newShip = builder.buildShip(newShipId, template, field, user.id, colony, false); //add user to commNode node.checkAndAddUser(user, newShip); node.sendCommMessage(user, "head1", "body1"); node.sendCommMessage(user, "head2", "body2"); SpacegameServer.BC.BusinessConnector bc = new SpacegameServer.BC.BusinessConnector(); string ret = bc.getCommNodeMessage(user.id, node.id, 0, 50); string expected = @"<messages> <message> <id>2</id> <commNodeId>" + node.id.ToString() + @"</commNodeId> <sender>" + user.id.ToString() + @"</sender> <headline>head2</headline> <messageBody>body2</messageBody> <sendingDate>2015-07-08T20:48:43.2544728Z</sendingDate> <newMessage>0</newMessage> </message> <message> <id>1</id> <commNodeId>" + node.id.ToString() + @"</commNodeId> <sender>1</sender> <headline>head1</headline> <messageBody>body1</messageBody> <sendingDate>2015-07-08T20:48:43.2464723Z</sendingDate> <newMessage>0</newMessage> </message> </messages>"; //sendingDate can't be tested, since it is set to Now() // so only the first few lines are compared ret = String.Join("", ret.Split(new[] { '\r', '\n' }).Where((e, i) => i < 14)); expected = String.Join("", expected.Split(new[] { '\r', '\n' }).Where((e, i) => i < 14)); Assert.AreEqual(expected, ret); }
public ShipBuild GetShipBuild(int id) { if (!_shipBuildMap.TryGetValue(id, out var item)) { var serializable = _content.GetShipBuild(id); item = new ShipBuild(serializable, this); _shipBuildMap.Add(id, item); } return(item); }
public static Ship CreateShipAtField(Core instance, User user, Field field) { SpacegameServer.Core.ShipBuild builder = new ShipBuild(instance); int newShipId = (int)instance.identities.shipLock.getNext(); ShipTemplate template = instance.shipTemplate.Where(e => e.Value.hullid == 1).First().Value; Colony colony = Mock.mockColony(ColonyUserId: user.id); Ship newShip = builder.buildShip(newShipId, template, field, user.id, colony, false); return(newShip); }
void CreateShip(ShipBuild a_build, IFFGROUP a_team, Vector3 a_position) { GameObject ship = Instantiate(DataManager.Instance.GetPrefab(a_build.m_hull)); ship.transform.SetParent(this.transform); BaseShip shipScript = ship.GetComponent<BaseShip>(); shipScript.Initialise(a_build.m_hardpoints); ship.transform.position = a_position; ship.GetComponent<ShipController>().SetIFF(a_team); //add ship to lists ObjectManager.Instance.AddShip(shipScript); }
private Ship createShipAtCommNode(User user, CommunicationNode node) { SpacegameServer.Core.ShipBuild builder = new ShipBuild(instance); int newShipId = (int)instance.identities.shipLock.getNext(); ShipTemplate template = instance.shipTemplate.Where(e => e.Value.hullid == 1).First().Value; var targetRegionId = GeometryIndex.calcRegionId(node.positionX, node.positionY); Field field = GeometryIndex.regions[targetRegionId].findOrCreateField(node.positionX, node.positionY); Colony colony = Mock.mockColony(ColonyUserId: user.id); Ship newShip = builder.buildShip(newShipId, template, field, user.id, colony, false); return(newShip); }
private void AddShipToCompare(Ship findShip, ShipBuild build = null) { CompareShip childForm = new CompareShip(); if (this.MdiChildren.Length == 0) { childForm.IsFirstChild = true; FirstChild = childForm; } childForm.MdiParent = this; string selection = findShip.Name; TableLayoutPanel tl = childForm.Controls.Find("ShipMetricsTable", true).FirstOrDefault() as TableLayoutPanel; MetricsExctractor Extractor = new MetricsExctractor(findShip); MetricsDrawer Drawer = new MetricsDrawer(tl); MetricsTableComposer.DrawTable(Extractor, Drawer); if (build != null) { selection += "**PB**"; BuildManagerHandler bmHandler = new BuildManagerHandler(tl, Extractor.GetMetrics()); bmHandler.PerformAnimation(false); bmHandler.KeepBackgroundTransparent(true); bmHandler.ApplyAll(build.Flags); bmHandler.ApplyAll(build.Skills); bmHandler.ApplyAll(build.Upgrades); } childForm.Text = selection; childForm.StartPosition = FormStartPosition.Manual; int positionX = (this.MdiChildren.Length - 1) * 252; Point point = new Point(positionX, 0); childForm.Location = point; if (childForm.IsFirstChild == false) { MetricsCompare.DoCompare(childForm.Controls.Find("ShipMetricsTable", true).FirstOrDefault() as TableLayoutPanel, FirstChild.Controls.Find("ShipMetricsTable", true).FirstOrDefault() as TableLayoutPanel); } childForm.Show(); toolStripStatusLabel.Text = "Added '" + selection + "' to compare."; statusStrip.Refresh(); }
private void loadToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "Randomizer Ship Build (*.bld)|*.bld"; openFile.DefaultExt = "bld"; openFile.InitialDirectory = Program.Settings.SaveLocation; if (openFile.ShowDialog() == DialogResult.OK) { string fileName = openFile.FileName; ShipBuild build = BinarySerialize.ReadFromBinaryFile <ShipBuild>(fileName); LoadBuild(build); } else { return; } }
public void buildShipTest() { SpacegameServer.Core.ShipBuild builder = new ShipBuild(Core.Instance); //mock Hull to be build ShipHull hull = null; if (Core.Instance.ShipHulls.Count() > 1 && Core.Instance.ShipHulls[1] != null) { hull = Core.Instance.ShipHulls[1]; } else { hull = Mock.mockShipHull(); hull.ShipHullsModulePositions.Add(Mock.mockShipHullsModulePosition(hull.id, 2, 3)); hull.ShipHullGain = Mock.mockShipHullsGain(hull.id, crew: 3); Core.Instance.ShipHulls[hull.id] = hull; } int newShipId = (int)instance.identities.shipLock.getNext(); Field field = Mock.mockField(); User user = Mock.MockUser(id: (int)instance.identities.allianceId.getNext()); instance.users.TryAdd(user.id, user); int userId = user.id; Colony colony = Mock.mockColony(ColonyUserId: userId); bool fastBuild = false; ShipTemplate template = Mock.mockShipTemplate(shiphullid: hull.id, userid: userId); Module crew = Mock.mockModule(); crew.moduleGain = Mock.mockModulesGain(crew.id, crew: 5); Core.Instance.Modules[crew.id] = crew; template.shipModules.Add(Mock.mockShipTemplateModules()); Ship newShip = builder.buildShip(newShipId, template, field, user.id, colony, fastBuild); Assert.AreEqual(newShip.id, newShipId); Assert.AreEqual(newShip.crew, hull.ShipHullGain.crew + crew.moduleGain.crew); }
public ShipBuild GetShipBuild(ItemId <ShipBuild> id, bool notNull = false) { if (_database._shipBuildMap.TryGetValue(id.Value, out var item)) { return(item); } var serializable = _content.GetShipBuild(id.Value); if (serializable != null && !serializable.Disabled) { return(ShipBuild.Create(serializable, this)); } var value = ShipBuild.DefaultValue; if (notNull && value == null) { throw new DatabaseException("Data not found " + id); } return(value); }
private void LoadShipMetrics() { if (RandomizedShip == null) { return; } LOG.Debug("Loading ship metrics"); MetricsExctractor Extractor = new MetricsExctractor(RandomizedShip); MetricsDrawer Drawer = new MetricsDrawer(ShipMetricsTable); MetricsTableComposer.DrawTable(Extractor, Drawer); try { Settings settings = Commons.GetSettings(); string fileName = settings.SaveLocation; if (!fileName.EndsWith("\\")) { fileName += @"\"; } fileName += RandomizedShip.Name + ".bld"; ShipBuild build = null; if (File.Exists(fileName)) { build = BinarySerialize.ReadFromBinaryFile <ShipBuild>(fileName); } if (build != null) { BuildManagerHandler bmHandler = new BuildManagerHandler(ShipMetricsTable, Extractor.GetMetrics()); bmHandler.PerformAnimation(false); bmHandler.KeepBackgroundTransparent(false); bmHandler.ApplyAll(build.Flags); bmHandler.ApplyAll(build.Skills); bmHandler.ApplyAll(build.Upgrades); } } catch (Exception) { } }
public void Load() { foreach (var item in _content.AmmunitionObsoleteList) { if (!item.Disabled && !_database._ammunitionObsoleteMap.ContainsKey(item.Id)) { AmmunitionObsolete.Create(item, this); } } foreach (var item in _content.ComponentList) { if (!item.Disabled && !_database._componentMap.ContainsKey(item.Id)) { Component.Create(item, this); } } foreach (var item in _content.ComponentModList) { if (!item.Disabled && !_database._componentModMap.ContainsKey(item.Id)) { ComponentMod.Create(item, this); } } foreach (var item in _content.ComponentStatsList) { if (!item.Disabled && !_database._componentStatsMap.ContainsKey(item.Id)) { ComponentStats.Create(item, this); } } foreach (var item in _content.DeviceList) { if (!item.Disabled && !_database._deviceMap.ContainsKey(item.Id)) { Device.Create(item, this); } } foreach (var item in _content.DroneBayList) { if (!item.Disabled && !_database._droneBayMap.ContainsKey(item.Id)) { DroneBay.Create(item, this); } } foreach (var item in _content.FactionList) { if (!item.Disabled && !_database._factionMap.ContainsKey(item.Id)) { Faction.Create(item, this); } } foreach (var item in _content.SatelliteList) { if (!item.Disabled && !_database._satelliteMap.ContainsKey(item.Id)) { Satellite.Create(item, this); } } foreach (var item in _content.SatelliteBuildList) { if (!item.Disabled && !_database._satelliteBuildMap.ContainsKey(item.Id)) { SatelliteBuild.Create(item, this); } } foreach (var item in _content.ShipList) { if (!item.Disabled && !_database._shipMap.ContainsKey(item.Id)) { Ship.Create(item, this); } } foreach (var item in _content.ShipBuildList) { if (!item.Disabled && !_database._shipBuildMap.ContainsKey(item.Id)) { ShipBuild.Create(item, this); } } foreach (var item in _content.SkillList) { if (!item.Disabled && !_database._skillMap.ContainsKey(item.Id)) { Skill.Create(item, this); } } foreach (var item in _content.TechnologyList) { if (!item.Disabled && !_database._technologyMap.ContainsKey(item.Id)) { Technology.Create(item, this); } } foreach (var item in _content.CharacterList) { if (!item.Disabled && !_database._characterMap.ContainsKey(item.Id)) { Character.Create(item, this); } } foreach (var item in _content.FleetList) { if (!item.Disabled && !_database._fleetMap.ContainsKey(item.Id)) { Fleet.Create(item, this); } } foreach (var item in _content.LootList) { if (!item.Disabled && !_database._lootMap.ContainsKey(item.Id)) { LootModel.Create(item, this); } } foreach (var item in _content.QuestList) { if (!item.Disabled && !_database._questMap.ContainsKey(item.Id)) { QuestModel.Create(item, this); } } foreach (var item in _content.QuestItemList) { if (!item.Disabled && !_database._questItemMap.ContainsKey(item.Id)) { QuestItem.Create(item, this); } } foreach (var item in _content.AmmunitionList) { if (!item.Disabled && !_database._ammunitionMap.ContainsKey(item.Id)) { Ammunition.Create(item, this); } } foreach (var item in _content.BulletPrefabList) { if (!item.Disabled && !_database._bulletPrefabMap.ContainsKey(item.Id)) { BulletPrefab.Create(item, this); } } foreach (var item in _content.VisualEffectList) { if (!item.Disabled && !_database._visualEffectMap.ContainsKey(item.Id)) { VisualEffect.Create(item, this); } } foreach (var item in _content.WeaponList) { if (!item.Disabled && !_database._weaponMap.ContainsKey(item.Id)) { Weapon.Create(item, this); } } foreach (var item in _content.Images) { if (!_database._images.ContainsKey(item.Key)) { _database._images.Add(item.Key, item.Value); } } foreach (var item in _content.AudioClips) { if (!_database._audioClips.ContainsKey(item.Key)) { _database._audioClips.Add(item.Key, item.Value); } } foreach (var item in _content.Localizations) { if (!_database._localizations.ContainsKey(item.Key)) { _database._localizations.Add(item.Key, item.Value); } } if (_database.DatabaseSettings == null) { _database.DatabaseSettings = DatabaseSettings.Create(_content.DatabaseSettings ?? new Serializable.DatabaseSettingsSerializable { ItemType = Enums.ItemType.DatabaseSettings }, this); } if (_database.ExplorationSettings == null) { _database.ExplorationSettings = ExplorationSettings.Create(_content.ExplorationSettings ?? new Serializable.ExplorationSettingsSerializable { ItemType = Enums.ItemType.ExplorationSettings }, this); } if (_database.GalaxySettings == null) { _database.GalaxySettings = GalaxySettings.Create(_content.GalaxySettings ?? new Serializable.GalaxySettingsSerializable { ItemType = Enums.ItemType.GalaxySettings }, this); } if (_database.ShipSettings == null) { _database.ShipSettings = ShipSettings.Create(_content.ShipSettings ?? new Serializable.ShipSettingsSerializable { ItemType = Enums.ItemType.ShipSettings }, this); } }
public void AddShipBuild(int id, ShipBuild item) { _database._shipBuildMap.Add(id, item); }
public void LoadBuild(ShipBuild build) { LOG.Debug("LoadBuild(" + build.ID + ")"); Ship findShip = Program.AllShips.Find(x => x.ID == build.ID); SelectShip(findShip); foreach (string flag in build.Flags) { foreach (Control ctrl in panelFlags.Controls) { if (ctrl is PictureBox box) { if (box.AccessibleName != null && box.AccessibleName.ToString().Equals(flag)) { int count = int.Parse(combatFlagsCount.Text); if (box.AccessibleRole == AccessibleRole.Alert) { count++; combatFlagsCount.Text = count.ToString(); } box.AccessibleDescription = "X"; box.Refresh(); bmHandler.PerformAnimation(false); bmHandler.ApplyValue(box.AccessibleName); } } } } foreach (string skill in build.Skills) { if (skill.Equals("Camoflage")) { cbCamoflage.Checked = true; } else { foreach (Control ctrl in panelCaptainSkills.Controls) { if (ctrl is PictureBox box) { if (box.AccessibleName != null && box.AccessibleName.ToString().Equals(skill)) { AddSkillPoints(skill); box.AccessibleDescription = "X"; bmHandler.PerformAnimation(false); Skill currentSkill = FindSkillByAccessibleName(box.AccessibleName); if (currentSkill != null) { foreach (Perk perk in currentSkill.Perks) { bmHandler.ApplyValue(perk.ID, perk.Value); } } box.Refresh(); } } } } } foreach (long upgradeId in build.Upgrades) { Consumable consumable = Program.Upgrades.Find(x => x.ID == upgradeId); PictureBox box = new PictureBox(); box.Name = "Upgrade"; box.AccessibleName = consumable.Name; box.Tag = consumable.ID; box.Load(consumable.ImageUrl); box.SizeMode = PictureBoxSizeMode.AutoSize; box.Location = new System.Drawing.Point(20, 15); box.Click += upgradeSlot1_Click; ToolTip ttip = new ToolTip(); ttip.SetToolTip(box, consumable.Name); if (consumable.GetSlotNumber() == 1) { upgradeSlot1.Controls.Add(box); ttip.SetToolTip(upgradeSlot1, consumable.Name); } else if (consumable.GetSlotNumber() == 2) { upgradeSlot2.Controls.Add(box); ttip.SetToolTip(upgradeSlot2, consumable.Name); } else if (consumable.GetSlotNumber() == 3) { upgradeSlot3.Controls.Add(box); ttip.SetToolTip(upgradeSlot3, consumable.Name); } else if (consumable.GetSlotNumber() == 4) { upgradeSlot4.Controls.Add(box); ttip.SetToolTip(upgradeSlot4, consumable.Name); } else if (consumable.GetSlotNumber() == 5) { upgradeSlot5.Controls.Add(box); ttip.SetToolTip(upgradeSlot5, consumable.Name); } else if (consumable.GetSlotNumber() == 6) { upgradeSlot6.Controls.Add(box); ttip.SetToolTip(upgradeSlot6, consumable.Name); } applyUpgradeValues(consumable.ID.ToString(), false); } if (cbCamoflage.Checked) { bmHandler.ApplyValue("Camoflage"); } bmHandler.PerformAnimation(true); }
// Update is called once per frame void Update() { //Debug.Log(m_numOfShipsDebug); if(Input.GetKey(KeyCode.Space)) { string hull = "basicShip"; List<string> hardpoints = new List<string>(); hardpoints.Add("basicEngine"); hardpoints.Add("basicShield"); hardpoints.Add("basicTurretCannon"); hardpoints.Add("basicTurretCannon"); hardpoints.Add("basicTurretCannon2"); List<int> controlGroups = new List<int>(); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); float cost = 100.0f; ShipBuild tempBuild = new ShipBuild(hull, hardpoints, controlGroups, cost); CreateShip(tempBuild, IFFGROUP.TEAM1, new Vector3(Random.value * 100, 0, 0)); m_numOfShipsDebug++; } }
// Use this for initialization void Start() { //debug string hull = "basicShip"; List<string> hardpoints = new List<string>(); hardpoints.Add("basicEngine"); hardpoints.Add("basicShield"); hardpoints.Add("basicTurretCannon"); hardpoints.Add("basicTurretCannon"); hardpoints.Add("basicTurretCannon2"); List<int> controlGroups = new List<int>(); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); controlGroups.Add(0); float cost = 100.0f; ShipBuild tempBuild = new ShipBuild(hull, hardpoints, controlGroups, cost); CreateShip(tempBuild, IFFGROUP.TEAM1, new Vector3(-5, 0, 0)); CreateShip(tempBuild, IFFGROUP.TEAM1, new Vector3(-5, 7, 0)); CreateShip(tempBuild, IFFGROUP.TEAM2, new Vector3(5, 0, 0)); CreateShip(tempBuild, IFFGROUP.TEAM2, new Vector3(5, -7, 0)); }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) { LOG.Debug("SaveBuild()"); ShipBuild build = new ShipBuild(); build.ID = selectedShip.ID; build.Name = selectedShip.Name; List <string> skills = new List <string>(); foreach (Control ctrl in panelCaptainSkills.Controls) { if (ctrl is PictureBox box) { if (box.AccessibleDescription != null && !box.AccessibleDescription.ToString().Equals("")) { skills.Add(box.AccessibleName.ToString()); } } } if (cbCamoflage.Checked) { skills.Add("Camoflage"); } build.Skills = skills; List <string> Flags = new List <string>(); foreach (Control ctrl in panelFlags.Controls) { if (ctrl is PictureBox box) { if (box.AccessibleDescription != null && !box.AccessibleDescription.ToString().Equals("")) { Flags.Add(box.AccessibleName.ToString()); } } } build.Flags = Flags; List <long> Upgrades = new List <long>(); if (upgradeSlot1.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot1.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } if (upgradeSlot2.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot2.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } if (upgradeSlot3.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot3.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } if (upgradeSlot4.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot4.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } if (upgradeSlot5.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot5.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } if (upgradeSlot6.Controls.Count > 0) { PictureBox box = (PictureBox)upgradeSlot6.Controls[0]; if (!box.Tag.ToString().Equals("")) { Upgrades.Add(long.Parse(box.Tag.ToString())); } } build.Upgrades = Upgrades; build.Modified = DateTime.Now; build.GameVersion = Program.Settings.GameVersion; string def = Program.Settings.SaveLocation; SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.InitialDirectory = def; saveDlg.DefaultExt = "bld"; saveDlg.FileName = selectedShip.Name + ".bld"; saveDlg.Filter = "Randomizer Ship Build (*.bld)|*.bld"; if (saveDlg.ShowDialog() == DialogResult.OK) { string file = saveDlg.FileName; if (!file.EndsWith(".bld")) { file += ".bld"; } BinarySerialize.WriteToBinaryFile(file, build); } }