public virtual void CallEventCommandMove(rtsHitType hitType, RaycastHit hit) { bIsAimingToShoot = bIsCommandAttacking = bIsAiAttacking = false; bIsCommandMoving = true; bIsAIMoving = false; CallEventCommandMove(hit.point); }
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; } }
// 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(); }
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; } }
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; } }
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; } }