SPIRAL BY CHRISTIAN

This commit is contained in:
Simon Holmberg
2012-10-29 02:49:26 +00:00
parent 236d6c2859
commit 600661b911
2 changed files with 607 additions and 533 deletions
+67 -3
View File
@@ -133,8 +133,10 @@ namespace DepthsBelow
KeyboardState ks = Keyboard.GetState(); KeyboardState ks = Keyboard.GetState();
MouseState ms = args.MouseState; MouseState ms = args.MouseState;
var mousePos = new Point(ms.X, ms.Y); var mousePos = new Point(ms.X, ms.Y);
var mouseRectangle = new Rectangle(mousePos.X, mousePos.Y, 1, 1); var mouseRectangle = new Rectangle(mousePos.X, mousePos.Y, 1, 1);
var mouseWorldPos = core.Camera.ScreenToWorld(new Vector2(mousePos.X, mousePos.Y)); var mouseWorldPos = core.Camera.ScreenToWorld(new Vector2(mousePos.X, mousePos.Y));
var mouseGridPos= Grid.WorldToGrid(mouseWorldPos);
var mouseWorldRectangle = new Rectangle((int)mouseWorldPos.X, (int)mouseWorldPos.Y, 1, 1); var mouseWorldRectangle = new Rectangle((int)mouseWorldPos.X, (int)mouseWorldPos.Y, 1, 1);
if (args.LeftButton == ButtonState.Pressed) if (args.LeftButton == ButtonState.Pressed)
@@ -188,9 +190,71 @@ namespace DepthsBelow
else else
{ {
Debug.WriteLine("Right button pressed on UIParent"); Debug.WriteLine("Right button pressed on UIParent");
foreach (var unit in core.Squad) Point mainpath = Point.Zero;
if (unit.Selected) Stack<Soldier> soldierStack = new Stack<Soldier>();
unit.GetComponent<Component.PathFinder>().Goal = Grid.WorldToGrid(mouseWorldPos); //core.Squad.Where(a=>a.Selected).ToList().ForEach(a => soldierStack.Push(a));
foreach (var soldier in core.Squad)
{
if (soldier.Selected)
{
soldierStack.Push(soldier);
}
}
byte[,] collisionMap = Core.Map.GetCollisionMap();
int X=5;
int Y=5;
int x,y,dx,dy;
x = y = dx =0;
dy = -1;
int t = (int)MathHelper.Max(X,Y);
int maxI = t*t;
for(int i =0; i < maxI; i++){
if ((-X/2 < x&&x <= X/2) && (-Y/2 < y&&y <= Y/2))
{
Point point = new Point(x + mouseGridPos.X, y + mouseGridPos.Y);
if (collisionMap[point.X,point.Y]==1)
{
if (soldierStack.Count==0)
{
break;
}
var soldier = soldierStack.Pop();
if (soldier==null)
{
break;
}
else
{
soldier.GetComponent<Component.PathFinder>().Goal = point;
Console.WriteLine(x + " " + y);
Console.WriteLine(soldier.GetComponent<Component.PathFinder>().Goal.X + " " + soldier.GetComponent<Component.PathFinder>().Goal.Y);
}
}
}
if( (x == y) || ((x < 0) && (x == -y)) || ((x > 0) && (x == 1-y))){
t = dx;
dx = -dy;
dy = t;
}
x += dx;
y += dy;
}
//foreach (var unit in core.Squad)
//{
// if (unit.Selected)
// {
// if (mainpath==Point.Zero)
// {
// mainpath = unit.Position;
// }
// Vector2 fromMain = new Vector2((mainpath.X - unit.Position.X) * 30,(mainpath.Y-unit.Position.Y) * 30);
// unit.GetComponent<Component.PathFinder>().Goal = Grid.WorldToGrid(mouseWorldPos - fromMain);
// }
//}
} }
} }
}; };
+32 -22
View File
@@ -113,30 +113,40 @@ namespace DepthsBelow
List<Point> soldierCollisions = new List<Point>(); List<Point> soldierCollisions = new List<Point>();
// Collision with units at a standstill // Collision with units at a standstill
foreach (var soldier in Squad) //foreach (var soldier in Squad)
{ //{
if (soldier != this && !soldier.GetComponent<PathFinder>().IsMoving) // if (soldier != this)
{ // {
soldierCollisions.Add(soldier.Transform.Grid); // if (!soldier.GetComponent<PathFinder>().IsMoving)
} // {
} // soldierCollisions.Add(soldier.Transform.Grid);
// }
// if (soldier.Transform.Grid == nextNode.Position)
// {
// GetComponent<PathFinder>().RecreatePath(soldierCollisions);
// nextNode = GetComponent<PathFinder>().Next();
// break;
// }
// }
//}
// Collision with moving units // Collision with moving units
foreach (var soldier in Squad) //foreach (var soldier in Squad)
{ //{
if (soldier != this) // if (soldier != this)
{ // {
var pathFinder = soldier.GetComponent<PathFinder>(); // var pathFinder = soldier.GetComponent<PathFinder>();
var position = nextNode.Position; // var position = nextNode.Position;
if (soldier.Transform.Grid == position) // if (soldier.Transform.Grid == position)
{ // {
soldierCollisions.Add(soldier.Transform.Grid); // soldierCollisions.Add(soldier.Transform.Grid);
GetComponent<PathFinder>().RecreatePath(soldierCollisions); // GetComponent<PathFinder>().RecreatePath(soldierCollisions);
nextNode = GetComponent<PathFinder>().Next(); // nextNode = GetComponent<PathFinder>().Next();
break; // break;
} // }
} // }
} //}
if (nextNode != null) if (nextNode != null)
{ {