Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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();
        }