private void Start() { p = player.GetComponent <player_controller>(); m = monster.GetComponent <monster_controller>(); ws = new world_state(); StartCoroutine(UpdateSensors()); }
//tests a=the world_observer world state against the local saved world state. Acts as an interrupt checked by the HTNplanner private void WorldStateHasChanged(world_state w0, world_state wf) { if (w0.player_alive == wf.player_alive && w0.player_in_range == wf.player_in_range) { wsChange = false; } else { wsChange = true; taskDone = true; } }
//evals compound tasks preconditions against the world state. private bool EvalCompoundPreConditions(string taskName) { ws = s.ws; switch (taskName) { case "wander": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "attack": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } case "navSpeed": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "findObjectToThrow": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } case "throw": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } case "superThrow": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } default: return(false); } }
//evals primitive tasks preconditions against the world state. private bool EvalPrimitivePreConditions(string taskName) { ws = s.ws; switch (taskName) { case "setNavDest": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "growl": if (ws.player_alive == true) { return(true); } else { return(false); } case "idle": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "walk": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "run": if (ws.player_alive == true && ws.player_in_range == false) { return(true); } else { return(false); } case "getAngry": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } case "findObj": if (ws.player_alive == true && ws.player_in_range == true) { return(true); } else { return(false); } case "navToObj": if (ws.player_alive == true) { return(true); } else { return(false); } case "pickUp": if (ws.player_alive == true) { return(true); } else { return(false); } case "recover": if (ws.player_alive == true) { return(true); } else { return(false); } case "objectThrow": if (ws.player_alive == true) { return(true); } else { return(false); } default: return(false); } }