public virtual void CallEventCommandMove(rtsHitType hitType, RaycastHit hit)
 {
     bIsAimingToShoot = bIsCommandAttacking = bIsAiAttacking = false;
     bIsCommandMoving = true;
     bIsAIMoving      = false;
     CallEventCommandMove(hit.point);
 }
Пример #2
0
        protected void HandleRightClick(rtsHitType hitType, RaycastHit hit)
        {
            if (!bIsCurrentPlayerCommander || bNoPartyCommandsAllowed)
            {
                return;
            }
            switch (hitType)
            {
            case rtsHitType.Ally:
                break;

            case rtsHitType.Enemy:
                GameObject _root  = hit.collider.gameObject.transform.root.gameObject;
                AllyMember _enemy = _root.GetComponent <AllyMember>();
                AllyInCommand.allyEventHandler.CallEventPlayerCommandAttackEnemy(_enemy);
                //Adding Command Attack Event Call To ActionItem Queue
                //AllyInCommand.allyEventHandler.CallOnAddActionItemToQueue(new RTSActionItem(
                //    _ally => _ally.allyEventHandler.CallEventPlayerCommandAttackEnemy(_enemy),
                //    _ally => true, ActionFilters.AI, true, false, true, false, _ally => true,
                //    _ally => _ally.bIsAttacking == false, (_ally) =>
                //    {
                //        _ally.allyEventHandler.CallEventStopTargettingEnemy();
                //        _ally.allyEventHandler.CallEventFinishedMoving();
                //    }));
                break;

            case rtsHitType.Cover:
                break;

            case rtsHitType.Walkable:
                AllyInCommand.allyEventHandler.CallEventCommandMove(hitType, hit);
                //if (AllyInCommand.allyEventHandler.bIsFreeMoving == false)
                //{
                //    AllyInCommand.allyEventHandler.CallEventCommandMove(hitType, hit);
                //    //Adding Command Move Event Call To ActionItem Queue
                //    //AllyInCommand.allyEventHandler.CallOnAddActionItemToQueue(new RTSActionItem(
                //    //    _ally => _ally.allyEventHandler.CallEventCommandMove(hitType, hit),
                //    //    _ally => true, ActionFilters.Movement, true, false, false, false,
                //    //    _ally => true, _ally => _ally.bIsFreeMoving || _ally.bIsNavMoving == false,
                //    //    _ally => _ally.allyEventHandler.CallEventFinishedMoving()
                //    //    ));
                //}
                break;

            case rtsHitType.Unwalkable:
                break;

            case rtsHitType.Unknown:
                break;

            default:
                break;
            }
        }
 void OnUpdateHandler()
 {
     //Makes Sure Code is Valid Before Running
     if (TimeToReturn())
     {
         return;
     }
     ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if (Physics.Raycast(ray, out rayHit, maxRaycastDepth, sightNoCurrentPlayerLayer))
     {
         gObject     = rayHit.collider.gameObject;
         gObjectRoot = rayHit.collider.gameObject.transform.root.gameObject;
         rayHitType  = GetHitType();
         if (((/*isAllyMemberType*/ rayHitType == rtsHitType.Ally || rayHitType == rtsHitType.Enemy) &&
              /*type==TypeLastFrame*/ rayHitType == rayHitTypeLastFrame &&
              /*rootObject!=rootObjectLastFrame*/ gObjectRoot != gObjectRootLastFrame) ||
             rayHitType != rayHitTypeLastFrame)
         {
             //If [1]([2](
             //[3](Type Is Either Friend or Enemy AllyMember)[/3]
             //And Type is Equal To Type Last Frame
             //And Root Object is NOT Equal To Last Frame Root Object)[/2]
             //OR Type is NOT Equal To Type Last Frame)[/1]
             //Layer has Changed
             gamemaster.CallEventOnMouseCursorChange(rayHitType, rayHit);
         }
         gObjectLastFrame     = gObject;
         gObjectRootLastFrame = gObjectRoot;
         rayHitTypeLastFrame  = rayHitType;
     }
     else
     {
         if (gObjectLastFrame != null)
         {
             gamemaster.CallEventOnMouseCursorChange(rtsHitType.Unknown, rayHit);
         }
         gObjectLastFrame     = null;
         gObjectRootLastFrame = null;
         rayHitTypeLastFrame  = rtsHitType.Unknown;
     }
 }
        void OnLayerChanged(rtsHitType hitType, RaycastHit hit)
        {
            //TODO: RTSPrototype Set Cursor To Null Whenever UI is in use
            //[Doesn't Work]Temporary Fix Whenever OnLayerChange is called
            //and Ui is being used
            //if (uimaster.isUiAlreadyInUse)
            //{
            //    Cursor.SetCursor(null, cursorHotspot, CursorMode.Auto);
            //    return;
            //}
            switch (hitType)
            {
            case rtsHitType.Ally:
                Cursor.SetCursor(walkCursor, cursorHotspot, CursorMode.Auto);
                break;

            case rtsHitType.Enemy:
                Cursor.SetCursor(targetCursor, cursorHotspot, CursorMode.Auto);
                break;

            case rtsHitType.Cover:
                break;

            case rtsHitType.Walkable:
                Cursor.SetCursor(walkCursor, cursorHotspot, CursorMode.Auto);
                break;

            case rtsHitType.Unwalkable:
                Cursor.SetCursor(null, cursorHotspot, CursorMode.Auto);
                break;

            case rtsHitType.Unknown:
                Cursor.SetCursor(unknownCursor, cursorHotspot, CursorMode.Auto);
                break;

            default:
                Cursor.SetCursor(unknownCursor, cursorHotspot, CursorMode.Auto);
                break;
            }
        }
