Exemple #1
0
    //------------------------- Raycast ------------------------------

    public static RaycastHit2D raycast(
        Vector2 inOrigin, Vector2 inDiraction, float inDistance,
        System.Func <Collider2D, bool> inContinueLambda)
    {
        XUtils.check(null != inContinueLambda);

        int theActualResultsCount = Physics2D.RaycastNonAlloc(
            inOrigin, inDiraction, __hitResults, inDistance
            );

        XUtils.sort(__hitResults, 0, theActualResultsCount,
                    (RaycastHit2D inHitA, RaycastHit2D inHitB) =>
        {
            return(XUtils.compare(inHitA.distance, inHitB.distance));
        });

        for (int theIndex = 0; theIndex < theActualResultsCount; ++theIndex)
        {
            Collider2D theCollider = __hitResults[theIndex].collider;
            if (inContinueLambda(theCollider))
            {
                continue;
            }
            return(__hitResults[theIndex]);
        }

        return(new RaycastHit2D());
    }
Exemple #2
0
    //-Implementation
    private void Awake()
    {
        XUtils.check(ProgressIndicator);
        XUtils.check(WorkersAssignemntControl);

        WorkersAssignemntControl.onPressedAssignWorker += () => {
            CrewMember theCrewMemberToAssign =
                XUtils.verify(_carCity).getFirstFreeCrewMember();
            if (null == theCrewMemberToAssign)
            {
                return;
            }

            collectConstructionSiteWorkers(ref __arrayRegister);
            if (__arrayRegister.getSize() >=
                _constructionSite.getMaxWorkersPossibleToAssign())
            {
                return;
            }

            theCrewMemberToAssign.setConstruction(_constructionSite);
        };

        WorkersAssignemntControl.onPressedWithdrawWorker += () => {
            collectConstructionSiteWorkers(ref __arrayRegister);
            if (0 == __arrayRegister.getSize())
            {
                return;
            }

            __arrayRegister[0].setConstruction(null);
        };
    }
Exemple #3
0
    //--Debug
    private void validateState()
    {
        XUtils.check(_camera);
        XUtils.check(Vector3.one == _camera.transform.localScale);

        XUtils.check(null != _cameraSettings || _transitionState.isSet());
    }
Exemple #4
0
    //-Implementation
    private void Awake()
    {
        XUtils.check(_camera);

        _cameraSettings =
            XUtils.verify(_initialSettingsHolder).getSettings();
    }
Exemple #5
0
        public AnimatedField_Vector3(System.Reflection.FieldInfo inField)
        {
            XUtils.check(inField.GetType() == typeof(Vector3));

            _object = null;
            _field  = inField;
        }
Exemple #6
0
    //-Implementation
    private void Awake()
    {
        XUtils.check(_buildingsSelectionHierarchicalGrid);

        XUtils.check(_buildingSelectionUIElementPrefab);
        XUtils.check(_buildingsGroupSelectionUIElementPrefab);
    }
Exemple #7
0
    public void removeElementsInRange(int inBeginIndex, int inEndIndex,
                                      ElementProcessingDelegate inProcessingDelegate)
    {
        validateIndex(inBeginIndex);
        validateIndex(inEndIndex);
        XUtils.check(inBeginIndex <= inEndIndex);

        int theLastIndex              = getLastIndex();
        int theElementsNumToRemove    = inEndIndex - inBeginIndex;
        int theRemovingElementsOffset = theElementsNumToRemove + 1;

        if (null != inProcessingDelegate)
        {
            for (int theIndex = inBeginIndex; theIndex < inEndIndex; ++theIndex)
            {
                inProcessingDelegate.Invoke(_elements[theIndex]);
            }
        }

        if (inEndIndex != theLastIndex)
        {
            int theLastMovingElementIndex = theLastIndex - theRemovingElementsOffset;
            for (int theIndex = inBeginIndex; theIndex <= theLastMovingElementIndex; ++theIndex)
            {
                _elements[theIndex] = _elements[theIndex + theRemovingElementsOffset];
            }
        }

        _size -= theElementsNumToRemove;
    }
