private IInvader GetRandomInvader() { IInvader xInvader; double rng = Random.NextDouble(); switch (Difficulty) { case Difficulty.VeryEasy: xInvader = new BasicInvader(MapPath); break; case Difficulty.Easy: if (rng <= 0.2) xInvader = new FastInvader(MapPath); else xInvader = new BasicInvader(MapPath); break; case Difficulty.Medium: if (rng <= 0.2) { if (rng <= 0.09) xInvader = new StrongInvader(MapPath); else xInvader = new FastInvader(MapPath); } else xInvader = new BasicInvader(MapPath); break; case Difficulty.Hard: if (rng <= 0.2) { if (rng <= 0.06) xInvader = new ShieldedInvader(MapPath); else if (rng <= 0.125) xInvader = new StrongInvader(MapPath); else xInvader = new FastInvader(MapPath); } else xInvader = new BasicInvader(MapPath); break; case Difficulty.Brutal: if (rng <= 0.2) { if (rng <= 0.04) xInvader = new ResurrectingInvader(MapPath); else if (rng <= 0.09) xInvader = new ShieldedInvader(MapPath); else if (rng <= 0.14) xInvader = new StrongInvader(MapPath); else xInvader = new FastInvader(MapPath); } else xInvader = new BasicInvader(MapPath); break; default: xInvader = new BasicInvader(MapPath); break; } return xInvader; }
public ResurrectingInvader(Path path) { _incarnation1 = new BasicInvader(path); _incarnation2 = new StrongInvader(path); }