//Modificar Terrestre public ActionResult ModificarTerrestre(string id) { DAOTerrestre data = DAOTerrestre.getInstance(); Terrestre terrestreEncontrado = data.buscarTerrestre(id); return(View(terrestreEncontrado)); }
public ActionResult AgregarTerrestre(Terrestre model, string modeloVeh, string sucursal) { string name = TempData["username"].ToString(); string nameRol = TempData["rol"].ToString(); int codUser = Int32.Parse(TempData["codUser"].ToString()); ViewBag.name = name; ViewBag.rol = nameRol; TempData["username"] = name; TempData["rol"] = nameRol; TempData["codUser"] = codUser; DAOUsuario dataU = DAOUsuario.getInstance(); string today = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss tt"); string accion = "Registro Vehiculo Terrestre " + model.placa; dataU.insertarAccion(codUser, 1, today, accion); int fkModelo = Int32.Parse(modeloVeh); int fkSucursal = Int32.Parse(sucursal); DAOTerrestre data = DAOTerrestre.getInstance(); data.insertarTerrestres(model.placa, model.serialMotor, model.capacidad, model.peso, model.descripcion, model.serialCarroceria, model.fechaCreacion, model.tipo, fkSucursal, fkModelo); List <Terrestre> terrestres = data.obtenerTerrestres(); return(View("~/Views/Vehiculo/IndexVehiculo.cshtml", terrestres)); }
public ActionResult EliminarTerrestre(Terrestre model) { string name = TempData["username"].ToString(); string nameRol = TempData["rol"].ToString(); int codUser = Int32.Parse(TempData["codUser"].ToString()); ViewBag.name = name; ViewBag.rol = nameRol; TempData["username"] = name; TempData["rol"] = nameRol; TempData["codUser"] = codUser; DAOUsuario dataU = DAOUsuario.getInstance(); string today = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss tt"); string accion = "Elimino Vehiculo Terrestre " + model.placa; dataU.insertarAccion(codUser, 4, today, accion); //int cod = Int32.Parse(model.cod); DAOTerrestre data = DAOTerrestre.getInstance(); data.eliminarTerrestre(model.placa); List <Terrestre> terrestres = data.obtenerTerrestres(); return(View("~/Views/Vehiculo/IndexVehiculo.cshtml", terrestres)); }
public lEnvios buscarTransporte(JToken _TransporteSolicitado) { lEnvios Transporte = null; string cMedio = (string)_TransporteSolicitado["Medio"]; int cVelocidad = (int)_TransporteSolicitado["Velocidad"]; int cCostoPorKilometro = (int)_TransporteSolicitado["CostoPorKilometro"]; if (cMedio == "Marítimo") { Transporte = new Maritimo() { cNombre = "Maritimo" }; } else if (cMedio == "Terrestre") { Transporte = new Terrestre() { cNombre = "Terrestre" }; } else { Transporte = new Aereo() { cNombre = "Aereo" }; } Transporte.dCostoEnvio = cCostoPorKilometro; Transporte.dVelocidadEntrega = cVelocidad; return(Transporte); }
public IMedioTransporte Create(string _medioTransporte) { var dto = lstMediosTransporteDTO.FirstOrDefault(f => f.Medio == _medioTransporte); var _nombreMedioTransporteEnum = (MedioTransporteEnum)System.Enum.Parse(typeof(MedioTransporteEnum), dto.Medio); IMedioTransporte factory; switch (_nombreMedioTransporteEnum) { case MedioTransporteEnum.Terrestre: factory = new Terrestre(dto.CostoPorKilometro, new TerrestreAjusteTiempo(lstTemporadas, dto.RetrasoPorDiaPorTemporada.TiemposRetraso), dto.Medio, dto.Velocidad); break; case MedioTransporteEnum.Marítimo: factory = new Maritimo(dto.CostoPorKilometro, new MaritimoAjusteCosto(lstTemporadas, dto.CostoAdicionalPorTemporada.Variaciones), new MaritimoAjusteTiempo(lstTemporadas, dto.VelocidadPorTemporada.Variaciones), dto.Medio, dto.Velocidad); break; case MedioTransporteEnum.Aéreo: factory = new Aereo(dto.CostoPorKilometro, dto.Medio, dto.Velocidad); break; default: throw new NotImplementedException($"No existe una implementación para el medio de transporte {_nombreMedioTransporteEnum.ToString()}."); } return(factory); }
public void ObtenerRecargo_General_Cero() { IFormatProvider culture = new CultureInfo("ES-MX", true); var Sut = new Terrestre(8000, DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones); decimal Resultado = Sut.ObtenerRecargo(); Assert.AreEqual(0, Resultado); }
public void ObtenerTiempoEntregaMinutos_OchocientosInvierno_SieteMilNovecientosVeinte() { IFormatProvider culture = new CultureInfo("ES-MX", true); var Sut = new Terrestre(8000, DateTime.ParseExact("02/01/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones); decimal Resultado = Sut.ObtenerTiempoEntregaMinutos(); Assert.AreEqual(7920, Resultado); }
public void ObtenerVelocidad_Ochenta_Ochenta() { IFormatProvider culture = new CultureInfo("ES-MX", true); var Sut = new Terrestre(8000, DateTime.ParseExact("02/03/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones); decimal Resultado = Sut.ObtenerVelocidad(); Assert.AreEqual(80, Resultado); }
public void ObtenerTiempoEntregaMinutos_OchocientosPrimavera_SeisMilNovecientosSesenta() { IFormatProvider culture = new CultureInfo("ES-MX", true); var Sut = new Terrestre(8000, DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones); decimal Resultado = Sut.ObtenerTiempoEntregaMinutos(); Assert.AreEqual(6960, Resultado); }
/// <summary> /// Indique si les unités sélectionnées peuvent attaquer ensemble. Pour cela, elles doivent être /// </summary> /// <returns>bool true si les unités sont compatibles, false autrement.</returns> protected bool CanAttackTogether(Territoire toAttack) { if (this.GetType().Name == "Infanterie" || this.GetType().Name == "Tank") { // On vérifie pour chaque unité si elle est d'un type compatible (Tank ou Infanterie) et stationnée à la // frontière de la cible foreach (Unite unit in selectedList) { if (unit.GetType().Name == "Infanterie" || unit.GetType().Name == "Tank") { Terrestre terrestre = unit as Terrestre; // Une des unités sélectionnées n'est pas stationnée à la frontière de la cible // Si une route maritime qui ne soit pas bloquée ne connecte pas la cible à la base de l'unité // Elle ne peut attaquer if (!toAttack.GetVoisinsNDegree(1, true, false).Contains(terrestre.territoire)) { return(false); } } else // Si l'unité n'est pas une infanterie ou un tank, le groupe ne peut attaquer de façon coordonnées { return(false); } } } else if (this.GetType().Name == "Artillerie") { if (toAttack.unites.Count > 1) { // On vérifie pour chaque unité si elle est du même type et stationnée à portée de tire de la cible. foreach (Unite unit in selectedList) { if (unit.GetType().Name != "Artillerie") { return(false); } Artillerie artie = unit as Artillerie; // Si la cible n'est pas à moins de 3 territoires d'écart l'unité ne peut ouvrir le feu. if (!toAttack.GetVoisinsNDegree(2, false, true).Contains(artie.territoire)) { return(false); } } } } else // Une DCA ne peut pas attaquer { return(false); } return(true); }
public void ObtenerCostoEnvio_Cuarenta_Seiscientos() { IFormatProvider culture = new CultureInfo("ES-MX", true); DateTime FechaEnvio = DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture); var Sut = new Terrestre(40, FechaEnvio, configuraciones); decimal Resultado = Sut.ObtenerCostoEnvio(); Assert.AreEqual(600, Resultado); }
public void ObtenerCostoxDistancia_DoscientosCincuenta_Ocho() { IFormatProvider culture = new CultureInfo("ES-MX", true); DateTime FechaEnvio = DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture); var Sut = new Terrestre(250, FechaEnvio, configuraciones); decimal Resultado = Sut.ObtenerCostoxDistancia(); Assert.AreEqual(8, Resultado); }
public void ObtenerFechaEnvio_General_FechaEnviada() { IFormatProvider culture = new CultureInfo("ES-MX", true); DateTime FechaEnvio = DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture); var Sut = new Terrestre(8000, FechaEnvio, configuraciones); DateTime Resultado = Sut.ObtenerFechaEnvio(); Assert.AreEqual(FechaEnvio, Resultado); }
public void ObtieneTiempoTransporte_22Febrero11592_192() { //Arrange ParametroCalculoMedioTransporteDTO param = new ParametroCalculoMedioTransporteDTO() { FechaCompra = new DateTime(2020, 2, 22), Distancia = 11520 }; List <RangoCosto> lstCostos = new List <RangoCosto>() { new RangoCosto(1m, 50m, 15m), new RangoCosto(51m, 200m, 10m), new RangoCosto(201m, 300, 8m), new RangoCosto(301m, null, 7m) }; var DOCajusteTiempo = new Mock <IAjusteExtra>(); DOCajusteTiempo.Setup(doc => doc.ObtieneAjustePorEstacion(param.FechaCompra)).Returns(8); var SUT = new Terrestre(lstCostos, DOCajusteTiempo.Object); //ACT var costo = SUT.ObtieneTiempoTransporte(param); //Assert Assert.AreEqual(192m, costo); }
public void ObtieneCostoTransporte_10Julio25_375()//Verano { //Arrange ParametroCalculoMedioTransporteDTO param = new ParametroCalculoMedioTransporteDTO() { FechaCompra = new DateTime(2020, 7, 10), Distancia = 25 }; List <RangoCosto> lstCostos = new List <RangoCosto>() { new RangoCosto(1m, 50m, 15m), new RangoCosto(51m, 200m, 10m), new RangoCosto(201m, 300, 8m), new RangoCosto(301m, null, 7m) }; var DOCajusteTiempo = new Mock <IAjusteExtra>(); DOCajusteTiempo.Setup(doc => doc.ObtieneAjustePorEstacion(param.FechaCompra)).Returns(0); var SUT = new Terrestre(lstCostos, DOCajusteTiempo.Object); //ACT var costo = SUT.ObtieneCostoTransporte(param); //Assert Assert.AreEqual(375m, costo); }
public void CalculaCostoEnvio_EstacionDistancia500_3500() { //Arrange var DOCcalculadorCostoPorDistancia = new Mock <ICalculadorCostoEnvio>(); var DOCcalculadorTiempoTraslado = new Mock <ICalculadorTiempoTraslado>(); ParametrosDTO parametros = new ParametrosDTO(); DateTime dtFechaPedido = new DateTime(2020, 02, 22); double dDistancia = 1200; parametros.dtFechaPedido = dtFechaPedido; parametros.dDistacia = dDistancia; DOCcalculadorCostoPorDistancia.Setup(doc => doc.CalcularCostoEnvio(dtFechaPedido, parametros.dDistacia)).Returns(3500); var SUT = new Terrestre(DOCcalculadorCostoPorDistancia.Object, DOCcalculadorTiempoTraslado.Object); //ACT var regreso = SUT.CalculaCostoEnvio(parametros); //ASSERT Assert.AreEqual(3500, regreso); }
List <IEmpresa> ICrearInstanciaPaqueteriaFactory.CrearInstancia(string cClave) { List <IEmpresa> empresa = null; IMediosTransporte medioTransporte = null; switch (cClave) { case "MARITIMO": medioTransporte = new Maritimo(new CalculadorVelocidadMaritimo(new List <DTO.EstacionesDTO>(), new Estacion()), new CalculadorCostoEnvioMaritimo(new List <DTO.EstacionesDTO>(), new List <DTO.RangosDTO>(), new Estacion())); empresa = new List <IEmpresa>(); ParametrosDTO parametros = new ParametrosDTO(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(new List <RangosMargenDTO>()), new List <TiempoRepartoDTO>(), new ParametrosDTO())); break; case "TERRESTRE": medioTransporte = new Terrestre(new CalculadorCostoEnvioTerrestre(new List <RangosDTO>()), new CalculadorTiempoTrasladoTerrestre(new Estacion(), new List <EstacionesDTO>())); empresa = new List <IEmpresa>(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(new List <RangosMargenDTO>()), new List <TiempoRepartoDTO>(), new ParametrosDTO())); break; case "AEREO": medioTransporte = new Aereo(new CalculadorEscalas()); empresa = new List <IEmpresa>(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO())); break; //default: // empresa.Add(new Fedex(null, new CalculadorMargenUtilidadCostoFedex(), new List<TiempoRepartoDTO>(), new ParametrosDTO())); // empresa.Add(new DHL(null, new CalculadorMargenUtilidadCostoDHL(), new List<TiempoRepartoDTO>(), new ParametrosDTO())); // empresa.Add(new Estafeta(null, new CalculadorMargenUtilidadCostoEstafeta(new List<RangosMargenDTO>()), new List<TiempoRepartoDTO>(), new ParametrosDTO())); // break; } return(empresa); }
/// <summary> /// Affiche le résumé d'une attaque. /// </summary> /// <param name="diceAtt">int[] Valeurs des dés de l'attaquant.</param> /// <param name="diceDef">int[] Valeurs des dés du défenseur.</param> /// <param name="unitesDetruitesAtt">int[] Le nombre de chaque unité de l'attaquant détruites durant l'assaut.</param> /// <param name="unitesDetruitesDef">int[] Le nombre de chaque unité du défenseur détruites durant l'assaut.</param> /// <param name="unitAtt">List(Unite) Les unités restantes de l'attaquant.</param> /// <param name="unitDef">List(Unite) Les unités restantes du défenseur.</param> public IEnumerator ShowAssaultResult(int[] diceAtt, int[] diceDef, int[] unitesDetruitesAtt, int[] unitesDetruitesDef, List <Unite> unitAtt, List <Unite> unitDef) { //Debug.Log("Et ça, c'est l'donjon ?"); GameObject diceGroupAtt; GameObject diceGroupDef; if (diceAtt.Length == 3) { diceGroupAtt = assaultResultPanel.transform.FindChild("Attaque").FindChild("Three dice").gameObject; } else if (diceAtt.Length == 2) { diceGroupAtt = assaultResultPanel.transform.FindChild("Attaque").FindChild("Two dice").gameObject; } else { diceGroupAtt = assaultResultPanel.transform.FindChild("Attaque").FindChild("One die").gameObject; } if (diceDef.Length == 2) { diceGroupDef = assaultResultPanel.transform.FindChild("Défense").FindChild("Two dice").gameObject; } else { diceGroupDef = assaultResultPanel.transform.FindChild("Défense").FindChild("One die").gameObject; } diceGroupAtt.SetActive(true); diceGroupDef.SetActive(true); // Tri dans l'ordre croissant Array.Sort(diceAtt); Array.Sort(diceDef); // Assignation des sprites pour chaque dé de l'attaque for (int i = 0; i < diceAtt.Length; i++) { GameObject die = diceGroupAtt.transform.GetChild(i).gameObject; die.GetComponent <Image>().sprite = redDice[diceAtt[i] - 1]; } // Assignation des sprites pour chaque dé de la défense for (int i = 0; i < diceDef.Length; i++) { GameObject die = diceGroupDef.transform.GetChild(i).gameObject; die.GetComponent <Image>().sprite = whiteDice[diceDef[i] - 1]; } // Listes d'unités de chaque joueur GameObject listeAtt = assaultResultPanel.transform.FindChild("Attaque").FindChild("Liste").gameObject; GameObject listeDef = assaultResultPanel.transform.FindChild("Défense").FindChild("Liste").gameObject; // Compte les unités ayant participer à la bataille pour les listes d'unités. int[] unitsToAtt = new int[7]; int[] unitsToDef = new int[7]; // Inclusion des unités détruites dans la liste des unités ayant participé à la bataille. unitesDetruitesAtt.CopyTo(unitsToAtt, 0); unitesDetruitesDef.CopyTo(unitsToDef, 0); /* * Territoire territoireAtt = null, territoireDef = null; * Route routeAtt = null, routeDef = null; */ foreach (Unite unit in unitAtt) { if (unit.GetType().Name == "Infanterie") { unitsToAtt[(int)Utils.unitCode.Infanterie]++; } if (unit.GetType().Name == "Tank") { unitsToAtt[(int)Utils.unitCode.Tank]++; } if (unit.GetType().Name == "Artillerie") { unitsToAtt[(int)Utils.unitCode.Artillerie]++; } if (unit.GetType().Name == "Dca") { unitsToAtt[(int)Utils.unitCode.DCA]++; } if (unit.GetType().Name == "Croiseur") { unitsToAtt[(int)Utils.unitCode.Croiseur]++; } if (unit.GetType().Name == "Submarin") { unitsToAtt[(int)Utils.unitCode.Submarin]++; } if (unit.GetType().Name == "Bombardier") { unitsToAtt[(int)Utils.unitCode.Bombardier]++; } /* * if (unit.GetType().Name == "Croiseur" && unit.GetType().Name == "Submarin") * { * Maritime maritime = unit as Maritime; * routeAtt = maritime.route; * } * else if (unit.GetType().Name == "Bombardier") * { * Bombardier bombardier = unit as Bombardier; * territoireAtt = bombardier.territoire; * } * else * { * Terrestre terrestre = unit as Terrestre; * territoireAtt = terrestre.territoire; * } */ } foreach (Unite unit in unitDef) { if (unit.GetType().Name == "Infanterie") { unitsToDef[(int)Utils.unitCode.Infanterie]++; } if (unit.GetType().Name == "Tank") { unitsToDef[(int)Utils.unitCode.Tank]++; } if (unit.GetType().Name == "Artillerie") { unitsToDef[(int)Utils.unitCode.Artillerie]++; } if (unit.GetType().Name == "Dca") { unitsToDef[(int)Utils.unitCode.DCA]++; } if (unit.GetType().Name == "Croiseur") { unitsToDef[(int)Utils.unitCode.Croiseur]++; } if (unit.GetType().Name == "Submarin") { unitsToDef[(int)Utils.unitCode.Submarin]++; } if (unit.GetType().Name == "Bombardier") { unitsToDef[(int)Utils.unitCode.Bombardier]++; } /* * if (unit.GetType().Name == "Croiseur" && unit.GetType().Name == "Submarin") * { * Maritime maritime = unit as Maritime; * routeDef = maritime.route; * } * else if (unit.GetType().Name == "Bombardier") * { * Bombardier bombardier = unit as Bombardier; * territoireDef = bombardier.territoire; * } * else * { * Terrestre terrestre = unit as Terrestre; * territoireDef = terrestre.territoire; * } */ } int attEntries = 0; int defEntries = 0; int attNbrDetruites = 0; int defNbrDetruites = 0; // Ajout de chaque entrée à la liste for (int i = 0; i < 7; i++) { if (unitsToAtt[i] > 0) { Instantiate(listOfUnitsPrefabs[i], listeAtt.transform); GameObject newEntry = listeAtt.transform.GetChild(listeAtt.transform.childCount - 1).gameObject; newEntry.transform.localPosition = new Vector3(50, 130 - (20 * attEntries), 0); newEntry.transform.rotation = new Quaternion(); newEntry.transform.localScale = new Vector3(1, 1, 1); newEntry.transform.FindChild("Nombre").GetComponent <Text>().text = unitsToAtt[i].ToString(); ++attEntries; } if (unitsToDef[i] > 0) { Instantiate(listOfUnitsPrefabs[i], listeDef.transform); GameObject newEntry = listeDef.transform.GetChild(listeDef.transform.childCount - 1).gameObject; newEntry.transform.localPosition = new Vector3(50, 130 - (20 * defEntries), 0); newEntry.transform.rotation = new Quaternion(); newEntry.transform.localScale = new Vector3(1, 1, 1); newEntry.transform.FindChild("Nombre").GetComponent <Text>().text = unitsToDef[i].ToString(); ++defEntries; } } Text resume = assaultResultPanel.transform.FindChild("Résumé").GetComponent <Text>(); bool attHasLostUnits = false, defHasLostUnits = false; string attUnitsLost = "", defUnitsLost = ""; for (int i = 0; i < unitesDetruitesAtt.Length; i++) { if (unitesDetruitesAtt[i] > 0) { attHasLostUnits = true; string toWrite = unitesDetruitesAtt[i] + " " + Utils.GetUnitsNameByCode(i); attUnitsLost += attUnitsLost.Equals("") ? "" + toWrite : "," + toWrite; attNbrDetruites += unitesDetruitesAtt[i]; } if (unitesDetruitesDef[i] > 0) { defHasLostUnits = true; string toWrite = unitesDetruitesDef[i] + " " + Utils.GetUnitsNameByCode(i); defUnitsLost += defUnitsLost.Equals("") ? "" + toWrite : "," + toWrite; defNbrDetruites += unitesDetruitesDef[i]; } } List <Unite> .Enumerator unitAttEnum = unitAtt.GetEnumerator(); if (unitAttEnum.MoveNext() || unitesDetruitesAtt[(int)Utils.unitCode.Bombardier] > 0) { // Si l'attaque est lancée par des bombardiers ajoute en soutien les DCA à proximité if ((unitAttEnum.Current != null && unitAttEnum.Current.GetType().Name == "Bombardier") || unitesDetruitesAtt[(int)Utils.unitCode.Bombardier] > 0) { Terrestre terrestre = unitDef[0] as Terrestre; List <Dca> dcasInRange = terrestre.territoire.GetDcaInRange(); if (dcasInRange.Count > 0) { Transform soutiens = assaultResultPanel.transform.FindChild("Défense").FindChild("Soutiens").FindChild("Liste"); Instantiate(listOfUnitsPrefabs[(int)Utils.unitCode.DCA], soutiens.transform); GameObject newEntry = soutiens.transform.GetChild(listeDef.transform.childCount - 1).gameObject; newEntry.transform.localPosition = new Vector3(-3, -30, 0); newEntry.transform.rotation = new Quaternion(); newEntry.transform.localScale = new Vector3(1, 1, 1); newEntry.transform.FindChild("Nombre").GetComponent <Text>().text = "" + dcasInRange.Count; } } } else { assaultResultPanel.transform.FindChild("Défense").FindChild("Soutiens").gameObject.SetActive(false); } resume.text = attHasLostUnits ? "L'attaquant a perdu " + attUnitsLost + ". " : "L'attaquant n'a perdu aucune unité. "; resume.text += defHasLostUnits ? "Le défenseur a perdu " + defUnitsLost + ". " : "Le défenseur n'a perdu aucune unité. "; if (attNbrDetruites > defNbrDetruites) { resume.text += "Le défenseur remporte une victoire "; resume.text += defNbrDetruites == 0 ? "majeure." : "mineure."; } else if (attNbrDetruites == defNbrDetruites) { resume.text += "Les pertes sont égales."; } else { resume.text += "L'attaquant remporte une victoire "; resume.text += attNbrDetruites == 0 ? "majeure" : "mineure"; resume.text += unitDef.Count > 0 ? "." : " et le territoire."; } //Debug.Log("Effectivement, c'est le donjon de Naheulbeuk."); OpenDialog(assaultResultPanel); while (dialogOpened) { //Debug.Log("dialogOpened : " + dialogOpened); yield return(null); } //Debug.Log("Il a pas l'air terrible ! "+ assaultResumeOpened); }
/// <summary> /// Active le changement de phase/tour /// </summary> public void PasserButton() { if (!GetComponent <GUIController>().dialogOpened) // S'il n'y a pas de fenêtre de dialogue d'ouverte { if (phaseActive == phases.Deploiement) { List <Unite> .Enumerator unitsEnum = joueurs[joueurActif].Unites.GetEnumerator(); bool canPass = true; while (canPass && unitsEnum.MoveNext()) { if (unitsEnum.Current is Terrestre) { Terrestre unit = unitsEnum.Current as Terrestre; if (unit.territoire == null) { canPass = false; } } else if (unitsEnum.Current is Aerienne) { Aerienne unit = unitsEnum.Current as Aerienne; if (unit.territoire == null) { canPass = false; } } else { Maritime unit = unitsEnum.Current as Maritime; if (unit.route == null) { canPass = false; } } } if (canPass) { phaseActive = phases.Attaque; if (!joueurs[joueurActif].Humain) { IAEasy joueurIA = joueurs[joueurActif] as IAEasy; joueurIA.IAPlay(); } } else { InvalidAction("Vous ne pouvez passer votre tour sans déployer toutes les unités nouvellement achetées."); } } else if (phaseActive == phases.Attaque) { phaseActive = phases.Mouvement; if (!joueurs[joueurActif].Humain) { IAEasy joueurIA = joueurs[joueurActif] as IAEasy; joueurIA.IAPlay(); } else { button.transform.GetChild(0).GetComponent <Text>().text = "Fin du tour"; } } else if (phaseActive == phases.Mouvement) { ChangeActivePlayer(); } } }
/// <summary> /// Lance l'attaque sur le territoire cible. /// </summary> /// <param name="unitAttacking">List(Unite) Les unités donnant l'assaut.</param> /// <param name="cible">Territoire Le territoire cible.</param> public IEnumerator LaunchAttack(List <Unite> unitAttacking, Territoire cible) { unitAtt = new List <Unite>(); foreach (Unite unite in unitAttacking) { unitAtt.Add(unite); } //Debug.Log("unitAtt.Count : " + unitAtt.Count); territoireCible = cible; joueurAtt = unitAtt[0].Joueur; joueurDef = territoireCible.joueur; bool ranged = false; if (unitAtt[0].GetType().Name == "Artillerie" || unitAtt[0].GetType().Name == "Bombardier") { ranged = true; } // Récupération des unités présentes sur la cible foreach (Unite unit in cible.joueur.Unites) { if (unit.GetType().BaseType.Name == "Terrestre") { Terrestre terrestre = unit as Terrestre; if (terrestre.territoire.Equals(cible)) { unitDef.Add(terrestre); } } else if (unit.GetType().BaseType.Name == "Aerienne") { Aerienne aerienne = unit as Aerienne; if (aerienne.territoire.Equals(cible)) { unitDef.Add(aerienne); } } } int[] diceAtt = new int[Math.Min(3, unitAtt.Count)], diceDef = new int[Math.Min(2, unitDef.Count)]; System.Random rand = new System.Random(); // Jets de dés for (int i = 0; i < 3; i++) { if (i < Math.Min(3, unitAtt.Count)) { diceAtt[i] = rand.Next(1, 7); // Tire un chiffre entre 1 et 7 non inclus } if (i < Math.Min(2, unitDef.Count)) { diceDef[i] = rand.Next(1, 7); } } DestroyUnits(diceAtt, diceDef, ranged); // Si toutes les unités de la défense sont détruites, le territoire est conquit if (unitAtt.Count > 0 && unitDef.Count == 0) { territoireCible.joueur.Territoires.Remove(territoireCible.Num); territoireCible.joueur = joueurAtt; joueurAtt.Territoires.Add(territoireCible.Num, territoireCible); territoireCible.unites.Clear(); if (!ranged) { foreach (Unite unit in unitAtt) { if (unit.GetType().Name == "Infanterie" || unit.GetType().Name == "Tank") { Terrestre terrestre = unit as Terrestre; terrestre.territoire.unites.Remove(terrestre); terrestre.territoire = territoireCible; territoireCible.unites.Add(unit); if (joueurAtt.GetType().Name.Equals("IAEasy") || joueurAtt.GetType().Name.Equals("IAMedium") || joueurAtt.GetType().Name.Equals("IAHard")) { terrestre.transform.localPosition = territoireCible.Position; } } } } } else { foreach (Unite unit in unitAtt) { unit.ResetPosition(); } if (ranged) { foreach (Unite unit in unitAtt) { unit.Disable(); } } } ////Debug.Log("Ça se voit."); // Affichage du résultat de l'assaut. yield return(StartCoroutine(GameObject.Find("GUIManager").GetComponent <GUIController>().ShowAssaultResult(diceAtt, diceDef, unitesDetruitesAtt, unitesDetruitesDef, unitAtt, unitDef))); //Debug.Log("Eh bien, je frappe pour qu'on vienne nous ouvrir."); // Réinitialisation des variables pour éviter toute erreur. Reset(); }
List <IEmpresa> ICrearInstanciaPaqueteriaFactory.CrearInstancia(string cClave, List <Configuracion> configuracion) { List <IEmpresa> empresa = null; IMediosTransporte medioTransporte = null; MediosTransporte Mediotransporte = null; Mediotransporte = configuracion[0].mediosTransporte.Where(x => x.Medio.ToUpper() == cClave.ToUpper()).FirstOrDefault(); switch (cClave) { case "MARITIMO": medioTransporte = new Maritimo(new CalculadorVelocidadMaritimo(Mediotransporte.VelocidadPorTemporada, new Estacion(configuracion[0].temporadas)), new CalculadorCostoEnvioMaritimo(Mediotransporte.CostoAdicionalPorTemporada, Mediotransporte.CostoPorKilometro, new Estacion(configuracion[0].temporadas))); empresa = new List <IEmpresa>(); ParametrosDTO parametros = new ParametrosDTO(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); break; case "TERRESTRE": medioTransporte = new Terrestre(new CalculadorCostoEnvioTerrestre(Mediotransporte.CostoPorKilometro), new CalculadorTiempoTrasladoTerrestre(new Estacion(configuracion[0].temporadas), Mediotransporte.RetrasoPorDiaPorTemporada)); empresa = new List <IEmpresa>(); ParametrosDTO parametrosT = new ParametrosDTO(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); break; case "AEREO": medioTransporte = new Aereo(new CalculadorEscalas()); empresa = new List <IEmpresa>(); empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos, configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()), configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(), new ParametrosDTO())); break; } return(empresa); }
/// <summary> /// Permet à l'IA d'acheter des unités selon les conditions. /// </summary> public void IAUniteAchat() { step = 1; // Le plus bas score et l'index du territoire correspondant. // 1000 nécessiterait par exemple 100 tanks sur le territoire, c'est donc une valeur à priori impossible à atteindre. int worstScore = 1000, worstIndex = 0; int[] worstCount = new int[] { 0, 0, 0, 0, 0 }; foreach (KeyValuePair <int, Territoire> keyValue in territoires) { int score = 0; int[] unitesCount = new int[] { 0, 0, 0, 0, 0 }; foreach (Unite unit in keyValue.Value.unites) { if (unit.GetType().Name == "Infanterie") { score += 4; unitesCount[(int)Utils.unitCode.Infanterie]++; } else if (unit.GetType().Name == "Tank") { score += 10; unitesCount[(int)Utils.unitCode.Tank]++; } else if (unit.GetType().Name == "Artillerie") { score += 7; unitesCount[(int)Utils.unitCode.Artillerie]++; } else if (unit.GetType().Name == "Dca") { score += 4; unitesCount[(int)Utils.unitCode.DCA]++; } else { score += 5; unitesCount[4]++; } } if (worstScore > score) { worstScore = score; worstIndex = keyValue.Value.Num; worstCount = unitesCount; } } Terrestre newUnit = null; if (worstCount[(int)Utils.unitCode.Tank] == 0) { if (credits >= Tank.COUT) { newUnit = boutique.CreateUnit( (int)Utils.unitCode.Tank, GameObject.Find("Unites").transform, territoires[worstIndex].position, this ).gameObject.GetComponent <Tank>(); } else if (worstCount[(int)Utils.unitCode.Infanterie] < 5 && credits >= Infanterie.COUT) { newUnit = boutique.CreateUnit( (int)Utils.unitCode.Infanterie, GameObject.Find("Unites").transform, territoires[worstIndex].position, this ).gameObject.GetComponent <Infanterie>(); } } else if (worstCount[(int)Utils.unitCode.Artillerie] == 0 && credits >= Artillerie.COUT) { newUnit = boutique.CreateUnit( (int)Utils.unitCode.Artillerie, GameObject.Find("Unites").transform, territoires[worstIndex].position, this ).gameObject.GetComponent <Artillerie>(); } else if (credits >= Bombardier.COUT) { Aerienne newAerien = boutique.CreateUnit( (int)Utils.unitCode.Bombardier, GameObject.Find("Unites").transform, territoires[worstIndex].position, this ).gameObject.GetComponent <Bombardier>(); newAerien.territoire = territoires[worstIndex]; territoires[worstIndex].unites.Add(newAerien); } if (newUnit != null) { newUnit.territoire = territoires[worstIndex]; territoires[worstIndex].unites.Add(newUnit); } if (credits >= Dca.COUT) { List <Territoire> .Enumerator voisins3DegreEnum = territoires[worstIndex].GetVoisinsNDegree(3, true, true).GetEnumerator(); bool bombardierAPortee = false; while (!bombardierAPortee && voisins3DegreEnum.MoveNext()) { List <Unite> .Enumerator unitesEnum = voisins3DegreEnum.Current.unites.GetEnumerator(); while (!bombardierAPortee && unitesEnum.MoveNext()) { if (unitesEnum.Current.GetType().Name == "Bombardier") { bombardierAPortee = true; } } } if (bombardierAPortee) { newUnit = boutique.CreateUnit( (int)Utils.unitCode.DCA, GameObject.Find("Unite").transform, territoires[worstIndex].position, this ).gameObject.GetComponent <Dca>(); newUnit.territoire = territoires[worstIndex]; territoires[worstIndex].unites.Add(newUnit); } } step = 2; //Si la route en question est coller au territoire du joueur /* if (routes) { * GameObject subMarinPrefab = boutique.GetRightPrefab ((int)Utils.unitCode.Submarin, true); * Transform newUnitSubMarin = boutique.CreateUnit ((int)Utils.unitCode.Submarin, GameObject.Find ("Unite").transform, newTerritoire.position, rotation); * } */ }