I'm working on a small game and have an array of all the various enemies (enemies are a Character object so its an array of these objects), as well as a list that, during battle, holds the player and all the enemies that have been selected for the current battle. But whenever two of an enemy are added to the list, it fills both list slots but seems to treat then as the same thing, their updated positions and everything get changed for every enemy of the same type in the list.
public static Objects.Character[] EnemyList =
{
new Objects.Character("Demon", 1, 70, 0, 70, 0, 1, 20, 0, 20,
new Microsoft.Xna.Framework.Rectangle(0, 0, 0,0), 0, 0, 2, 0),
new Objects.Character("Ant", 2, 15, 0, 20, 0, 10, 5, 0, 5,
new Microsoft.Xna.Framework.Rectangle(0, 0, 0,0), 0, 0, 3, 0),
new Objects.Character("Giant", 3, 25, 30, 25, 30, 3, 15, 10, 15,
new Microsoft.Xna.Framework.Rectangle(0, 0, 0,0), 0, 0, 3, 0),
new Objects.Character("Ghost", 4, 30, 20, 30, 20, 3, 20, 10, 20,
new Microsoft.Xna.Framework.Rectangle(0, 0, 0,0), 0, 0, 1, 0),
new Objects.Character("Dragon", 5, 20, 40, 20, 40, 2, 20, 0, 20,
new Microsoft.Xna.Framework.Rectangle(0, 0, 0,0), 0, 0, 1, 0)
};
Random random = new Random();
Objects.Character turn;
int numb = 1;
TurnOrder.Add(Game1.PlayerCharacter);
for (int i = 0; i < 2; i++)
{
turn = GameContent.Enemies.EnemyList[random.Next(0, GameContent.Enemies.EnemyList.Length - 1)];
while (turn.GameLevel > 6)
{ turn = GameContent.Enemies.EnemyList[random.Next(0, GameContent.Enemies.EnemyList.Length - 1)]; }
TurnOrder.Add(turn);
}
for (int i = 0; i < TurnOrder.Count; i++)
{
for (int y = 0; y < i; y++)
{
if (TurnOrder[i].Speed > TurnOrder[y].Speed)
{
turn = TurnOrder[i];
while (i - numb >= y)
{
TurnOrder[i - (numb - 1)] = TurnOrder[i - numb];
numb++;
}
}
}
}
TurnOrder[CurrentTurn].MovesLeft = TurnOrder[CurrentTurn].Speed;
I remember reading something about this kind of problem with lists before, so I'm pretty sure my code for adding things in is fine, either way I've looked over it again and am not seeing anything. Is there anyway to get around this problem? Or am I missing something I did wrong?