UI is no longer being stupid with bubbling

This commit is contained in:
2012-10-29 15:15:33 +01:00
parent ed0953ff50
commit 81e102fe44
2 changed files with 12 additions and 51 deletions
+9 -48
View File
@@ -45,52 +45,6 @@ namespace DepthsBelow
selectionFrame.Visible = false; selectionFrame.Visible = false;
UIParent["selectionFrame"] = selectionFrame; UIParent["selectionFrame"] = selectionFrame;
// OnClick
UIParent.OnClick += delegate(Frame frame, GUIManager.MouseEventArgs args)
{
KeyboardState ks = Keyboard.GetState();
MouseState ms = args.MouseState;
var mousePos = new Point(ms.X, ms.Y);
var mouseRectangle = new Rectangle(mousePos.X, mousePos.Y, 1, 1);
var mouseWorldPos = core.Camera.ScreenToWorld(new Vector2(mousePos.X, mousePos.Y));
var mouseWorldRectangle = new Rectangle((int)mouseWorldPos.X, (int)mouseWorldPos.Y, 1, 1);
if (args.LeftButton == ButtonState.Pressed)
{
Debug.WriteLine("Left button pressed on UIParent");
// Deselect all units
/*if (!ks.IsKeyDown(Keys.LeftControl))
{
foreach (var unit in core.Squad)
unit.Selected = false;
foreach (var unitFrame in UnitFrames)
unitFrame.Color = Color.Black;
}
// Select all units in the rectangle
foreach (var soldier in core.Squad)
{
if (mouseWorldRectangle.Intersects(soldier.GetComponent<Component.Collision>().Rectangle))
{
soldier.Selected = true;
foreach (var unitFrame in UnitFrames)
{
if (unitFrame["soldier"] == soldier)
unitFrame.Color = Color.Blue;
}
}
}*/
}
// Hide the selection rectangle
//selectionRectangle = Rectangle.Empty;
};
// OnPress // OnPress
UIParent.OnPress += delegate(Frame frame, GUIManager.MouseEventArgs args) UIParent.OnPress += delegate(Frame frame, GUIManager.MouseEventArgs args)
{ {
@@ -493,12 +447,13 @@ namespace DepthsBelow
PanicFrames.Add(CreatePanicFrame()); PanicFrames.Add(CreatePanicFrame());
// TODO: Remove this test ;) // TODO: Remove this test ;)
soldier.GetComponent<Component.Stat>().HP = random.Next(0, (int)soldier.GetComponent<Component.Stat>().MaxHP - 1); //soldier.GetComponent<Component.Stat>().HP = random.Next(0, (int)soldier.GetComponent<Component.Stat>().MaxHP - 1);
var uFrame = CreateUnitFrame(soldier); var uFrame = CreateUnitFrame(soldier);
uFrame["soldier"] = soldier; uFrame["soldier"] = soldier;
soldier["unitFrame"] = uFrame; soldier["unitFrame"] = uFrame;
uFrame.OnClick += delegate(Frame f, GUIManager.MouseEventArgs e) uFrame.OnPress += delegate(Frame frame, GUIManager.MouseEventArgs args) { };
uFrame.OnRelease += delegate(Frame f, GUIManager.MouseEventArgs e)
{ {
var s = (Soldier)f["soldier"]; var s = (Soldier)f["soldier"];
KeyboardState ks = Keyboard.GetState(); KeyboardState ks = Keyboard.GetState();
@@ -557,6 +512,12 @@ namespace DepthsBelow
var frame = (GUI.Frame) soldier["unitFrame"]; var frame = (GUI.Frame) soldier["unitFrame"];
frame.X = lastFrame.X; frame.X = lastFrame.X;
frame.Y = lastFrame.Y + lastFrame.Height; frame.Y = lastFrame.Y + lastFrame.Height;
// Update HP
//var healthBarBg = (GUI.Frame)frame["healthBarBg"];
//var healthBar = (GUI.Frame)frame["healthBar"];
//healthBar.Width = (int)((healthBarBg.Width - 2) * (soldier.GetComponent<Component.Stat>().HP / soldier.GetComponent<Component.Stat>().MaxHP));
lastFrame = frame; lastFrame = frame;
} }
} }
+3 -3
View File
@@ -142,7 +142,7 @@ namespace DepthsBelow
Time = gameTime.TotalGameTime, Time = gameTime.TotalGameTime,
LeftButton = ButtonState.Pressed LeftButton = ButtonState.Pressed
}; };
GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y)); //GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y));
GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y)); GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y));
} }
if (ms.MiddleButton == ButtonState.Released && lastMouseState.MiddleButton == ButtonState.Pressed) if (ms.MiddleButton == ButtonState.Released && lastMouseState.MiddleButton == ButtonState.Pressed)
@@ -153,7 +153,7 @@ namespace DepthsBelow
Time = gameTime.TotalGameTime, Time = gameTime.TotalGameTime,
MiddleButton = ButtonState.Pressed MiddleButton = ButtonState.Pressed
}; };
GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y)); //GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y));
GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y)); GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y));
} }
if (ms.RightButton == ButtonState.Released && lastMouseState.RightButton == ButtonState.Pressed) if (ms.RightButton == ButtonState.Released && lastMouseState.RightButton == ButtonState.Pressed)
@@ -164,7 +164,7 @@ namespace DepthsBelow
Time = gameTime.TotalGameTime, Time = gameTime.TotalGameTime,
RightButton = ButtonState.Pressed RightButton = ButtonState.Pressed
}; };
GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y)); //GUIManager.RaiseAt("OnClick", mouseEvent, new Point(ms.X, ms.Y));
GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y)); GUIManager.RaiseAt("OnRelease", mouseEvent, new Point(ms.X, ms.Y));
} }