the humans in the borders are now also processed

This commit is contained in:
M.Rohmer
2022-03-07 12:08:15 +01:00
parent 0ca5b842ff
commit beb4658c95
2 changed files with 123 additions and 11 deletions
+116 -5
View File
@@ -119,17 +119,128 @@ namespace PropagationRemasteredBeta
//check bottom right
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y - 1));
}
else
{
//now we have te peoples that are in sides or corners
foreach (Point p in peopleToCheckLocations)
if (Position.Y == 0)
{
target = T.Population[p.X, p.Y];
if (target.State == Human.SAIN)
if (Position.X == 0)
{
T.PeopleToCheck.Add(target);
//top left corner
// @#
// ##
peopleToCheckLocations.Add(new Point(Position.X + 1,Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y + 1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y + 1));
}
else if (Position.X >= T.TerrainSize.Width -1)
{
//top right corner
// #@
// ##
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y + 1));
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y + 1));
}
else
{
//on the top side
// #@#
// ###
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y + 1));
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y + 1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y + 1));
}
}
T.InfectedsToCheck.Add(this);
else
{
if (Position.Y >= T.TerrainSize.Height - 1)
{
if (Position.X == 0)
{
//bottom left corner
// ##
// @#
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y - 1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y - 1));
}
else if (Position.X >= T.TerrainSize.Width - 1)
{
//Bottom right corner
// ##
// #@
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y - 1));
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y - 1));
}
else
{
//on the bottom side
// ###
// #@#
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y - 1));
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y - 1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y - 1));
}
}
else
{
//on the left side
if (Position.X >= T.TerrainSize.Width -1)
{
// ##
// #@
// ##
peopleToCheckLocations.Add(new Point(Position.X,Position.Y));
peopleToCheckLocations.Add(new Point(Position.X -1, Position.Y -1));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y -1));
peopleToCheckLocations.Add(new Point(Position.X -1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X - 1, Position.Y +1));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y +1));
}
else
{
//on the right side
// ##
// @#
// ##
peopleToCheckLocations.Add(new Point(Position.X, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y -1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y -1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y));
peopleToCheckLocations.Add(new Point(Position.X, Position.Y + 1));
peopleToCheckLocations.Add(new Point(Position.X + 1, Position.Y + 1));
}
}
}
}
foreach (Point p in peopleToCheckLocations)
{
target = T.Population[p.X, p.Y];
if (target.State == Human.SAIN)
{
T.PeopleToCheck.Add(target);
}
}
T.InfectedsToCheck.Add(this);
return this;
}
public Human CheckInfection(int infectiosity, Random rnd)