Exemple #8
0
 static public void setFieldValue <T_ObjectType, T_FieldType>(T_ObjectType inObject,
                                                              string inFieldName, T_FieldType inFieldValue)
     where T_ObjectType : class
 {
     XUtils.check(null != inObject);
     getField <T_ObjectType>(inFieldName).SetValue(inObject, inFieldValue);
 }
Exemple #9
0
    //Methods
    //-API
    public void setCamera(
        CameraTypes.CameraSettings inCameraSettings)
    {
        XUtils.check(inCameraSettings);

        internalStopTransition();
        internalSetCameraSettings(inCameraSettings);
    }
Exemple #10
0
 public static void sort <T_Type>(
     T_Type[] inoutArray, int inStartIndex, int inLength,
     System.Func <T_Type, T_Type, Comparation> inLambda)
 {
     XUtils.check(null != inLambda);
     System.Array.Sort(inoutArray, inStartIndex, inLength,
                       LambdaComparer <T_Type> .getForLambda(inLambda)
                       );
 }
    //-Internal API
    internal void addElementToElement(
        HierarchicalUIElementObject inElement,
        HierarchicalUIElementObject inSubelement)
    {
        XUtils.check(inElement && inSubelement);

        inSubelement._hierarchicalUIobject = this;
        inElement._elements.add(inSubelement);

        implementation_addElementToElement(inElement, inSubelement);
    }
    internal void removeElementFromElement(
        HierarchicalUIElementObject inElement,
        HierarchicalUIElementObject inSubelement)
    {
        XUtils.check(inElement && inSubelement);
        XUtils.check(inElement._elements.contains(inSubelement));

        implementation_removeElementFromElement(inElement, inSubelement);

        inElement._elements.removeElement(inSubelement);
        inSubelement._hierarchicalUIobject = null;
    }
Exemple #13
0
    private void refreshShowingElement()
    {
        XUtils.check(_elementShownInGrid);

        _gridRectTransform.DetachChildren();

        foreach (HierarchicalUIElementObject theChildElement in _elementShownInGrid._elements)
        {
            XUtils.getComponent <RectTransform>(
                theChildElement, XUtils.AccessPolicy.ShouldExist
                ).SetParent(_gridRectTransform, false);
        }
    }
Exemple #14
0
    public static System.Reflection.FieldInfo getField <T_ObjectType>(
        string inFieldName, bool inDoCheck = true)
    {
        System.Type theType = typeof(T_ObjectType);
        System.Reflection.FieldInfo theFieldInfo = theType.GetField(inFieldName,
                                                                    System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic
                                                                    );
        if (inDoCheck)
        {
            XUtils.check(null != theFieldInfo, "Cannot find provided field");
        }

        return(theFieldInfo);
    }
Exemple #15
0
        public int Compare(T_Type inA, T_Type inB)
        {
            XUtils.check(null != lambda);
            switch (lambda(inA, inB))
            {
            case Comparation.ALessThenB: return(-1);

            case Comparation.AEqualsB:   return(0);

            case Comparation.AMoreThenB: return(1);
            }

            XUtils.check(false);
            return(0);
        }
Exemple #16
0
    public ConstructionSiteObject createConstructionSite()
    {
        XUtils.check(isPossibleToBuild());

        ConstructionSiteObject theConstructionSite = XUtils.createObject(
            getBuildingScheme().constructionSite, transform
            );

        theConstructionSite.init(_carCity);

        theConstructionSite.transform.SetParent(transform.parent, true);
        theConstructionSite.gameObject.layer = gameObject.layer;

        return(theConstructionSite);
    }
Exemple #17
0
    //NB: Speed is used for ortho size change
    //TODO: Find some better approach for transition time setup
    public void setCamera(
        CameraTypes.CameraSettings inCameraSettings, float inSpeed = 0.0f)
    {
        XUtils.check(inCameraSettings);
        XUtils.check(inSpeed >= 0);

        internalStopTransition();

        if (0.0f == inSpeed)
        {
            internalSetCameraSettings(inCameraSettings);
        }
        else
        {
            internalStartTransition(inCameraSettings, inSpeed);
        }
    }
