public void DynamicFormula() { var gal = new Galaxy(); Empire emp = new Empire(); Mod.Current = new Mod(); var armor = new ComponentTemplate(); armor.Name = armor.ModID = "Armor"; armor.Size = 10; armor.Durability = new ComputedFormula <int>("self.Size * 3", armor, true); Mod.Current.ComponentTemplates.Add(armor); var mount = new Mount(); mount.ModID = mount.Name = "Scale Mount"; mount.DurabilityPercent = 200; mount.SizePercent = new ComputedFormula <int>("design.Hull.Size", mount, true); Mod.Current.Mounts.Add(mount); var hull = new Hull <Ship>(); hull.ModID = hull.Name = "Generic Hull"; hull.Size = 150; Mod.Current.Hulls.Add(hull); Mod.Current.RefreshObjects(); var design = new Design <Ship>(); Galaxy.Current.AssignID(design); var mct = new MountedComponentTemplate(design, armor, mount); design.Hull = hull; design.Components.Add(mct); mct.Container = design; design.Owner = emp; Assert.AreEqual(30, armor.Durability.Value); // 10 * 3 Assert.AreEqual(mct.Durability, 60); // 30 * 200% Assert.AreEqual(15, mct.Size); // 10 * 150% }
private void BindAvailableComponents() { lstComponentsAvailable.Initialize(32, 32); if (Design != null) { IEnumerable <ComponentTemplate> comps = Empire.Current.UnlockedItems.OfType <ComponentTemplate>(); // filter by vehicle type comps = comps.Where(comp => comp.VehicleTypes.HasFlag(Design.VehicleType)); // filter by can-use-mount if the user wants to if (chkFilterByMount.Checked) { comps = comps.Where(comp => comp.CanUseMount(CurrentMount)); } // filter by only-latest if (chkOnlyLatest.Checked) { comps = comps.OnlyLatestVersions(comp => comp.Family); } var complist = comps.ToList(); foreach (var comp in complist) { MountedComponentTemplate mct; if (comp.CanUseMount(CurrentMount)) { mct = new MountedComponentTemplate(Design, comp, CurrentMount); } else { mct = new MountedComponentTemplate(Design, comp); } lstComponentsAvailable.AddItemWithImage(comp.Group, mct.Size.Kilotons() + " " + mct.Name, mct, mct.Icon); } } }
private void ShowComponentDetails(MountedComponentTemplate mct) { if (mct == null) { picDetailIcon.Image = null; txtDetailName.Text = "(no component)"; txtDetailSize.Text = null; resDetailMin.Amount = 0; resDetailOrg.Amount = 0; resDetailRad.Amount = 0; txtDetailDescription.Text = null; } else { var v = mct; picDetailIcon.Image = v.ComponentTemplate.Icon; txtDetailName.Text = v.Name; txtDetailSize.Text = v.Size.Kilotons(); resDetailMin.Amount = v.Cost[Resource.Minerals]; resDetailOrg.Amount = v.Cost[Resource.Organics]; resDetailRad.Amount = v.Cost[Resource.Radioactives]; txtDetailDescription.Text = v.ComponentTemplate.Description; } }
public ComponentReport(MountedComponentTemplate mct) { InitializeComponent(); Bind(mct); }
public void Bind(MountedComponentTemplate data) { Bind(new Component(null, data)); }