Пример #5
0
 // Update is called once per frame
 void Update()
 {
     //Makes Sure Code is Valid Before Running
     if (TimeToReturn())
     {
         return;
     }
     ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     if (Physics.Raycast(ray, out rayHit, maxRaycastDepth, sightNoCurrentPlayerLayer))
     {
         gObject     = rayHit.collider.gameObject;
         gObjectRoot = rayHit.collider.gameObject.transform.root.gameObject;
         rayHitType  = GetHitType();
         //if (rayHitType != rayHitTypeLastFrame ||
         //    MyCursorChangeTimer.IsTimerFinished())
         if (rayHitType != rayHitTypeLastFrame)
         {
             //Timer created issues, retracted for now
             //Update Cursor Change Every So Often To Resolve Cursor Bugs
             //MyCursorChangeTimer.StartTimer();
             //Layer has Changed
             gamemaster.CallEventOnMouseCursorChange(rayHitType, rayHit);
         }
         gObjectLastFrame    = gObject;
         rayHitTypeLastFrame = rayHitType;
     }
     else
     {
         if (gObjectLastFrame != null)
         {
             gamemaster.CallEventOnMouseCursorChange(rtsHitType.Unknown, rayHit);
         }
         gObjectLastFrame    = null;
         rayHitTypeLastFrame = rtsHitType.Unknown;
     }
 }
 public virtual void CallEventOnHoverLeave(rtsHitType hitType, RaycastHit hit)
 {
     CallEventOnHoverLeave();
 }
Пример #7
0
        private void CallEventOnRightClickSendHit(rtsHitType hitType, RaycastHit hit)
        {
            bool isNull = hit.collider == null || hit.collider.gameObject == null ||
                          hit.collider.gameObject.transform.root.gameObject == null;

            if (isNull)
            {
                hitType = rtsHitType.Unknown;
            }
            if (OnRightClickSendHit != null)
            {
                OnRightClickSendHit(hitType, hit);
            }
            GameObject hitObjectRoot = null;

            if (hitType != rtsHitType.Unknown)
            {
                hitObjectRoot = hit.collider.gameObject.transform.root.gameObject;
            }

            switch (hitType)
            {
            case rtsHitType.Ally:
                AllyMember _ally = hitObjectRoot.GetComponent <AllyMember>();
                if (_ally == null)
                {
                    return;
                }
                if (OnRightClickAlly != null)
                {
                    OnRightClickAlly(_ally);
                }
                break;

            case rtsHitType.Enemy:
                AllyMember _enemy = hitObjectRoot.GetComponent <AllyMember>();
                if (_enemy == null)
                {
                    return;
                }
                if (OnRightClickEnemy != null)
                {
                    OnRightClickEnemy(_enemy);
                }
                break;

            case rtsHitType.Cover:
                break;

            case rtsHitType.Walkable:
                break;

            case rtsHitType.Unwalkable:
                break;

            case rtsHitType.Unknown:
                break;

            default:
                break;
            }
        }
