/// <summary> /// /// </summary> /// <param name="breaker"></param> private void PowerStatusReaction(Breaker breaker) { //Requesting a new soldier from the barracks Soldier soldier = barracks.RequestSoldier(null); if (soldier != null) { if (listOfBrokenBreaker.Count == 0) { listOfBrokenBreaker.Add(breaker); } else { foreach (Breaker breakers in listOfBrokenBreaker) { if (breakers != breaker) { listOfBrokenBreaker.Add(breaker); } } } // Get the position of the collider: Vector3 colliderPos = breaker.GetComponent <BoxCollider>().transform.position + -breaker.transform.forward * 1; Debug.Log(colliderPos); soldier.Instructions.Push(new SearchRoom(breaker.GetComponentInParent <Room>(), searchTimer, navigationTimer, soldier)); soldier.Instructions.Push(new Interact(breaker, soldier)); soldier.CurrentInstruction = new Goto(colliderPos, 0, soldier); soldier.SpookLevel = Soldier.ReportState.Investigating; } else { Debug.Log("No soldier was available for a PowerStatusReaction"); } }
override public void ExtractInstructions(Entity entity) { instructions = new List <Instruction>(); foreach (GameObject obj in routine) { // For each breaker to repair, add a goto, an interact, and a searchroom: Breaker breakerObj = obj.GetComponent <Breaker>(); // Get the position of the collider: Vector3 colliderPos = breakerObj.GetComponent <Collider>().transform.position; instructions.Add(new Goto(colliderPos, 0, entity)); instructions.Add(new Interact(breakerObj, entity)); instructions.Add(new SearchRoom(breakerObj.GetComponentInParent <Room>(), searchTimer, navigationTimer, entity)); } }