public AdmiralAckbot() { state = BotStates.Searching; ourBoard = new GameBoard(); enemyBoard = new EnemyBoard(); rng = new Random(); }
private async Task <string> Run() { botState = BotStates.Running; string innerMessage = string.Empty; //disable usage gui when start task EnableGUI(false); //define cancel token cancelTokenSource = new CancellationTokenSource(); var ctk = cancelTokenSource.Token; //temp gui thread var prevThr = TaskScheduler.FromCurrentSynchronizationContext(); Action mainAction = new Action(() => { while (true) { //pause thread... lock (pauseObj) { } //Doing something.. string callbackMessage = DoWork(ctk); //update gui thread Task.Factory.StartNew(() => { UpdateGUI(callbackMessage, ctk); }, CancellationToken.None, TaskCreationOptions.AttachedToParent, prevThr); } }); //run main task with cancel token try { await Task.Factory.StartNew(mainAction, ctk).ContinueWith((ac) => { EnableGUI(true); innerMessage = "Done."; cancelTokenSource.Dispose(); botState = BotStates.Stopped; }, ctk, TaskContinuationOptions.None, prevThr); } catch (TaskCanceledException cexp) { //cancel innerMessage = "Stopped."; } catch (Exception exp) { //any exceptions innerMessage = "Error: '" + exp.Message + "'"; } finally { cancelTokenSource.Dispose(); cancelTokenSource = null; EnableGUI(true); botState = BotStates.Stopped; dataSource.PauseButtonText = "Pause"; } return(innerMessage); }
public async Task Shutdown(CommandContext ctx) { await ctx.RespondAsync($"Shutting Down..."); await BotStates.SetShutDown(); Bot.INSTANCE.Client.Dispose(); System.Environment.Exit(1); }
private void Animation(BotStates animatonState, bool value, float speed = 1.0f) { if (animator == null) { Debug.LogError("BotAnimation Animation: animator not set!"); return; } animator.SetBool(ExtensionMethods.ToStringEnums(animatonState), value); animator.SetFloat("speed", speed); }
// Start is called before the first frame update void Start() { timer = roamTimer; currState = BotStates.Roam; agent = this.GetComponent <NavMeshAgent>(); mazeGen = GameObject.FindObjectOfType <Maze>(); botPosHolder = GetComponent <BotTargetPosHolderScript>(); Vector3 newPos = mazeGen.GetRandomPosOnMaze(); agent.SetDestination(newPos); currTargetPos = newPos; }
private IGridSquare AttackShip() { if (previousShipAttacked.IsNotDestroyed()) { return(previousShipAttacked.GetNextTarget()); } else { state = BotStates.Searching; enemyBoard.RemoveEnemyShip(previousShipAttacked.GetSizeOfDestroyedShip()); Console.WriteLine(previousShipAttacked.GetSizeOfDestroyedShip()); return(PickRandomTarget()); } }
public void HandleShotResult(IGridSquare square, bool wasHit) { if (state == BotStates.Searching && wasHit) { state = BotStates.Attacking; previousShipAttacked = new EnemyShip(square, enemyBoard); Console.WriteLine("FOUND A SHIP"); } else if (state == BotStates.Attacking) { previousShipAttacked.UpdateBasedOnShotResult(square, wasHit); } enemyBoard.UpdateBoard(square, wasHit); }
private void pauseOrResume_Click(object sender, RoutedEventArgs e) { if (botState == BotStates.Pausing) { //resume Monitor.Exit(pauseObj); botState = BotStates.Running; dataSource.PauseButtonText = "Pause"; } else { //pause Monitor.Enter(pauseObj); botState = BotStates.Pausing; dataSource.PauseButtonText = "Resume"; } }
// Start is called before the first frame update void Start() { roamTimer = Random.Range(5f, 15f); transform.GetChild(4).GetComponent <AudioSource>().Play(); alertAudioSource = transform.GetChild(3).GetComponent <AudioSource>(); inSoundPlayCoroutine = false; walkingAudioSource = transform.GetChild(2).GetComponent <AudioSource>(); currState = BotStates.Roam; agent = this.GetComponent <NavMeshAgent>(); mazeGen = GameObject.FindObjectOfType <Maze>(); botPosHolder = GetComponent <BotTargetPosHolderScript>(); Vector3 newPos = mazeGen.GetRandomPosOnMaze(); agent.SetDestination(newPos); currTargetPos = newPos; playAlertSoundOnce = false; }
// Update is called once per frame private void Update() { print(passes + "- " + agent.remainingDistance); switch (currState) { case BotStates.Roam: { if (passes > 0) { if (Vector3.Distance(transform.position, agent.destination) <= 0.1) { Vector3 newPos = mazeGen.GetRandomPosOnMaze(); agent.SetDestination(newPos); currTargetPos = newPos; print("Pos changed at time 1-" + "- " + newPos); passes--; } RaycastHit hitF, hitB, hitL, hitR; if (Physics.Raycast(transform.position, transform.forward, out hitF, 5f)) { if (hitF.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitF.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 1"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.forward, out hitB, 5f)) { if (hitB.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitB.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 2"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, transform.right, out hitR, 5f)) { if (hitR.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitR.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 3"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.right, out hitL, 5f)) { if (hitL.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitL.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 4"); currState = BotStates.Alert; } } } else { if (Vector3.Distance(transform.position, agent.destination) <= 0.1) { Vector3 newPos = GameObject.FindObjectOfType <PlayerMovement>().transform.position; agent.SetDestination(newPos); currTargetPos = newPos; print("Pos changed at time 2-" + "- " + newPos); passes = 1; } RaycastHit hitF, hitB, hitL, hitR; if (Physics.Raycast(transform.position, transform.forward, out hitF, 5f)) { if (hitF.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitF.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 1"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.forward, out hitB, 5f)) { if (hitB.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitB.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 2"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, transform.right, out hitR, 5f)) { if (hitR.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitR.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 3"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.right, out hitL, 5f)) { if (hitL.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitL.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 4"); currState = BotStates.Alert; } } } break; } case BotStates.Alert: { //transform.LookAt(target.transform); RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, 5f)) { if (hit.transform.gameObject.GetComponent <PlayerMovement>()) { transform.LookAt(target.transform); agent.SetDestination(target.transform.position); lastKnownPos = target.transform.position; } else { passes = 0; currState = BotStates.Roam; } } else { Debug.DrawLine(transform.position, transform.forward * 10f, Color.red); } break; } } }
/// <summary> /// Initializes a new instance of the <see cref="BotStateSet"/> class. /// </summary> /// <param name="botStates">initial list of BotState to manage.</param> public BotStateSet(params BotState[] botStates) { BotStates.AddRange(botStates); }
public virtual void StartAnimation(BotStates animatonState, float speed = 1.0f) { Animation(animatonState, true, speed); }
public override void StartAnimation(BotStates animatonState, float speed = 1) { base.StartAnimation(animatonState, speed); }
public void setState(BotStates botState) { this.botState = botState; }
public virtual void StopAnimation(BotStates animatonState) { Animation(animatonState, false); }
// Update is called once per frame private void Update() { switch (currState) { case BotStates.Roam: { if (!walkingAudioSource.isPlaying) { PlayBotWalkingSound(); } if (passes > 0) { if (Vector3.Distance(transform.position, agent.destination) <= 0.1) { Vector3 newPos = mazeGen.GetRandomPosOnMaze(); agent.SetDestination(newPos); currTargetPos = newPos; passes--; } RaycastHit hitF, hitB, hitL, hitR; if (Physics.Raycast(transform.position, transform.forward, out hitF, 5f)) { if (hitF.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitF.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 1"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.forward, out hitB, 5f)) { if (hitB.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitB.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 2"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, transform.right, out hitR, 5f)) { if (hitR.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitR.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 3"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.right, out hitL, 5f)) { if (hitL.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitL.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 4"); currState = BotStates.Alert; } } } else { if (Vector3.Distance(transform.position, agent.destination) <= 0.1 || Time.time - timer <= roamTimer) { timer = Time.time; Vector3 newPos = GameObject.FindObjectOfType <PlayerMovement>().transform.position; agent.SetDestination(newPos); currTargetPos = newPos; passes = 1; } RaycastHit hitF, hitB, hitL, hitR; if (Physics.Raycast(transform.position, transform.forward, out hitF, 5f)) { if (hitF.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitF.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 1"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.forward, out hitB, 5f)) { if (hitB.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitB.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 2"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, transform.right, out hitR, 5f)) { if (hitR.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitR.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 3"); currState = BotStates.Alert; } } if (Physics.Raycast(transform.position, -transform.right, out hitL, 5f)) { if (hitL.transform.gameObject.GetComponent <PlayerMovement>()) { target = hitL.transform.gameObject; agent.SetDestination(target.transform.position); transform.LookAt(target.transform); Debug.Log("LOoking at player 4"); currState = BotStates.Alert; } } } break; } case BotStates.Alert: { if (!playAlertSoundOnce) { PlayBotAlertSound(); playAlertSoundOnce = true; } //transform.LookAt(target.transform); RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, 5f)) { if (hit.transform.gameObject.GetComponent <PlayerMovement>()) { transform.LookAt(target.transform); agent.SetDestination(target.transform.position); lastKnownPos = target.transform.position; } else { passes = 0; playAlertSoundOnce = false; currState = BotStates.Roam; } } else { Debug.DrawLine(transform.position, transform.forward * 10f, Color.red); } break; } } }
public override void StopAnimation(BotStates animatonState) { base.StopAnimation(animatonState); }