Пример #8
0
        public void CallEventOnMouseCursorChange(rtsHitType hitType, RaycastHit hit)
        {
            bool isNull = hit.collider == null || hit.collider.gameObject == null ||
                          hit.collider.gameObject.transform.root.gameObject == null;

            if (isNull)
            {
                hitType = rtsHitType.Unknown;
            }
            if (OnMouseCursorChange != null)
            {
                OnMouseCursorChange(hitType, hit);
            }

            bool _notAlly = hitType != rtsHitType.Ally && hitType != rtsHitType.Enemy;

            if (gamemode.hasPrevHighAlly && _notAlly)
            {
                gamemode.hasPrevHighAlly = false;
                //TODO: RTSPrototype See if OnMouseCursor Change Should Return if PrevHighAlly is Null
                if (gamemode.prevHighAlly == null)
                {
                    return;
                }
                //if (OnHoverLeaveAlly != null) OnHoverLeaveAlly(gamemode.prevHighAlly);
                gamemode.prevHighAlly.allyEventHandler.CallEventOnHoverLeave(hitType, hit);
            }

            GameObject hitObjectRoot = null;

            if (hitType != rtsHitType.Unknown)
            {
                hitObjectRoot = hit.collider.gameObject.transform.root.gameObject;
            }

            switch (hitType)
            {
            case rtsHitType.Ally:
                AllyMember _ally = hitObjectRoot.GetComponent <AllyMember>();
                if (_ally == null)
                {
                    return;
                }
                gamemode.hasPrevHighAlly = true;
                //if (OnHoverOverAlly != null) OnHoverOverAlly(_ally);
                _ally.allyEventHandler.CallEventOnHoverOver(hitType, hit);
                gamemode.prevHighAlly = _ally;
                break;

            case rtsHitType.Enemy:
                AllyMember _enemy = hitObjectRoot.GetComponent <AllyMember>();
                if (_enemy == null)
                {
                    return;
                }
                gamemode.hasPrevHighAlly = true;
                //if (OnHoverOverAlly != null) OnHoverOverAlly(_enemy);
                _enemy.allyEventHandler.CallEventOnHoverOver(hitType, hit);
                gamemode.prevHighAlly = _enemy;
                break;

            case rtsHitType.Cover:
                break;

            case rtsHitType.Walkable:
                break;

            case rtsHitType.Unwalkable:
                break;

            case rtsHitType.Unknown:
                break;

            default:
                break;
            }
        }
Пример #9
0
        public void CallEventOnMouseCursorChange(rtsHitType hitType, RaycastHit hit)
        {
            bool isNull = hit.collider == null || hit.collider.gameObject == null ||
                          hit.collider.gameObject.transform.root.gameObject == null;

            if (isNull)
            {
                hitType = rtsHitType.Unknown;
            }
            if (OnMouseCursorChange != null)
            {
                OnMouseCursorChange(hitType, hit);
            }

            hitObjectRoot = null;
            if (hitType != rtsHitType.Unknown)
            {
                hitObjectRoot = hit.collider.gameObject.transform.root.gameObject;
            }

            cachedAllyCompThisChange =
                /*isAllyMemberType*/ hitType == rtsHitType.Ally || hitType == rtsHitType.Enemy ?
                hitObjectRoot.GetComponent <AllyMember>() : null;

            //HasPrevAlly and (NotAlly or (isAllyMemberType and allyComp!=prevAllyComp))
            if (gamemode.hasPrevHighAlly &&
                ((/*notAlly*/ hitType != rtsHitType.Ally && hitType != rtsHitType.Enemy) ||
                 ((/*isAllyMemberType*/ hitType == rtsHitType.Ally || hitType == rtsHitType.Enemy) &&
                  /*allyComp!=prevAllyComp*/ cachedAllyCompThisChange != gamemode.prevHighAlly)))
            {
                gamemode.hasPrevHighAlly = false;
                if (gamemode.prevHighAlly != null)
                {
                    gamemode.prevHighAlly.allyEventHandler.CallEventOnHoverLeave(hitType, hit);
                    //Clear Reference After Calling Event
                    gamemode.prevHighAlly = null;
                }
                else
                {
                    Debug.Log($"OnMouseChange: PrevHighAlly Was NULL. HitType: {hitType.ToString()}. Not Calling On Hover Leave.");
                }
            }

            switch (hitType)
            {
            case rtsHitType.Ally:
                AllyMember _ally = cachedAllyCompThisChange;
                if (_ally == null)
                {
                    return;
                }
                gamemode.hasPrevHighAlly = true;
                //if (OnHoverOverAlly != null) OnHoverOverAlly(_ally);
                _ally.allyEventHandler.CallEventOnHoverOver(hitType, hit);
                gamemode.prevHighAlly = _ally;
                break;

            case rtsHitType.Enemy:
                AllyMember _enemy = cachedAllyCompThisChange;
                if (_enemy == null)
                {
                    return;
                }
                gamemode.hasPrevHighAlly = true;
                //if (OnHoverOverAlly != null) OnHoverOverAlly(_enemy);
                _enemy.allyEventHandler.CallEventOnHoverOver(hitType, hit);
                gamemode.prevHighAlly = _enemy;
                break;

            case rtsHitType.Cover:
                break;

            case rtsHitType.Walkable:
                break;

            case rtsHitType.Unwalkable:
                break;

            case rtsHitType.Unknown:
                break;

            default:
                break;
            }
        }