Beispiel #1
0
 /**
  * Uaktualnia wykryte przez zmysł obiekty.
  * */
 private void SenseUpdate()
 {
     if (minionControll.GetOmniSense() != null)
     {
         minionControll.GetOmniSense().DetectGameObjects();
     }
 }
Beispiel #2
0
    /**
     * Wyznaczenie nowego używanego ekwipunku i zalecanego celu.
     * */
    public void determineNewFavourites()
    {
        lastTarget             = currentTarget;
        lastUsedEquipmentPiece = currentlyUsedEquipmentPiece;
        if (minionControll.GetOmniSense() != null && equipmentPieceAIs != null && equipmentPieceAIs.Length > 0 && minionControll.GetOmniSense().GetObjectsInRange() != null)
        {
            if (minionControll.GetOmniSense().GetObjectsInRange().Count > 0)
            {
                EquipmentRate maxEquipmentRate = new EquipmentRate(null, 0, null);      //obecny maksymalny rating przedmiotu
                for (int i = 0; i < equipmentPieceAIs.Length; i++)
                {
                    equipmentPieceAIs[i].setPermissionToOperate(false);
                    List <TargetRate> ratingList    = equipmentPieceAIs[i].rateTargets(minionControll.GetOmniSense().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
                            }
                        }
                    }
                    //equipmentPieceAIs[i] najbardziej poleca maxTargetRate, wyliczanie oceny przedmotu ekwipunku
                    EquipmentRate calculatedEquipmentRate = calculateEquipmentRate(maxTargetRate, equipmentPieceAIs[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().getMaxRange();
                }
                else
                {
                    optimalDistanceToTarget = 0f;
                    maximalDistanceToTarget = 0f;
                }
            }
            else
            {
                currentTarget = null;
                currentlyUsedEquipmentPiece = null;
                optimalDistanceToTarget     = 0;
                maximalDistanceToTarget     = 0;
            }
        }
    }