protected override void OnMouseDown(MouseEventArgs e) { Focus(); if (DisableMouseControl) { return; } Point position = new Point((int)(e.X / scale), (int)(e.Y / scale)); mouseDownPosition = lastMousePos = new Point(position.X, position.Y); Status resizeStatus; mouseDownItem = GetResizeStatusAt(e.X, e.Y, out resizeStatus); if (status == Status.CreatingControl) { mouseDownItem = FindControlAt(position.X, position.Y, true); if (mouseDownItem != null) { controlBeingCreated.SetParent((Dialog)mouseDownItem); } } else if (resizeStatus != Status.Idle) { status = resizeStatus; } else { mouseDownItem = FindControlAt(position.X, position.Y); } }
private void ControlAdded(AbstractControl control) { CBMainSelectedControl.Items.Add(control); if (CBMainSelectedControl.SelectedIndex == -1) { CBMainSelectedControl.SelectedIndex = 0; } }
public override void ReusePrefab() { AbstractControl lastearth = earthList[earthList.Count - 1]; Vector3 pos = new Vector2(lastearth.transform.localPosition.x + scalePref, lastearth.transform.localPosition.y); AbstractControl go = PoolController.Use(ControlPrefab, pos) as EarthControl; earthList.Add(go); earthList.Remove(earthList[earthList.Count - 1]); }
public override void ReusePrefab() { AbstractControl lastBgControl = backGroundList[backGroundList.Count - 1]; Vector3 pos = new Vector2(lastBgControl.transform.localPosition.x + scalePref, lastBgControl.transform.localPosition.y); AbstractControl go = PoolController.Use(ControlPrefab, pos) as BackgroundControl; backGroundList.Add(go); backGroundList.Remove(backGroundList[backGroundList.Count - 1]); }
public void ControlCreated(AbstractControl control) { CBMainSelectedControl.Items.Add(control); UncheckOtherCheckboxes(null); if (!data.Changed) { data.Changed = true; data.TabPage.Title += "*"; } }
public override void ReusePrefab() { AbstractControl lastPipe = pipeList[pipeList.Count - 1]; Vector3 pos = new Vector2(lastPipe.transform.localPosition.x + GetRandomLocalX(), gameView.transform.localPosition.y + GetRandomLocalY()); AbstractControl go = PoolController.Use(ControlPrefab, pos) as PipeControl; pipeList.Add(go); pipeList.Remove(pipeList[pipeList.Count - 1]); pipeLinkedList.AddLast(go); }
public void SelectItem(AbstractControl control) { SelectedItems.Clear(); if (control != null) { SelectedItems.Add(control); } MainSelectedItem = control; Parent.UpdateSelectedItem(); Invalidate(); }
private void delete_Click(object sender, EventArgs e) { AbstractControl dc = ((AbstractControl)propertyGrid.SelectedObject); if (dc != null) { CBMainSelectedControl.Items.Remove(dc); propertyGrid.SelectedObject = null; UpdateSelectedItem(); graphicsControl1.RemoveInterfaceItem(dc); graphicsControl1.Invalidate(); } //propertyGrid.ResetSelectedProperty(); //dc = null; }
/*public void Resort() * { * items.Sort(Comparerer); * items.Sort(Comparerer); * }*/ public void RemoveInterfaceItem(AbstractControl item) { try { item.Parent.RemoveControl((DialogControl)item); if (SelectedItems.Contains(item)) { SelectedItems.Remove(item); if (MainSelectedItem == item) { if (SelectedItems.Count == 0) { MainSelectedItem = null; } else { MainSelectedItem = SelectedItems[0]; } } } }catch (Exception ex) { } }
protected override void Draw() { //Render to a texture first (used to scale and set selection border color) //If the target screen height is lower than 1200, this texture will be bigger than the GraphicsDevice.SetRenderTarget(renderTarget); // Cache the current depth buffer //DepthStencilBuffer old = GraphicsDevice.DepthStencilBuffer; // Set our custom depth buffer // GraphicsDevice.DepthStencilBuffer = depthStencilBuffer; GraphicsDevice.Clear(Color.Black); //SpriteBatch.GraphicsDevice.RenderState.ScissorTestEnable = false; RasterizerState r1 = new RasterizerState(); r1.ScissorTestEnable = false; SpriteBatch.GraphicsDevice.RasterizerState = r1; //SpriteBatch.GraphicsDevice.RasterizerState.ScissorTestEnable = false; //Render background if (backgroundImage != null) { //Not using a shader for this.. So I must calculate a dest rectangle //It is used to keep aspect ratio, and display the background image as big as possible and centered. Rectangle bgPos = new Rectangle(); float wScale = ((float)Width / scale) / backgroundImage.Width; float hScale = ((float)Height / scale) / backgroundImage.Height; if (wScale > hScale) { bgPos.Width = (int)(Width / scale); bgPos.X = 0; bgPos.Height = (int)(wScale * backgroundImage.Height); bgPos.Y = (int)((Height / scale - bgPos.Height) / 2); } else { bgPos.Height = (int)(Height / scale); bgPos.Y = 0; bgPos.Width = (int)(hScale * backgroundImage.Width); bgPos.X = (int)((Width / scale - bgPos.Width) / 2); } // SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); SpriteBatch.Begin(SpriteSortMode.Immediate, XNA_BlendState.AlphaBlend); SpriteBatch.Draw(backgroundImage, bgPos, Color.White); SpriteBatch.End(); } //items is a list of the dialogs added foreach (Dialog d in items) { //A list of what should be rendered, in the order it should be rendered List <AbstractControl> renders = new List <AbstractControl>(); renders.Add(d); //Each dialog has a list of controls, sorted after render priority renders.AddRange(d.ChildControls); while (renders.Count > 0) { AbstractControl item = renders[0]; renders.RemoveAt(0); //A single control might add more controls to render correctly, but theese controls //wont be in the output script. //An example is that the checkbox adds an image if it is set to be checked. renders.InsertRange(0, item.ExtraControlsToRender); if (item.DrawTexture) { //Set image type Effect.CurrentTechnique = Effect.Techniques[Enum.GetName(typeof(ImageType), item.ImageType)]; //Clip rectangle used to clip controls when they are dragged outside of their parent dialog //SpriteBatch.GraphicsDevice.RenderState.ScissorTestEnable = true; //SpriteBatch.GraphicsDevice.RasterizerState.ScissorTestEnable = true; RasterizerState r2 = new RasterizerState(); r2.ScissorTestEnable = true; SpriteBatch.GraphicsDevice.RasterizerState = r2; SpriteBatch.GraphicsDevice.ScissorRectangle = item.ClipRect; Texture2D texture = item.Texture ?? defaultTexture; //Buttons/check boxes have both pressed/not pressed images in same texture Effect.Parameters["IsHalfTexture"].SetValue(item.IsHalfTexture); Effect.Parameters["IsBottomHalf"].SetValue(item.IsBottomHalf); Effect.Parameters["Tiled"].SetValue(item.IsTiled); Effect.Parameters["TintColor"].SetValue(item.Color.ToVector4()); Effect.Parameters["TextureSize"].SetValue(new Vector2(texture.Width, texture.Height)); Effect.Parameters["TargetSize"].SetValue(new Vector2(item.DrawRect.Width, item.DrawRect.Height)); //SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); SpriteBatch.Begin(SpriteSortMode.Immediate, XNA_BlendState.AlphaBlend); //Set blend function item.BlendState.Apply(GraphicsDevice); Effect.CurrentTechnique.Passes[0].Apply(); SpriteBatch.Draw(texture, item.DrawRect, null, Color.White); SpriteBatch.End(); BlendState.BlendStates[BlendMode.Alpha].Apply(GraphicsDevice);//Reset blend state } //Draw dialog title if (item is Dialog) { Dialog dialog = (Dialog)item; if (!string.IsNullOrEmpty(dialog.Title)) { DrawString(dialog.Title, dialog.TitleFontRect, dialog.TitleFont, Color.White); } } //Draw the control's text if needed if (item is DialogControl) { DialogControl control = (DialogControl)item; if (control.DrawText && !string.IsNullOrEmpty(control.Text)) { DrawString(control.Text, control.DrawRect, control.TextStyle, control.TextColor); } } } } //SpriteBatch.GraphicsDevice.RenderState.ScissorTestEnable = false; //SpriteBatch.GraphicsDevice.RasterizerState.ScissorTestEnable = false; RasterizerState r3 = new RasterizerState(); r3.ScissorTestEnable = false; SpriteBatch.GraphicsDevice.RasterizerState = r3; GraphicsDevice.SetRenderTarget(null); // GraphicsDevice.DepthStencilBuffer = old; Texture2D background = renderTarget /*.GetTexture()*/; //GraphicsDevice.SetRenderTarget(0, renderTarget); SpriteBatch.Begin(SpriteSortMode.Immediate, XNA_BlendState.AlphaBlend); //SpriteBatch.Draw(background, new Vector2(0, 0), Color.White); SpriteBatch.Draw(background, new Rectangle(0, 0, Width, Height), new Rectangle(0, 0, DrawWidth, DrawHeight), Color.White); SpriteBatch.End(); if (!DisableMouseControl) { foreach (AbstractControl item in SelectedItems) { Effect.CurrentTechnique = Effect.Techniques["SelectionBox"]; Effect.Parameters["BoxType"].SetValue(BoxTypeSelection); Rectangle rect = item.SelectRect; rect.X = (int)(rect.X * scale); rect.Y = (int)(rect.Y * scale); rect.Width = (int)(rect.Width * scale); rect.Height = (int)(rect.Height * scale); rect.X -= 6; rect.Y -= 6; rect.Width += 12; rect.Height += 12; Effect.Parameters["TargetPos"].SetValue(new Vector2(rect.X, rect.Y)); Effect.Parameters["TargetSize"].SetValue(new Vector2(rect.Width, rect.Height)); Effect.Parameters["ScreenSize"].SetValue(new Vector2(renderTarget.Width * scale, renderTarget.Height * scale)); //SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); SpriteBatch.Begin(SpriteSortMode.Immediate, XNA_BlendState.AlphaBlend); Effect.CurrentTechnique.Passes[0].Apply(); SpriteBatch.Draw(background, rect, null, Color.White); SpriteBatch.End(); } if (status == Status.CreatingControl && MouseButtons == MouseButtons.Left) { Effect.CurrentTechnique = Effect.Techniques["SelectionBox"]; Effect.Parameters["BoxType"].SetValue(BoxTypeCreateNew); Point min = new Point((int)(Math.Min(mouseDownPosition.X, lastMousePos.X) * scale), (int)(Math.Min(mouseDownPosition.Y, lastMousePos.Y) * scale)); Point max = new Point((int)(Math.Max(mouseDownPosition.X, lastMousePos.X) * scale), (int)(Math.Max(mouseDownPosition.Y, lastMousePos.Y) * scale)); Rectangle rect = new Rectangle(min.X, min.Y, max.X - min.X, max.Y - min.Y); Effect.Parameters["TargetPos"].SetValue(new Vector2(rect.X, rect.Y)); Effect.Parameters["TargetSize"].SetValue(new Vector2(rect.Width, rect.Height)); Effect.Parameters["ScreenSize"].SetValue(new Vector2(renderTarget.Width * scale, renderTarget.Height * scale)); // SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); SpriteBatch.Begin(SpriteSortMode.Immediate, XNA_BlendState.AlphaBlend); Effect.CurrentTechnique.Passes[0].Apply(); SpriteBatch.Draw(background, rect, null, Color.White); SpriteBatch.End(); } } }
/*public void RemoveItem(AbstractControl item) * { * /items.Remove((Dialog)item); * if (SelectedItems.Contains(item)) * { * SelectedItems.Remove(item); * if (MainSelectedItem == item) * { * if (SelectedItems.Count == 0) * MainSelectedItem = null; * else * MainSelectedItem = SelectedItems[0]; * } * } * }*/ public void Create(AbstractControl control) { controlBeingCreated = control; status = Status.CreatingControl; }
public void SelectItem(AbstractControl control) { SelectedItems.Clear(); if (control != null) SelectedItems.Add(control); MainSelectedItem = control; Parent.UpdateSelectedItem(); Invalidate(); }
public AbstractState(int id, AbstractControl controller) { this.id = id; this.controller = controller; }
protected override void OnKeyDown(KeyEventArgs e) { if (SelectedItems.Count > 0) { switch (e.KeyData) { case Keys.Delete: e.Handled = true; while (SelectedItems.Count > 0) { AbstractControl ctrl = SelectedItems[0]; SelectedItems.RemoveAt(0); if (ctrl == MainDialog) { continue; } if (ctrl is Dialog) { items.Remove((Dialog)ctrl); /*foreach (DialogControl control in ((Dialog)ctrl).ChildControls) * { * * }*/ } else { ctrl.Parent.ChildControls.Remove((DialogControl)ctrl); } Parent.ControlRemoved(ctrl); /*foreach (AbstractControl control in Items) * { * if (control.Parent == ctrl && !SelectedItems.Contains(control)) * SelectedItems.Add(control); * }*/ } Invalidate(); Data.UpdateDesigener(); return; case Keys.Left: // <--- left arrow. e.Handled = true; foreach (AbstractControl item in SelectedItems) { item.Position = new Point(item.Position.X - 1, item.Position.Y); } Invalidate(); break; case Keys.Up: // <--- up arrow. e.Handled = true; foreach (AbstractControl item in SelectedItems) { item.Position = new Point(item.Position.X, item.Position.Y - 1); } Invalidate(); break; case Keys.Right: // <--- right arrow. e.Handled = true; foreach (AbstractControl item in SelectedItems) { item.Position = new Point(item.Position.X + 1, item.Position.Y); } Invalidate(); break; case Keys.Down: // <--- down arrow. e.Handled = true; foreach (AbstractControl item in SelectedItems) { item.Position = new Point(item.Position.X, item.Position.Y + 1); } Invalidate(); break; } } base.OnKeyDown(e); }
public IdleState(int id, AbstractControl controller) : base(id, controller) { transitionID = ID; }
protected override void OnMouseDown(MouseEventArgs e) { Focus(); if (DisableMouseControl) return; Point position = new Point((int)(e.X / scale), (int)(e.Y / scale)); mouseDownPosition = lastMousePos = new Point(position.X, position.Y); Status resizeStatus; mouseDownItem = GetResizeStatusAt(e.X, e.Y, out resizeStatus); if (status == Status.CreatingControl) { mouseDownItem = FindControlAt(position.X, position.Y, true); if (mouseDownItem != null) controlBeingCreated.SetParent((Dialog) mouseDownItem); } else if (resizeStatus != Status.Idle) { status = resizeStatus; } else { mouseDownItem = FindControlAt(position.X, position.Y); } }
public FleeState(int id, AbstractControl control) : base(id, control) { }
protected override void OnMouseUp(MouseEventArgs e) { if (DisableMouseControl) return; //Select/deselect if (status == Status.Idle) { if (mouseDownItem != null) { if (SelectedItems.Contains(mouseDownItem)) { if (ModifierKeys == Keys.Shift) { SelectedItems.Remove(mouseDownItem); if (MainSelectedItem == mouseDownItem) { if (SelectedItems.Count == 0) MainSelectedItem = null; else MainSelectedItem = SelectedItems[0]; } } else MainSelectedItem = mouseDownItem; } else { if (ModifierKeys != Keys.Shift) SelectedItems.Clear(); SelectedItems.Add(mouseDownItem); MainSelectedItem = mouseDownItem; } } else { SelectedItems.Clear(); MainSelectedItem = null; } Invalidate(); } else if (status == Status.CreatingControl) { Point min = new Point(Math.Min(mouseDownPosition.X, lastMousePos.X), Math.Min(mouseDownPosition.Y, lastMousePos.Y)); Point max = new Point(Math.Max(mouseDownPosition.X, lastMousePos.X), Math.Max(mouseDownPosition.Y, lastMousePos.Y)); Rectangle rect = new Rectangle(min.X, min.Y, max.X - min.X, max.Y - min.Y); if (rect.Width <= 5) rect.Width = controlBeingCreated.DefaultSize.Width; if (rect.Height <= 5) rect.Height = controlBeingCreated.DefaultSize.Height; controlBeingCreated.MoveTo(rect.X, rect.Y, rect.Width, rect.Height); controlBeingCreated.ContextChanged(this); /*items.Add(controlBeingCreated); items.Sort(Comparerer); items.Sort(Comparerer);*/ if (controlBeingCreated is Dialog) items.Add((Dialog) controlBeingCreated); else controlBeingCreated.Parent.AddControl((DialogControl) controlBeingCreated); Parent.ControlCreated(controlBeingCreated); SelectedItems.Clear(); SelectedItems.Add(controlBeingCreated); MainSelectedItem = controlBeingCreated; Invalidate(); Data.UpdateDesigener(); } status = Status.Idle; mouseDownItem = null; if (Parent != null) Parent.UpdateSelectedItem(); }
/*public void Resort() { items.Sort(Comparerer); items.Sort(Comparerer); }*/ /*public void RemoveItem(AbstractControl item) { items.Remove(item); if (SelectedItems.Contains(item)) { SelectedItems.Remove(item); if (MainSelectedItem == item) { if (SelectedItems.Count == 0) MainSelectedItem = null; else MainSelectedItem = SelectedItems[0]; } } }*/ public void Create(AbstractControl control) { controlBeingCreated = control; status = Status.CreatingControl; }
public InterposeState(int id, AbstractControl control) : base(id, control) { }
private void ControlAdded(AbstractControl control) { CBMainSelectedControl.Items.Add(control); if (CBMainSelectedControl.SelectedIndex == -1) CBMainSelectedControl.SelectedIndex = 0; }
public EvadeState(int id, AbstractControl control) : base(id, control) { waypoint = GameObject.FindGameObjectWithTag("Waypoint"); }
public void ControlRemoved(AbstractControl ctrl) { CBMainSelectedControl.Items.Remove(ctrl); propertyGrid.SelectedObject = null; }
protected override void OnMouseUp(MouseEventArgs e) { if (DisableMouseControl) { return; } //Select/deselect if (status == Status.Idle) { if (mouseDownItem != null) { if (SelectedItems.Contains(mouseDownItem)) { if (ModifierKeys == Keys.Shift) { SelectedItems.Remove(mouseDownItem); if (MainSelectedItem == mouseDownItem) { if (SelectedItems.Count == 0) { MainSelectedItem = null; } else { MainSelectedItem = SelectedItems[0]; } } } else { MainSelectedItem = mouseDownItem; } } else { if (ModifierKeys != Keys.Shift) { SelectedItems.Clear(); } SelectedItems.Add(mouseDownItem); MainSelectedItem = mouseDownItem; } } else { SelectedItems.Clear(); MainSelectedItem = null; } Invalidate(); } else if (status == Status.CreatingControl) { Point min = new Point(Math.Min(mouseDownPosition.X, lastMousePos.X), Math.Min(mouseDownPosition.Y, lastMousePos.Y)); Point max = new Point(Math.Max(mouseDownPosition.X, lastMousePos.X), Math.Max(mouseDownPosition.Y, lastMousePos.Y)); Rectangle rect = new Rectangle(min.X, min.Y, max.X - min.X, max.Y - min.Y); if (rect.Width <= 5) { rect.Width = controlBeingCreated.DefaultSize.Width; } if (rect.Height <= 5) { rect.Height = controlBeingCreated.DefaultSize.Height; } controlBeingCreated.MoveTo(rect.X, rect.Y, rect.Width, rect.Height); controlBeingCreated.ContextChanged(this); /*items.Add(controlBeingCreated); * items.Sort(Comparerer); * items.Sort(Comparerer);*/ if (controlBeingCreated is Dialog) { items.Add((Dialog)controlBeingCreated); } else { controlBeingCreated.Parent.AddControl((DialogControl)controlBeingCreated); } Parent.ControlCreated(controlBeingCreated); SelectedItems.Clear(); SelectedItems.Add(controlBeingCreated); MainSelectedItem = controlBeingCreated; Invalidate(); Data.UpdateDesigener(); } status = Status.Idle; mouseDownItem = null; if (Parent != null) { Parent.UpdateSelectedItem(); } }