private void GenererPersos() { Random r = new Random(); int baseX = Marine.MarineTexture.Width / 2; int baseY = Marine.MarineTexture.Height / 2; int limiteX = (SCREEN_WIDTH / 2) - Marine.MarineTexture.Width; int limiteY = SCREEN_HEIGHT - Marine.MarineTexture.Height; //Generation des soldiers selon leur type et allignement #region for (int i = 0; i < 15; i++) { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.marine, new Vector2(baseX + r.Next(limiteX), baseY + r.Next(limiteY)), orksActorsList, forest, marineActorsList[0])); } for (int i = 0; i < 60; i++) { orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.boyz, new Vector2(SCREEN_WIDTH / 2 + baseX + r.Next(limiteX), baseY + r.Next(limiteY)), marineActorsList, forest, orksActorsList[0])); } int j = r.Next(2, 4) + 1; for (int i = 0; i < j; i++) { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.dreadnought, new Vector2(baseX + r.Next(limiteX), baseY + r.Next(limiteY)), orksActorsList, forest, marineActorsList[0])); orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.nobz, new Vector2(SCREEN_WIDTH / 2 + baseX + r.Next(limiteX), baseY + r.Next(limiteY)), marineActorsList, forest, orksActorsList[0])); orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.nobz, new Vector2(SCREEN_WIDTH / 2 + baseX + r.Next(limiteX), baseY + r.Next(limiteY)), marineActorsList, forest, orksActorsList[0])); } int k = r.Next(1, 2) + 1; for (int i = 0; i < k; i++) { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.landraider, new Vector2(baseX + r.Next(limiteX), baseY + r.Next(limiteY)), orksActorsList, forest, marineActorsList[0])); orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.loottruck, new Vector2(SCREEN_WIDTH / 2 + baseX + r.Next(limiteX), baseY + r.Next(limiteY)), marineActorsList, forest, orksActorsList[0])); orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.loottruck, new Vector2(SCREEN_WIDTH / 2 + baseX + r.Next(limiteX), baseY + r.Next(limiteY)), marineActorsList, forest, orksActorsList[0])); } #endregion }
protected override void Update(GameTime gameTime) { ManageInputs(); if (gameIsStarted) { gameTick++; //Spawn nouvelles instances de soldiers #region if (gameTick == SPAWN_DELAY) { gameTick = 0; Random r = new Random(); int whatToSpawnForOrk = r.Next(1, 100 + 1); if (whatToSpawnForOrk < 51) { for (int i = 0; i < 4; i++) { orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.boyz, orksActorsList[0].Position, marineActorsList, forest, orksActorsList[0])); } } else if (whatToSpawnForOrk > 85) { orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.loottruck, orksActorsList[0].Position, marineActorsList, forest, orksActorsList[0])); } else { orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.nobz, orksActorsList[0].Position, marineActorsList, forest, orksActorsList[0])); orksActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.nobz, orksActorsList[0].Position, marineActorsList, forest, orksActorsList[0])); } int whatToSpawnForMarine = r.Next(1, 100 + 1); if (whatToSpawnForMarine < 51) { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.marine, marineActorsList[0].Position, orksActorsList, forest, marineActorsList[0])); } else if (whatToSpawnForMarine > 85) { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.landraider, marineActorsList[0].Position, orksActorsList, forest, marineActorsList[0])); } else { marineActorsList.Add(SoldierFabric.creatSoldier(SoldierFabric.soldierType.dreadnought, marineActorsList[0].Position, orksActorsList, forest, marineActorsList[0])); } } #endregion #region //update les soldiers en jeu for (int i = 1; i < marineActorsList.LongCount(); i++) { marineActorsList[i].CurrentState.update(gameTick); } for (int i = 1; i < orksActorsList.LongCount(); i++) { orksActorsList[i].CurrentState.update(gameTick); } //deux boucles comme les listes on pas la même taille for (int i = 1; i < marineActorsList.Count; i++) { marineActorsList[i].Move(); if (marineActorsList[i].CurrentState is DeadState) { marineActorsList.RemoveAt(i); } } for (int i = 1; i < orksActorsList.Count; i++) { orksActorsList[i].Move(); if (orksActorsList[i].CurrentState is DeadState) { orksActorsList.RemoveAt(i); } } #endregion //retire les morts if (orksActorsList[0].Hp <= 0 || marineActorsList[0].Hp <= 0) { marineActorsList.Clear(); orksActorsList.Clear(); Exit(); } } base.Update(gameTime); }