internal void Start() { base.Init(); state = EBehaviourState.Idle; currentLevel = ((FPSGameMode)JEngine.Instance.gameManager.GetCurrentGameMode).level; currentLevel.RegisterEnemy(this); }
internal void Start() { base.Init (); state = EBehaviourState.Idle; currentLevel = ((FPSGameMode)JEngine.Instance.gameManager.GetCurrentGameMode).level; currentLevel.RegisterEnemy (this); }
private void updatePointBehaviour(float deltaTime) { if (state == EBehaviourState.FAILED || isEnabled == false) { return; } else if (state == EBehaviourState.OK) { pointTimer += deltaTime; while (pointTimer >= secondsPerChange) { pointTimer -= secondsPerChange; removeItemFromStack(); } } else if (state == EBehaviourState.FAILING) { pointTimer += Time.deltaTime; if (pointTimer >= definition.baseFailStateTimeout) { state = EBehaviourState.FAILED; animator.SetInteger("state", 2); onStateChange.Invoke(); SetEnabled(false); } } }
private void OnPointStateChange() { if (roomState == EBehaviourState.FAILED || isEnabled == false) { return; } int failCount = 0; bool failing = false; for (int i = 0; i < trackedPoints.Count; i++) { EBehaviourState pointState = trackedPoints[i].GetBehaviourState(); if (pointState == EBehaviourState.FAILING) { failing = true; } else if (pointState == EBehaviourState.FAILED) { failCount++; } } if (failCount == trackedPoints.Count) { // All points in room failed, kill room roomFailingSoundBehaviour.StopSound(); roomState = EBehaviourState.FAILED; roomFailingSpriteBehaviour.DisablePingPong(); roomFailingSpriteBehaviour.SetTargetAlpha(1); onStateChange.Invoke(); } else if (roomState == EBehaviourState.OK && failing) { // Room became failing roomFailingSoundBehaviour.PlaySound(); roomState = EBehaviourState.FAILING; roomFailingSpriteBehaviour.EnablePingPong(); onStateChange.Invoke(); } else if (roomState == EBehaviourState.FAILING && !failing) { // Room was failing and is OK now roomFailingSoundBehaviour.StopSound(); roomState = EBehaviourState.OK; roomFailingSpriteBehaviour.DisablePingPong(); roomFailingSpriteBehaviour.SetTargetAlpha(0); onStateChange.Invoke(); } }
private ItemBehaviour removeItemFromStack() { ItemBehaviour item = itemStack.Pop(); if (state == EBehaviourState.FAILING && itemStack.Count < definition.maxStackItemCount) { state = EBehaviourState.OK; pointTimer = 0; animator.SetInteger("state", 0); onStateChange.Invoke(); } return(item); }
private void pushItemToStack(ItemBehaviour item) { item.SetSpriteLayer(Settings.Constant.itemSortingLayer); item.SetSpriteLayerOrder(itemStack.Count + 1); item.transform.SetParent(stackPositionRoot); item.transform.localPosition = item.ItemDefinition.GenerateItemStackPosition(itemStack.Count, true); item.transform.localRotation = item.ItemDefinition.GenerateItemStackRotation(true); itemStack.Push(item); if (state == EBehaviourState.FAILING) { state = EBehaviourState.OK; animator.SetInteger("state", 0); pointTimer = 0; onStateChange.Invoke(); } if (progressBarBehaviour) { progressBarBehaviour.SetTicks(itemStack.Count); } }
private void pushItemToStack() { ItemBehaviour item; itemPool.SpawnFromPool(out item, definition.accumulatingItem.itemName); item.SetSpriteLayer(Settings.Constant.itemSortingLayer); item.SetSpriteLayerOrder(itemStack.Count + 1); item.transform.SetParent(stackPositionRoot); item.transform.localPosition = item.ItemDefinition.GenerateItemStackPosition(itemStack.Count, true); item.transform.localRotation = item.ItemDefinition.GenerateItemStackRotation(true); itemStack.Push(item); if (state == EBehaviourState.OK && itemStack.Count >= definition.maxStackItemCount) { state = EBehaviourState.FAILING; pointTimer = 0; animator.SetInteger("state", 1); onStateChange.Invoke(); } }
private void removeItemFromStack(bool invokeMessage = true) { int stackCount = itemStack.Count; if (stackCount > 0) { itemPool.ReturnToPool(itemStack.Pop()); } if ((stackCount - 1) <= 0 && state != EBehaviourState.FAILING) { state = EBehaviourState.FAILING; animator.SetInteger("state", 1); pointTimer = 0; onStateChange.Invoke(); } if (progressBarBehaviour) { progressBarBehaviour.SetTicks(itemStack.Count); } }
internal void ManageIdle() { Collider[] results = new Collider[0]; results = Physics.OverlapSphere(sightPosition.position, distanceOfView, LayerMask.GetMask("Character")); foreach (Collider obj in results) { //Check if Player if (obj.tag == "Player") { //Check if in Sight float angle = Vector3.Angle(sightPosition.forward, obj.transform.position - transform.position); if (Mathf.Abs(angle) <= angleOfView / 2f) { if (!Physics.Linecast(sightPosition.position, obj.ClosestPointOnBounds(sightPosition.position))) { //Alerted ! state = EBehaviourState.Alerted; target = obj.transform; } } } } }
internal void ManageIdle() { Collider[] results = new Collider[0]; results = Physics.OverlapSphere(sightPosition.position, distanceOfView, LayerMask.GetMask("Character")); foreach(Collider obj in results) { //Check if Player if(obj.tag == "Player") { //Check if in Sight float angle = Vector3.Angle(sightPosition.forward, obj.transform.position - transform.position); if(Mathf.Abs(angle) <= angleOfView/2f) { if(!Physics.Linecast(sightPosition.position, obj.ClosestPointOnBounds(sightPosition.position))) { //Alerted ! state = EBehaviourState.Alerted; target = obj.transform; } } } } }
private void OnRoomStateChange() { int failCount = 0; for (int i = 0; i < roomBehaviours.Count; i++) { if (roomBehaviours[i].GetBehaviourState() == EBehaviourState.FAILED) { failCount++; } } scoreBehaviour.SetRoomScoreModifier(roomBehaviours.Count - failCount); if (failCount == roomBehaviours.Count) { // All rooms failed levelState = EBehaviourState.FAILED; inGameAudioBehaviour.StopSound(); gameOverBehaviour.SetGameOver(playerBehaviour); scoreBehaviour.StoreScore(levelName); playerBehaviour.SetGameOver(); onStateChange.Invoke(); } }