public void AddTurret() { Turret t = new Turret(); t.Name = "New Turret"; t.Asset = ""; t.Projectile = LevelManager.GetProjectiles()[0].Name; t.Range = 1.0F; t.FireRate = 1.0F; Turrets.Add(t); WriteChanges(); TreeRefreshNeeded?.Invoke(); }
private void PopulateTreeWithProjectilees() { string previousValue = ""; bool foundPrevious = false; TreeIter selected; if (tree.Selection.GetSelected(out selected)) { previousValue = (string)ListModel.GetValue(selected, 0); } List <Projectile> items = LevelManager.GetProjectiles(); ListModel.Clear(); if (null != items) { for (int i = 0; i < items.Count; i++) { ListModel.AppendValues(items[i].Name); TreeIter itr = ListModel.AppendValues(items[i].Name); if (previousValue == items[i].Name) { foundPrevious = true; selected = itr; } } } if (!foundPrevious) { // If not, here's the default ListModel.GetIterFirst(out selected); } tree.Selection.SelectIter(selected); }
public void SetTurret(string selectedStr) { GtkHelpers.FlushAllDeferredEvents(); Destroyed += TurretEditLayout_Destroyed; if (null != Layout) { Layout.Hide(); Layout.Destroy(); Layout = null; FireRateField = null; DPSfield = null; } Turrets = LevelManager.GetTurrets(); for (int i = 0; i < Turrets.Count; i++) { if (Turrets[i].Name == selectedStr) { Turret = Turrets[i]; } } Layout = new VBox(false, 0); AddWithViewport(Layout); HBox field = GtkHelpers.TextEntryField("Turret Name", Turret.Name, Name_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); field = GtkHelpers.TextEntryField("Asset", Turret.Asset, Asset_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); FireRateField = GtkHelpers.TextEntryField("Fire Rate", Turret.FireRate.ToString(), FireRate_Changed, true, GtkHelpers.ValueType.Float); Layout.PackStart(FireRateField, false, false, 0); FireRateField.Show(); field = GtkHelpers.TextEntryField("Range", Turret.Range.ToString(), Range_Changed, true, GtkHelpers.ValueType.Float); Layout.PackStart(field, false, false, 0); field.Show(); field = GtkHelpers.TextEntryField("Cost", Turret.Cost.ToString(), Cost_Changed, true, GtkHelpers.ValueType.Float); Layout.PackStart(field, false, false, 0); field.Show(); List <Projectile> projectiles = LevelManager.GetProjectiles(); ProjectileNames = new List <string>(); int currIndex = 0; for (int i = 0; i < projectiles.Count; i++) { ProjectileNames.Add(projectiles[i].Name); if (projectiles[i].Name == Turret.Projectile) { currIndex = i; } } field = GtkHelpers.ComboBox("Projectile", ProjectileNames.ToArray(), currIndex, Projectile_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); DPSfield = GtkHelpers.TextEntryField("Damage per Sec", Turret.Cost.ToString(), DPS_Changed, true, GtkHelpers.ValueType.Float); Layout.PackStart(DPSfield, false, false, 0); DPSfield.Show(); RecalculateDPS(); Show(); ShowAll(); }
public void SetProjectile(string selectedStr) { GtkHelpers.FlushAllDeferredEvents(); Destroyed += ProjectileEditLayout_Destroyed; if (null != Layout) { Layout.Hide(); Layout.Destroy(); Layout = null; } Projectiles = LevelManager.GetProjectiles(); Projectile = null; for (int i = 0; i < Projectiles.Count; i++) { if (Projectiles[i].Name == selectedStr) { Projectile = Projectiles[i]; } } if (Projectile == null) { throw new Exception("Could not find Projectile " + selectedStr); } Layout = new VBox(false, 0); AddWithViewport(Layout); HBox field = GtkHelpers.TextEntryField("Projectile Name", Projectile.Name, Name_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); field = GtkHelpers.TextEntryField("Asset", Projectile.Asset, Asset_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); field = GtkHelpers.TextEntryField("Impact Asset", Projectile.ImpactAsset, ImpactAsset_Changed, true); Layout.PackStart(field, false, false, 0); field.Show(); field = GtkHelpers.TextEntryField("AirSpeed", Projectile.AirSpeed.ToString(), AirSpeed_Changed, true, GtkHelpers.ValueType.Float); Layout.PackStart(field, false, false, 0); field.Show(); EffectsTree = new TreeView(); Layout.PackStart(EffectsTree, false, false, 0); EffectsTree.Show(); ComboBoxText comboBox = new ComboBoxText(); foreach (string name in Enum.GetNames(typeof(ProjectileEffectType))) { comboBox.AppendText(name); } comboBox.Active = 0; TreeViewColumn typeCoumn = new TreeViewColumn(); TreeViewColumn impactColumn = new TreeViewColumn(); TreeViewColumn durationColumn = new TreeViewColumn(); TreeViewColumn radiusColumn = new TreeViewColumn(); CellRendererText durationCellRenderer = new CellRendererText(); durationCellRenderer.Editable = true; durationCellRenderer.Edited += DurationCell_Edited; CellRendererText impactCellRenderer = new CellRendererText(); impactCellRenderer.Editable = true; impactCellRenderer.Edited += ImpactCell_Edited; CellRendererText radiusCellRenderer = new CellRendererText(); radiusCellRenderer.Editable = true; radiusCellRenderer.Edited += RadiusCellRenderer_Edited; CellRendererCombo comboCellRenderer = new CellRendererCombo(); comboCellRenderer.Editable = true; comboCellRenderer.Edited += ComboCellRenderer_Edited; comboCellRenderer.TextColumn = 0; comboCellRenderer.HasEntry = false; typeCoumn.PackStart(comboCellRenderer, true); typeCoumn.Title = "Type"; typeCoumn.AddAttribute(comboCellRenderer, "text", 1); EffectsTree.AppendColumn(typeCoumn); durationColumn.PackStart(durationCellRenderer, true); durationColumn.Title = "Duration"; durationColumn.AddAttribute(durationCellRenderer, "text", 2); EffectsTree.AppendColumn(durationColumn); impactColumn.PackStart(impactCellRenderer, true); impactColumn.Title = "Impact"; impactColumn.AddAttribute(impactCellRenderer, "text", 3); EffectsTree.AppendColumn(impactColumn); radiusColumn.PackStart(radiusCellRenderer, true); radiusColumn.Title = "Radius"; radiusColumn.AddAttribute(radiusCellRenderer, "text", 4); EffectsTree.AppendColumn(radiusColumn); EffectsModel = new ListStore(typeof(int), typeof(string), typeof(float), typeof(float), typeof(float)); EffectsTree.Model = EffectsModel; EffectsTree.Selection.Mode = SelectionMode.Single; PopulateTreeWithEffects(); field = new HBox(false, 5); Layout.PackStart(field, false, false, 0); field.Show(); Button b = new Button("+"); b.Clicked += NewEffect_Clicked; b.Show(); field.PackStart(b, false, false, 0); b = new Button("-"); b.Clicked += RemoveEffect_Clicked; b.Show(); field.PackStart(b, false, false, 0); Show(); ShowAll(); }