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; } }
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; }