/**
     * 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);
    }
Пример #2
0
	/**
	 * 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;
			}
		}
	}
Пример #3
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;
	}
Пример #4
0
        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            // credit: http://stackoverflow.com/a/263416/677735
            unchecked // Overflow is fine, just wrap
            {
                int hash = 41;

                // Suitable nullity checks
                hash = hash * 59 + Id.GetHashCode();

                if (Number != null)
                {
                    hash = hash * 59 + Number.GetHashCode();
                }

                if (Status != null)
                {
                    hash = hash * 59 + Status.GetHashCode();
                }

                if (Equipment != null)
                {
                    hash = hash * 59 + Equipment.GetHashCode();
                }

                if (Project != null)
                {
                    hash = hash * 59 + Project.GetHashCode();
                }

                if (RentalAgreementRates != null)
                {
                    hash = hash * 59 + RentalAgreementRates.GetHashCode();
                }

                if (RentalAgreementConditions != null)
                {
                    hash = hash * 59 + RentalAgreementConditions.GetHashCode();
                }

                if (TimeRecords != null)
                {
                    hash = hash * 59 + TimeRecords.GetHashCode();
                }

                if (Note != null)
                {
                    hash = hash * 59 + Note.GetHashCode();
                }

                if (EstimateStartWork != null)
                {
                    hash = hash * 59 + EstimateStartWork.GetHashCode();
                }

                if (DatedOn != null)
                {
                    hash = hash * 59 + DatedOn.GetHashCode();
                }

                if (EstimateHours != null)
                {
                    hash = hash * 59 + EstimateHours.GetHashCode();
                }

                if (EquipmentRate != null)
                {
                    hash = hash * 59 + EquipmentRate.GetHashCode();
                }

                if (RatePeriod != null)
                {
                    hash = hash * 59 + RatePeriod.GetHashCode();
                }

                if (RateComment != null)
                {
                    hash = hash * 59 + RateComment.GetHashCode();
                }

                return(hash);
            }
        }
Пример #5
0
        /// <summary>
        /// Returns true if RentalAgreement instances are equal
        /// </summary>
        /// <param name="other">Instance of RentalAgreement to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(RentalAgreement other)
        {
            if (other is null)
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     Id == other.Id ||
                     Id.Equals(other.Id)
                     ) &&
                 (
                     Number == other.Number ||
                     Number != null &&
                     Number.Equals(other.Number)
                 ) &&
                 (
                     Status == other.Status ||
                     Status != null &&
                     Status.Equals(other.Status)
                 ) &&
                 (
                     Equipment == other.Equipment ||
                     Equipment != null &&
                     Equipment.Equals(other.Equipment)
                 ) &&
                 (
                     Project == other.Project ||
                     Project != null &&
                     Project.Equals(other.Project)
                 ) &&
                 (
                     RentalAgreementRates == other.RentalAgreementRates ||
                     RentalAgreementRates != null &&
                     RentalAgreementRates.SequenceEqual(other.RentalAgreementRates)
                 ) &&
                 (
                     RentalAgreementConditions == other.RentalAgreementConditions ||
                     RentalAgreementConditions != null &&
                     RentalAgreementConditions.SequenceEqual(other.RentalAgreementConditions)
                 ) &&
                 (
                     TimeRecords == other.TimeRecords ||
                     TimeRecords != null &&
                     TimeRecords.SequenceEqual(other.TimeRecords)
                 ) &&
                 (
                     Note == other.Note ||
                     Note != null &&
                     Note.Equals(other.Note)
                 ) &&
                 (
                     EstimateStartWork == other.EstimateStartWork ||
                     EstimateStartWork != null &&
                     EstimateStartWork.Equals(other.EstimateStartWork)
                 ) &&
                 (
                     DatedOn == other.DatedOn ||
                     DatedOn != null &&
                     DatedOn.Equals(other.DatedOn)
                 ) &&
                 (
                     EstimateHours == other.EstimateHours ||
                     EstimateHours != null &&
                     EstimateHours.Equals(other.EstimateHours)
                 ) &&
                 (
                     EquipmentRate == other.EquipmentRate ||
                     EquipmentRate != null &&
                     EquipmentRate.Equals(other.EquipmentRate)
                 ) &&
                 (
                     RatePeriod == other.RatePeriod ||
                     RatePeriod != null &&
                     RatePeriod.Equals(other.RatePeriod)
                 ) &&
                 (
                     RateComment == other.RateComment ||
                     RateComment != null &&
                     RateComment.Equals(other.RateComment)
                 ));
        }
    /**
     * 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;
            }
        }
    }