// <----O----> // 4 tex: -,+, cursor, area // pos: top/left corner, ~size of button, size of area, siez of cursor // sizes: 5 items: dec button, inc button, body, cursor (width), gap and height (common for all parts) public VolumeSelector(Vector2 position, UInt16[] sizes, Byte defaultVolume = 50, Byte stepsize = 10) { Position = position; Sizes = sizes; currentVolume = defaultVolume; StepSize = stepsize; // check: body = cursor * 11 int width = sizes[(int)VSSizes.Body] + 2 * sizes[(int)VSSizes.Gap]; //+ sizes[(int)VSSizes.DecButton] + sizes[(int)VSSizes.IncButton] System.Diagnostics.Debug.Print(string.Format("w={0} si-body={1} incpx={2}", width, sizes[(int)VSSizes.Body], (int)position.X + sizes[(int)VSSizes.Body] + sizes[(int)VSSizes.DecButton] + sizes[(int)VSSizes.Gap])); // ~ two cursor sizes are missing 0-10 and 90-100 => upd 19/06/16: only 1: 100 // issue comes from: input data (validation/adjustement needed) or size calc here (not done ~body size may be min size) ControlArea = new Rectangle((int)position.X + sizes[(int)VSSizes.DecButton] + sizes[(int)VSSizes.Gap], (int)position.Y, width, sizes[(int)VSSizes.Height]); CursorRect = new Rectangle((int)position.X + sizes[(int)VSSizes.DecButton] + sizes[(int)VSSizes.Gap] + (currentVolume / stepsize) * sizes[(int)VSSizes.Cursor], (int)position.Y, sizes[(int)VSSizes.Cursor], sizes[(int)VSSizes.Height]); System.Diagnostics.Debug.Print(string.Format("contArea={0}", ControlArea)); //pos, size, ISSUE/FIXED ==> inc pos is wrong, covered by/over body tex // inc pos miss a gap before (TC?) (gap or gap * 2 = no change) DecreaseVolume = new SimpleButton(new Vector2((int)position.X, (int)position.Y), new Vector2(sizes[(int)VSSizes.DecButton], sizes[(int)VSSizes.Height]), 0.02f); IncreaseVolume = new SimpleButton(new Vector2((int)position.X + sizes[(int)VSSizes.Body] + sizes[(int)VSSizes.DecButton] + sizes[(int)VSSizes.Gap] * 2, (int)position.Y), new Vector2(sizes[(int)VSSizes.IncButton], sizes[(int)VSSizes.Height]), 0.02f); }
protected override void Initialize() { graphics.ApplyChanges(); testButton1 = new SimpleButton(new Vector2(100, 80), new Vector2(64, 64)); cooldown1 = new Button(new Vector2(100, 180), new Vector2(64, 64), null, null, 0.4f, 5f); //cooldown1.Enabled cbtest1 = new Checkbox(new Vector2(180, 80), new Vector2(64, 64)); //cbtest1.Enabled = false; //circle button: 64x64 base rec // 445,232 (TL corner), R=32 centre=477,264 //445, 232 circleButton1 = new SimpleButton(new Vector2(477, 264), new Vector2(64, 64), 0.8f, CollisionType.Circle); // dec button, inc button, body, cursor (width), gap and height // body size = 11 * cursorsize UInt16[] vsSizes = new UInt16[6] { 20, 20, 110, 10, 1, 64 }; vstest1 = new VolumeSelector(new Vector2(300, 80), vsSizes); tbtest = new TButton(new Vector2(180, 180), new Vector2(64, 64), null, null, 0.2f, 8); //Body = 0, Gap = 1, Step = 2, Width = 3, Height = 4 spbar1 = new ProgressBar(new Vector2(100, 500), new UInt16[6] { 1, 0, 10, 5, 300, 64 }, false, 0, 10, 0.25f); //radio buttons // 830, 140 // 830, 224 // 830, 300 IsMouseVisible = true; base.Initialize(); }