/** * Kalkuluje ocenę przedmiotu ekwipunku przy braniu pod uwagę priorytet przedmiotu w ekwipunku i konsekwencję w wyborze tego samego celu. * originalTargetRate- to jest polecane w takim stopniu * equipmentPiece- to jest ten który wydaje polecenie * */ private EquipmentRate calculateEquipmentRate(TargetRate originalTargetRate, EquipmentPieceAI equipmentPiece) { if (originalTargetRate == null || originalTargetRate.getTarget() == null || equipmentPiece == null) { return(null); } EquipmentRate equipmentRatePostScaling = new EquipmentRate(equipmentPiece, originalTargetRate.getTargetRate(), originalTargetRate.getTarget()); equipmentRatePostScaling.setRate(equipmentRatePostScaling.getEquipmentRate() * equipmentPiece.priority); if (equipmentPiece == lastUsedEquipmentPiece) { equipmentRatePostScaling.setRate(equipmentRatePostScaling.getEquipmentRate() + consequenceBonus); } return(equipmentRatePostScaling); }
private async void ConvertMoney() { double sourceRateW = 0; double targetRateW = 0; try { sourceRateW = double.Parse(SourceRate.Substring(3)); targetRateW = double.Parse(TargetRate.Substring(3)); } catch (Exception) { sourceRateW = 0; targetRateW = 0; } if (Amount <= 0) { await App.Current.MainPage.DisplayAlert("Error", "Debes ingresar un valor a convertir", "Aceptar"); return; } if (sourceRateW == 0) { await App.Current.MainPage.DisplayAlert("Error", "Debes seleccionar la moneda origen", "Aceptar"); return; } if (targetRateW == 0) { await App.Current.MainPage.DisplayAlert("Error", "Debes seleccionar la moneda destino", "Aceptar"); return; } decimal amountConverted = Amount / (decimal)sourceRateW * (decimal)targetRateW; Message = string.Format("{0:N2} = {1:N2}", Amount, amountConverted); }
public override List <TargetRate> rateTargets(List <GameObject> detectedGameObjects) { List <TargetRate> targetRateList = new List <TargetRate> (); privateTarget = null; if (weapon != null) { if (detectedGameObjects != null && detectedGameObjects.Count > 0) { //Wstępna filtracja obiektów List <GameObject> tempDetectedObjects = new List <GameObject>(); for (int i = 0; i < detectedGameObjects.Count; i++) { if (CheckTargetValidity(detectedGameObjects[i])) { tempDetectedObjects.Add(detectedGameObjects[i]); } } //Rating wybranych obiektów if (tempDetectedObjects.Count > 0) { float rate = 0f; float rateNormalization = 1f; float currentHealth = 0f; for (int i = 0; i < tempDetectedObjects.Count; i++) { //sprawdzenie poziomu życia currentHealth = tempDetectedObjects[i].GetComponent <Health>().getCurrentHealth() / tempDetectedObjects[i].GetComponent <Health>().MAX_HEALTH; if (currentHealth < 0.5) { rate = 5; } else { rate = 0; } rateNormalization = 5; //sprawdzenie czy poprzednio to był nasz cel EquipmentAI equipmentAI = GetComponent <EquipmentAI>(); if (equipmentAI != null && equipmentAI.lastTarget != null && equipmentAI.lastTarget == tempDetectedObjects[i]) { rate += 10; rateNormalization += 10; } //sprawdzenie odległości if (Vector3.Distance(transform.position, tempDetectedObjects[i].transform.position) < personalSpaceRadius) { rate += 10; rateNormalization += 10; } //sprawdzenie czy możemy do niego strzelać if (RayTargetCheck(tempDetectedObjects[i])) { rate += 30; rateNormalization += 30; } //normalizacja i zapisanie wyniku rate = rate / rateNormalization; targetRateList.Add(new TargetRate(tempDetectedObjects[i], rate)); } } //Wybranie własnego celu TargetRate maxTargetRate = new TargetRate(null, 0); for (int i = 0; i < targetRateList.Count; i++) { if (targetRateList[i].getTargetRate() > maxTargetRate.getTargetRate()) { maxTargetRate = targetRateList[i]; } } privateTarget = maxTargetRate.getTarget(); } } return(targetRateList); }
public override List<TargetRate> rateTargets(List<GameObject> detectedGameObjects) { List<TargetRate> targetRateList = new List<TargetRate> (); privateTarget = null; if(weapon != null) { if(detectedGameObjects != null && detectedGameObjects.Count > 0) { //Wstępna filtracja obiektów List<GameObject> tempDetectedObjects = new List<GameObject>(); for(int i = 0; i < detectedGameObjects.Count; i++) { if(CheckTargetValidity(detectedGameObjects[i])) { tempDetectedObjects.Add(detectedGameObjects[i]); } } //Rating wybranych obiektów if(tempDetectedObjects.Count > 0) { float rate = 0f; float rateNormalization = 1f; float currentHealth = 0f; for(int i = 0; i < tempDetectedObjects.Count; i++) { //sprawdzenie poziomu życia currentHealth = tempDetectedObjects[i].GetComponent<Health>().getCurrentHealth() / tempDetectedObjects[i].GetComponent<Health>().MAX_HEALTH; if(currentHealth < 0.5) { rate = 5; } else { rate = 0; } rateNormalization = 5; //sprawdzenie czy poprzednio to był nasz cel EquipmentAI equipmentAI = GetComponent<EquipmentAI>(); if(equipmentAI != null && equipmentAI.lastTarget != null && equipmentAI.lastTarget == tempDetectedObjects[i]) { rate += 10; rateNormalization += 10; } //sprawdzenie odległości if(Vector3.Distance(transform.position, tempDetectedObjects[i].transform.position) < personalSpaceRadius) { rate += 10; rateNormalization += 10; } //sprawdzenie czy możemy do niego strzelać if(RayTargetCheck(tempDetectedObjects[i])) { rate += 30; rateNormalization += 30; } //normalizacja i zapisanie wyniku rate = rate/rateNormalization; targetRateList.Add(new TargetRate(tempDetectedObjects[i], rate)); } } //Wybranie własnego celu TargetRate maxTargetRate = new TargetRate(null, 0); for(int i=0; i < targetRateList.Count; i++) { if(targetRateList[i].getTargetRate() > maxTargetRate.getTargetRate()) { maxTargetRate = targetRateList[i]; } } privateTarget = maxTargetRate.getTarget(); } } return targetRateList; }
/** * Wyznaczenie nowego używanego ekwipunku i zalecanego celu. * */ public void determineNewFavourites() { lastTarget = currentTarget; lastUsedEquipmentPiece = currentlyUsedEquipmentPiece; if(sense != null && equipmentPieces != null && equipmentPieces.Length > 0 && sense.getObjectsInRange()!= null) { if(sense.getObjectsInRange().Count > 0) { EquipmentRate maxEquipmentRate = new EquipmentRate(null, 0, null); //obecny maksymalny rating przedmiotu for(int i=0; i < equipmentPieces.Length; i++) { equipmentPieces[i].setPermissionToOperate(false); List<TargetRate> ratingList = equipmentPieces[i].rateTargets(sense.getObjectsInRange()); //żądanie by przedmiot ocenił cele TargetRate maxTargetRate = new TargetRate(null, 0); //obecny maksymalny rating konkretnego celu //Wyznaczanie celu najbardziej zalecanego przez ten przedmiot if(ratingList != null && ratingList.Count > 0) { for(int j=0; j < ratingList.Count; j++) { if(maxTargetRate.getTargetRate() < ratingList[j].getTargetRate()) { maxTargetRate = ratingList[j]; //przypisanie większej wartości jako maksimum } } } //equipmentPieces[i] najbardziej poleca maxTargetRate, wyliczanie oceny przedmotu ekwipunku EquipmentRate calculatedEquipmentRate = calculateEquipmentRate(maxTargetRate, equipmentPieces[i]); //wybranie przedmiotu faworyta w ekwipunku if(calculatedEquipmentRate != null && maxEquipmentRate.getEquipmentRate() < calculatedEquipmentRate.getEquipmentRate()) { maxEquipmentRate = calculatedEquipmentRate; //przypisanie większego faworyta-przedmiotu w ekwipunku } } //zakończenie wybierania, maxEquipmentRate- najbardziej polecany przedmiot currentTarget = maxEquipmentRate.getTarget(); currentlyUsedEquipmentPiece = maxEquipmentRate.getEquipmentPiece(); if(currentlyUsedEquipmentPiece != null) { currentlyUsedEquipmentPiece.setPermissionToOperate(true); } if(maxEquipmentRate.getEquipmentPiece() != null) { optimalDistanceToTarget = maxEquipmentRate.getEquipmentPiece().getOptimalRange(); maximalDistanceToTarget = maxEquipmentRate.getEquipmentPiece().getOptimalRange(); } else { optimalDistanceToTarget = 0f; maximalDistanceToTarget = 0f; } } else { currentTarget = null; currentlyUsedEquipmentPiece = null; optimalDistanceToTarget = 0; maximalDistanceToTarget = 0; } } }
/** * Kalkuluje ocenę przedmiotu ekwipunku przy braniu pod uwagę priorytet przedmiotu w ekwipunku i konsekwencję w wyborze tego samego celu. * originalTargetRate- to jest polecane w takim stopniu * equipmentPiece- to jest ten który wydaje polecenie * */ private EquipmentRate calculateEquipmentRate(TargetRate originalTargetRate, EquipmentPieceAI equipmentPiece) { if (originalTargetRate == null || originalTargetRate.getTarget() == null || equipmentPiece == null) { return null; } EquipmentRate equipmentRatePostScaling = new EquipmentRate (equipmentPiece, originalTargetRate.getTargetRate (), originalTargetRate.getTarget ()); equipmentRatePostScaling.setRate(equipmentRatePostScaling.getEquipmentRate() * equipmentPiece.priority); if(equipmentPiece == lastUsedEquipmentPiece) { equipmentRatePostScaling.setRate(equipmentRatePostScaling.getEquipmentRate() + consequenceBonus); } return equipmentRatePostScaling; }
/** * Wyznaczenie nowego używanego ekwipunku i zalecanego celu. * */ public void determineNewFavourites() { lastTarget = currentTarget; lastUsedEquipmentPiece = currentlyUsedEquipmentPiece; if (sense != null && equipmentPieces != null && equipmentPieces.Length > 0 && sense.getObjectsInRange() != null) { if (sense.getObjectsInRange().Count > 0) { EquipmentRate maxEquipmentRate = new EquipmentRate(null, 0, null); //obecny maksymalny rating przedmiotu for (int i = 0; i < equipmentPieces.Length; i++) { equipmentPieces[i].setPermissionToOperate(false); List <TargetRate> ratingList = equipmentPieces[i].rateTargets(sense.getObjectsInRange()); //żądanie by przedmiot ocenił cele TargetRate maxTargetRate = new TargetRate(null, 0); //obecny maksymalny rating konkretnego celu //Wyznaczanie celu najbardziej zalecanego przez ten przedmiot if (ratingList != null && ratingList.Count > 0) { for (int j = 0; j < ratingList.Count; j++) { if (maxTargetRate.getTargetRate() < ratingList[j].getTargetRate()) { maxTargetRate = ratingList[j]; //przypisanie większej wartości jako maksimum } } } //equipmentPieces[i] najbardziej poleca maxTargetRate, wyliczanie oceny przedmotu ekwipunku EquipmentRate calculatedEquipmentRate = calculateEquipmentRate(maxTargetRate, equipmentPieces[i]); //wybranie przedmiotu faworyta w ekwipunku if (calculatedEquipmentRate != null && maxEquipmentRate.getEquipmentRate() < calculatedEquipmentRate.getEquipmentRate()) { maxEquipmentRate = calculatedEquipmentRate; //przypisanie większego faworyta-przedmiotu w ekwipunku } } //zakończenie wybierania, maxEquipmentRate- najbardziej polecany przedmiot currentTarget = maxEquipmentRate.getTarget(); currentlyUsedEquipmentPiece = maxEquipmentRate.getEquipmentPiece(); if (currentlyUsedEquipmentPiece != null) { currentlyUsedEquipmentPiece.setPermissionToOperate(true); } if (maxEquipmentRate.getEquipmentPiece() != null) { optimalDistanceToTarget = maxEquipmentRate.getEquipmentPiece().getOptimalRange(); maximalDistanceToTarget = maxEquipmentRate.getEquipmentPiece().getOptimalRange(); } else { optimalDistanceToTarget = 0f; maximalDistanceToTarget = 0f; } } else { currentTarget = null; currentlyUsedEquipmentPiece = null; optimalDistanceToTarget = 0; maximalDistanceToTarget = 0; } } }