Example #1
0
 void playerBuild(BuildOption option, int pos)
 {
     if (option.Typ == 1)
     {
         if (option.Value == 0)
         {
             if (Objects[World.Typ[pos]].DemolitionTyp.Length == 0)
             {
                 return;
             }
             byte newTyp = Objects[World.Typ[pos]].DemolitionTyp[0];
             applyBuildResourceCosts(newTyp);
             Build(newTyp, pos);
         }
         else
         {
             byte buildTyp = replaceBuildTyp(World.Typ[pos]);
             if (CanBuild(buildTyp, pos))
             {
                 applyBuildResourceCosts(buildTyp);
                 Build(buildTyp, pos);
                 buildPreviewEnabled = false;
             }
         }
     }
     else if (option.Typ == 2)
     {
         World.Zone[pos] = (byte)option.Value;
     }
 }
Example #2
0
        public MenuOverlay()
        {
            listBox                       = new Control.ButtonList();
            listBox.BackColor             = Color.FromArgb(255, 0, 255);
            listBox.ItemHeight            = 26;
            listBox.ItemDistance          = 4;
            listBox.Font                  = new Font("Franklin Gothic Medium", 11.25f);
            listBox.ChangeItem           += new System.EventHandler(listBox_ChangeItem);
            listBox.Enabled               = true;
            listBox.BorderImage           = new Bitmap("../Data/texture/gui/border.png");
            listBox.ButtonBorderImage     = new Bitmap("../Data/texture/gui/border2.png");
            listBox.ButtonDownBorderImage = new Bitmap("../Data/texture/gui/border3.png");
            Controls.Add(listBox);

            imageButtons = new ImageButton[10];
            buildOptions = new BuildOption[10][];
            InitializeComponent();
            GGL.IO.Parser parser = new GGL.IO.Parser();
            parser.AddAttribute("string", "name", "");
            parser.AddAttribute("int", "value", "-1");
            parser.AddAttribute("int", "typ", "1");
            parser.AddAttribute("int", "mode", "0");
            parser.AddAttribute("byte[]", "replace", "[]");
            parser.AddAttribute("byte[]", "color", "[]");
            parser.AddEnum("mode", new string[] { "single", "brush", "line", "equalLine", "cnline", "area", "equalArea" });
            parser.AddEnum("typ", new string[] { "label", "build", "zone" });
            for (int i = 0; i < Program.Game.Objects.Length; i++)
            {
                parser.AddEnum("obj", Program.Game.Objects[i].Name, i);
            }
            for (int i = 0; i < Program.Game.Zones.Length; i++)
            {
                parser.AddEnum("zone", Program.Game.Zones[i].Name, i);
            }
            Console.WriteLine("//load: gui");
            parser.ParseFile("../Data/config/guiBuildMenu.gd");

            for (int i = 0; i < 10; i++)
            {
                if (parser.Exists("button_" + i))
                {
                    imageButtons[i]          = new ImageButton();
                    imageButtons[i].Size     = new Size(64, 64);
                    imageButtons[i].Anchor   = AnchorStyles.Left;
                    imageButtons[i].Location = new Point(8, 72 * i);
                    imageButtons[i].Visible  = true;
                    string btnname = parser.GetAttribute <string>("button_" + i, "name");
                    if (File.Exists("../Data/texture/gui/" + btnname + ".png"))
                    {
                        imageButtons[i].LoadImages(new Bitmap("../Data/texture/gui/" + btnname + ".png"), new Bitmap("../Data/texture/gui/" + btnname + "Down.png"));
                    }
                    else
                    {
                        imageButtons[i].LoadImages(new Bitmap("../Data/texture/gui/empty.png"), new Bitmap("../Data/texture/gui/emptyDown.png"));
                    }
                    Controls.Add(imageButtons[i]);

                    int size = -1;
                    while (parser.Exists(btnname + "_" + ++size))
                    {
                        ;
                    }
                    buildOptions[i] = new BuildOption[size];
                    for (int i2 = 0; i2 < buildOptions[i].Length; i2++)
                    {
                        string name    = btnname + "_" + i2;
                        int    typ     = parser.GetAttribute <int>(name, "typ");
                        int    value   = parser.GetAttribute <int>(name, "value");
                        int    mode    = parser.GetAttribute <int>(name, "mode");
                        var    text    = parser.GetAttribute <string>(name, "name");
                        var    replace = parser.GetAttribute <byte[]>(name, "replace");
                        var    bytes   = parser.GetAttribute <byte[]>(name, "color");
                        if (bytes.Length == 3)
                        {
                            buildOptions[i][i2] = new BuildOption(text, typ, value, mode, replace, Color.FromArgb(bytes[0], bytes[1], bytes[2]));
                        }
                        else
                        {
                            buildOptions[i][i2] = new BuildOption(text, typ);
                        }
                    }
                    imageButtons[i].SwitchMode  = true;
                    imageButtons[i].ButtonDown += new System.EventHandler(imageButton_ButtonDown);
                    imageButtons[i].ButtonUp   += new System.EventHandler(imageButton_ButtonUp);
                }
            }
            this.DoubleBuffered = true;
            Width  = Program.MainWindow.Width;
            Height = Program.MainWindow.Height;
        }