Exemple #18
0
    //-Find
    public Optional <int> findIndex(ElementPredicate inPredicate)
    {
        if (null == inPredicate)
        {
            return(new Optional <int>());
        }
        XUtils.check(null != inPredicate);

        int theIndex = 0;

        foreach (T_ElementType theElement in this)
        {
            if (inPredicate.Invoke(theElement))
            {
                return(new Optional <int>(theIndex));
            }
            ++theIndex;
        }

        return(new Optional <int>());
    }
Exemple #19
0
    override protected void implementation_goInto(
        HierarchicalUIElementObject inElement)
    {
        XUtils.check(inElement);
        if (inElement == _elementShownInGrid)
        {
            return;
        }

        Optional <int> theWayIndexOfElementToGoInto = _wayUI.getIndexOfElement(inElement);

        if (theWayIndexOfElementToGoInto.isSet())
        {
            _wayUI.removeWayElementsUpToEnd(theWayIndexOfElementToGoInto.getValue() + 1);
        }
        else
        {
            _wayUI.addWayElement(createWayElementForElement(inElement));
        }

        showElementInGrid(inElement);
    }
Exemple #20
0
    //TODO: Find how to organize Damage API Classes better
    public static void applyDamage(GameObject inGameObject, Damage inDamage)
    {
        XUtils.check(inGameObject);
        var theDamageProxy = XUtils.getComponent <DamageProxy>(
            inGameObject, XUtils.AccessPolicy.JustFind
            );

        if (theDamageProxy)
        {
            theDamageProxy.applyDamage(inDamage);
            return;
        }

        var theDurability = XUtils.getComponent <DurabilityComponent>(
            inGameObject, XUtils.AccessPolicy.JustFind
            );

        if (theDurability)
        {
            theDurability.changeHitPoints(-inDamage.damageAmount);
        }
    }
Exemple #21
0
    //-Implementation
    void Awake()
    {
        //TODO: Remove editor pannels here

        XUtils.verify(worldUI).initFromGameUI(carCity);
        XUtils.verify(carCityUI).initFromGameUI(carCity);

        worldUI.onClickedGoToCarCity += () => { switchToCarCityUI(300.0f); };
        carCityUI.onClickedGoToWorld += () => { switchToWorldUI(300.0f); };

        _cameraManager = XUtils.verify(
            FindObjectOfType <CameraManager>()
            );

        _pauseManager = XUtils.verify(
            FindObjectOfType <PauseManager>()
            );

        XUtils.check(worldCamera);
        XUtils.check(carCityCamera);

        switchToWorldUI();
    }
Exemple #22
0
 private void checkChanges()
 {
     XUtils.check(_validation_changesTracker.Equals(_arrayFrom._validation_changesTracker));
 }
 //Methods
 //-Child API
 protected void select()
 {
     XUtils.check(_element);
     XUtils.verify(_hierarchicalGridUIObject).goInto(_element);
 }
Exemple #24
0
 public void removeElement(HierarchicalUIElementObject inElement)
 {
     XUtils.check(null != inElement && null != _hierarchicalUIobject);
     _hierarchicalUIobject.removeElementFromElement(this, inElement);
 }
Exemple #25
0
 //Methods
 //-API
 public void addElement(HierarchicalUIElementObject inElement)
 {
     XUtils.check(null != inElement && null != _hierarchicalUIobject);
     _hierarchicalUIobject.addElementToElement(this, inElement);
 }
 internal void goInto(HierarchicalUIElementObject inElement)
 {
     XUtils.check(inElement);
     implementation_goInto(inElement);
 }
Exemple #27
0
 private void validateIndex(int inIndex)
 {
     XUtils.check(isValidIndex(inIndex));
     //Debug.Log("Trying to remove element that is out of array: " + inIndex);
 }