public void setPosition(Position position) { Image.Margin = new Thickness(position.X, position.Y, 0, 0); }
private void ProcessTank(Tank tank) { tank.Update(); Position p = new Position(tank.getPosition().X, tank.getPosition().Y); for (int i = 0; i < tank.Instructions.Count; i++) { if (tank.Instructions[i].Type == TypeInstruction.MoveForward) { float value = Math.Min(tank.Instructions[i].Parameter, tank.SpeedMove); tank.MoveForward(value); tank.Instructions[i].Parameter -= value; for (int j = 0; j < Tanks.Count; j++) if (Tanks[j] != tank && tank.IsCollided(Tanks[j])) { tank.setPosition(p); break; } if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--); else break; } else if (tank.Instructions[i].Type == TypeInstruction.MoveBackward) { float value = Math.Min(tank.Instructions[i].Parameter, tank.SpeedMove); tank.MoveBackward(value); tank.Instructions[i].Parameter -= value; for (int j = 0; j < Tanks.Count; j++) if (Tanks[j] != tank && tank.IsCollided(Tanks[j])) { tank.setPosition(p); break; } if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--); else break; } else if (tank.Instructions[i].Type == TypeInstruction.RotateLeft) { float value = Math.Min(tank.Instructions[i].Parameter, 5); tank.RotateLeft(value); tank.Instructions[i].Parameter -= value; if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--); else break; } else if (tank.Instructions[i].Type == TypeInstruction.RotateRight) { float value = Math.Min(tank.Instructions[i].Parameter, 5); tank.RotateRight(value); tank.Instructions[i].Parameter -= value; if (tank.Instructions[i].Parameter == 0) tank.Instructions.RemoveAt(i--); else break; } else if (tank.Instructions[i].Type == TypeInstruction.Fire) { if (tank.AllowToFire) { tank.Fire(); Bullets.Add(tank.bullet); tank.Instructions.RemoveAt(i); NeedToUpdate = true; //tank.UpdateStats(); } } } }