public void SetInputDisplayGui(List <InputImageGui> guiList) { _guiList = guiList; _guiDictionary = new Dictionary <InputDisplayTypeEnum, InputImageGui>(); _guiList.ForEach(gui => _guiDictionary.Add(gui.InputDisplayType, gui)); _inputDisplayType = InputDisplayTypeEnum.Classic; List <ToolStripMenuItem> items = _guiList.ConvertAll( gui => new ToolStripMenuItem(gui.InputDisplayType.ToString())); for (int i = 0; i < items.Count; i++) { ToolStripMenuItem item = items[i]; InputImageGui gui = _guiList[i]; InputDisplayTypeEnum inputDisplayType = gui.InputDisplayType; item.Click += (sender, e) => { BackColor = GetBackColor(inputDisplayType); _inputDisplayType = inputDisplayType; items.ForEach(item2 => item2.Checked = item2 == item); }; item.Checked = inputDisplayType == _inputDisplayType; } ContextMenuStrip = new ContextMenuStrip() { }; items.ForEach(item => ContextMenuStrip.Items.Add(item)); }
public InputManager(List <WatchVariableControlPrecursor> variables, Control inputControl, WatchVariablePanel variableTable, InputImageGui gui) : base(variables, variableTable) { _gui = gui; SplitContainer splitContainerInput = inputControl.Controls["splitContainerInput"] as SplitContainer; _inputDisplayPanel = splitContainerInput.Panel1.Controls["inputDisplayPanel"] as InputDisplayPanel; _inputDisplayPanel.setInputDisplayGui(_gui); }
public InputManager(List <WatchVariable> inputData, Control inputControl, NoTearFlowLayoutPanel variableTable, InputImageGui gui) : base(inputData, variableTable) { _gui = gui; SplitContainer splitContainerInput = inputControl.Controls["splitContainerInput"] as SplitContainer; _inputDisplayPanel = splitContainerInput.Panel1.Controls["inputDisplayPanel"] as InputDisplayPanel; _inputDisplayPanel.setInputDisplayGui(_gui); }
protected override void OnPaint(PaintEventArgs e) { if (_guiDictionary == null) { return; } InputImageGui gui = _guiDictionary[_inputDisplayType]; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; Rectangle scaledRect = new Rectangle(new Point(), Size).Zoom(gui.ControllerImage.Value.Size); e.Graphics.DrawImage(gui.ControllerImage.Value, scaledRect); InputFrame inputs = _currentInputs; if (inputs == null) { return; } foreach (var input in Enum.GetValues(typeof(InputConfig.ButtonMask))) { if (inputs.IsButtonPressed((InputConfig.ButtonMask)input) && gui.ButtonImages.TryGetValue((InputConfig.ButtonMask)input, out Lazy <Image> img)) { e.Graphics.DrawImage(img.Value, scaledRect); } } float controlStickOffsetScale = GetScale(_inputDisplayType); float hOffset = inputs.ControlStickH * controlStickOffsetScale * scaledRect.Width; float vOffset = inputs.ControlStickV * controlStickOffsetScale * scaledRect.Width; RectangleF controlStickRectange = new RectangleF(scaledRect.X + hOffset, scaledRect.Y - vOffset, scaledRect.Width, scaledRect.Height); e.Graphics.DrawImage(gui.ControlStickImage.Value, controlStickRectange); }
public void setInputDisplayGui(InputImageGui gui) { _gui = gui; }
protected override void OnPaint(PaintEventArgs e) { if (_guiDictionary == null) { return; } InputImageGui gui = _guiDictionary[_inputDisplayType]; e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; Rectangle scaledRect = new Rectangle(new Point(), Size).Zoom(gui.ControllerImage.Size); e.Graphics.DrawImage(gui.ControllerImage, scaledRect); uint inputAddress = InputConfig.CurrentInputAddress; bool buttonAPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonAOffset) & InputConfig.ButtonAMask) != 0; if (buttonAPressed) { e.Graphics.DrawImage(gui.ButtonAImage, scaledRect); } bool buttonBPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonBOffset) & InputConfig.ButtonBMask) != 0; if (buttonBPressed) { e.Graphics.DrawImage(gui.ButtonBImage, scaledRect); } bool buttonZPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonZOffset) & InputConfig.ButtonZMask) != 0; if (buttonZPressed) { e.Graphics.DrawImage(gui.ButtonZImage, scaledRect); } bool buttonStartPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonStartOffset) & InputConfig.ButtonStartMask) != 0; if (buttonStartPressed) { e.Graphics.DrawImage(gui.ButtonStartImage, scaledRect); } bool buttonRPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonROffset) & InputConfig.ButtonRMask) != 0; if (buttonRPressed) { e.Graphics.DrawImage(gui.ButtonRImage, scaledRect); } bool buttonLPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonLOffset) & InputConfig.ButtonLMask) != 0; if (buttonLPressed) { e.Graphics.DrawImage(gui.ButtonLImage, scaledRect); } bool buttonCUpPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonCUpOffset) & InputConfig.ButtonCUpMask) != 0; if (buttonCUpPressed) { e.Graphics.DrawImage(gui.ButtonCUpImage, scaledRect); } bool buttonCDownPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonCDownOffset) & InputConfig.ButtonCDownMask) != 0; if (buttonCDownPressed) { e.Graphics.DrawImage(gui.ButtonCDownImage, scaledRect); } bool buttonCLeftPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonCLeftOffset) & InputConfig.ButtonCLeftMask) != 0; if (buttonCLeftPressed) { e.Graphics.DrawImage(gui.ButtonCLeftImage, scaledRect); } bool buttonCRightPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonCRightOffset) & InputConfig.ButtonCRightMask) != 0; if (buttonCRightPressed) { e.Graphics.DrawImage(gui.ButtonCRightImage, scaledRect); } bool buttonDUpPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonDUpOffset) & InputConfig.ButtonDUpMask) != 0; if (buttonDUpPressed) { e.Graphics.DrawImage(gui.ButtonDUpImage, scaledRect); } bool buttonDDownPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonDDownOffset) & InputConfig.ButtonDDownMask) != 0; if (buttonDDownPressed) { e.Graphics.DrawImage(gui.ButtonDDownImage, scaledRect); } bool buttonDLeftPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonDLeftOffset) & InputConfig.ButtonDLeftMask) != 0; if (buttonDLeftPressed) { e.Graphics.DrawImage(gui.ButtonDLeftImage, scaledRect); } bool buttonDRightPressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonDRightOffset) & InputConfig.ButtonDRightMask) != 0; if (buttonDRightPressed) { e.Graphics.DrawImage(gui.ButtonDRightImage, scaledRect); } bool buttonU1Pressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonU1Offset) & InputConfig.ButtonU1Mask) != 0; if (buttonU1Pressed) { e.Graphics.DrawImage(gui.ButtonU1Image, scaledRect); } bool buttonU2Pressed = (Config.Stream.GetByte(inputAddress + InputConfig.ButtonU2Offset) & InputConfig.ButtonU2Mask) != 0; if (buttonU2Pressed) { e.Graphics.DrawImage(gui.ButtonU2Image, scaledRect); } float controlStickOffsetScale = GetScale(_inputDisplayType); sbyte controlStickH = (sbyte)Config.Stream.GetByte(inputAddress + InputConfig.ControlStickXOffset); sbyte controlStickV = (sbyte)Config.Stream.GetByte(inputAddress + InputConfig.ControlStickYOffset); float hOffset = controlStickH * controlStickOffsetScale * scaledRect.Width; float vOffset = controlStickV * controlStickOffsetScale * scaledRect.Width; RectangleF controlStickRectange = new RectangleF(scaledRect.X + hOffset, scaledRect.Y - vOffset, scaledRect.Width, scaledRect.Height); e.Graphics.DrawImage(gui.ControlStickImage, controlStickRectange); }