public bool bagFull(FSMControler controler) { int nbTotal = 0; int nbTotalPossible = 0; Citizen citizen = controler.GetComponent <Citizen>(); if (citizen.ressourcesToTransport.ressourcesList.Count == 0) { return(false); } foreach (RessourceTank rT in citizen.ressourcesToTransport.ressourcesList) { nbTotal += rT.number; nbTotalPossible += rT.numberLimit; } //if(nbTotal >= citizen.citizenSetting.inventorySize) if (nbTotal >= nbTotalPossible) { //controler.target = controler.finalTarget; return(true); } else { return(false); } }
public void give(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); Building target = controler.finalTarget.GetComponent <Building>(); foreach (RessourceTank rT in citizen.ressourcesToTransport.getRessourcesNeededTransport()) { if (target.needRessources) { target.take(rT.ressource, citizen); } else { break; } } foreach (Tool t in citizen.toolsToTransport.getToolsNeededTransport()) { if (target.needTools) { target.takeTool(t, citizen); } else { break; } } }
private bool ResourcesNotGathered(FSMControler controler) { Building target = controler.finalTarget.GetComponent <Building>(); Citizen citizen = controler.GetComponent <Citizen>(); foreach (RessourceTank rT in citizen.ressourcesToTransport.getRessourcesNeededTransport()) { //s'il en reste renvoie true if (rT.number < rT.numberToTransport && target.needRessources) { return(true); } } foreach (Tool tool in citizen.toolsToTransport.getToolsNeededTransport()) { //s'il en reste renvoie true if (tool.number < 1 && target.needTools) { return(true); } } return(false); }
public void DoActions(FSMControler controler) { foreach (FSMAction action in actions) { action.Act(controler); } }
public bool IsBetterCamp(FSMControler controler) { Building[] buildings = FindObjectsOfType <Building>(); Building target = controler.target.GetComponent <Building>(); Citizen citizen = controler.GetComponent <Citizen>(); foreach (RessourceTank rt in controler.GetComponent <RessourceInventory>().ressourcesList) { foreach (Building building in buildings) { if (building.tag == "Camp" && building.isPlaced && building.isConstruct) { foreach (RessourceTank rT in building.GetComponent <RessourceInventory>().ressourcesList) { if (rT.number >= rt.numberToTransport) { controler.target = building.gameObject; return(true); } } } } } return(false); }
public bool HaveEnoughResources(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); if (!controler.target) { return(false); } //Camp building = controler.target.gameObject.GetComponent<Camp>(); //if (!building) return false; // L'outil à construire Tool tool = controler.target.GetComponent <ToolInventory>().activeTool; // La ressource qu'il faut pour le construire Ressource ressource = tool.ressourceNeeded; // Le nombre de cette ressource qu'il faut int nbrRessource = tool.numberRessourcesNeeded; // Le nombre de la ressource contenu dans le batiment int stockRessource = controler.target.GetComponent <RessourceInventory>().nbElementsTotal(ressource); return(stockRessource >= nbrRessource); }
private void WalkTowardsRessource(FSMControler controler) { if (controler.target) { controler.agent.SetDestination(controler.target.transform.position); } }
private void FindRessource(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); if (citizen.ressourcesToTransport.ressourcesList.Count != 0) { citizen.ressourcesToTransport.ressourcesList[0].neededToTransport = true; citizen.ressourcesToTransport.ressourcesList[0].numberLimit = 5; } citizen.refreshSoundBools(); GameObject ressourceTank = GameObject.FindGameObjectWithTag("RessourceTank"); if (controler.manualTarget == null) { if (ressourceTank) { controler.target = ressourceTank; } else { ressourceTank = GameObject.FindGameObjectWithTag("Camp"); controler.target = ressourceTank; } } else { controler.target = controler.manualTarget; } }
private void FindRessource(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); GameObject[] shelterList = GameObject.FindGameObjectsWithTag("Camp"); controler.target = null; if (shelterList.Length > 0) { foreach (GameObject gO in shelterList) { if (gO.GetComponent <Building>().isConstruct) { Building building = gO.GetComponent <Building>(); /* * foreach (RessourceTank rT in controler.GetComponent<Citizen>().ressourcesToTransport.ressourcesList) * { * if (building.inventory.nbElementsTotal(rT.ressource) > 0) * { * * controler.target = gO; */ foreach (Tool t in controler.GetComponent <Citizen>().toolsToTransport.toolInventory) { if (building.toolsInventory.nbElementsTotal(t) > 0) { controler.target = gO; return; } } } } //} //} foreach (GameObject gO in shelterList) { if (gO.GetComponent <Building>().isConstruct) { Building building = gO.GetComponent <Building>(); foreach (RessourceTank rT in controler.GetComponent <Citizen>().ressourcesToTransport.ressourcesList) { if (building.inventory.nbElementsTotal(rT.ressource) > 0) { controler.target = gO; return; } } } } } controler.target = null; }
public bool HaveTarget(FSMControler controler) { if (!controler.finalTarget) { return(false); } return(controler.finalTarget.gameObject.GetComponent <Building>()); }
public bool TargetBuilt(FSMControler controler) { if (!controler.target) { return(false); } return(controler.target.GetComponent <Building>().isConstruct); }
public bool HaveTarget(FSMControler controler) { if (!controler.target) { return(false); } return(controler.target.gameObject.tag == "Camp"); }
public bool HaveTarget(FSMControler controler) { if (controler.target == null) { controler.citizen.GetComponent <MeshRenderer>().enabled = true; } return(controler.target == null); }
private void FindRessource(FSMControler controler) { GameObject ressourceTank = GameObject.FindGameObjectWithTag("RessourceTank"); if (ressourceTank) { controler.target = ressourceTank; } }
private void Craft(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); citizen.isProductTool = true; if (!controler.target) { return; } Building building = controler.target.GetComponent <Building>(); if (!building) { return; } Tool tool = building.GetComponent <ToolInventory>().activeTool; // TEMPORAIRE. Récupération du 1er outil dispo dans la liste //Tool tool = building.toolsStock.Keys.; // Regarde le niveau de compétence du villageois if (!controler.citizen.competences.ContainsKey(building.nameCompetence)) { controler.citizen.competences[building.nameCompetence] = 1; } /* * //Niveau du citoyen * int level = controler.citizen.competences[building.nameCompetence]; * //Frequence de construction du citoyen * float citizenFrequence = building.timeToBuild * bonusLevel(level); * //si le temps passé à construire est */ /*if (!building.GetComponent<ToolInventory>().isCrafted()) * { * building.GetComponent<ToolInventory>().isGettingCrafted(); * } * * else * { * building.GetComponent<ToolInventory>().addTool(); * building.GetComponent<ToolInventory>().add(tool); * for (int i = 0; i < tool.numberRessourcesNeeded; i++) * { * building.GetComponent<RessourceInventory>().remove(tool.ressourceNeeded); * } * * }*/ if (!controler.citizen.isCraftingTool && building.inventory.nbElementsTotal(tool.ressourceNeeded) >= tool.numberRessourcesNeeded) { controler.citizen.product(tool, building); } }
private void FindShelter(FSMControler controler) { GameObject shelter = GameObject.FindGameObjectWithTag("Batiment"); if (shelter) { controler.target = shelter; } }
public override void Act(FSMControler controler) { if (!controler.target || !controler.target.CompareTag("Batiment")) { FindShelter(controler); } WalkTowardsTarget(controler); }
public bool HaveTarget(FSMControler controler) { if (controler.target != null) { return(controler.target.gameObject.tag == "RessourceTank"); } return(false); }
public override void Act(FSMControler controler) { if (!controler.target || !controler.target.CompareTag("RessourceTank")) { FindRessource(controler); } WalkTowardsRessource(controler); }
private void Stop(FSMControler controler) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.isWalking = false; citizen.GetComponent <FSMControler>().manualTarget = null; citizen.GetComponent <FSMControler>().finalTarget = null; controler.agent.isStopped = true; }
public void TakeDecision(FSMControler controler) { foreach (FSMTransition transition in transitions) { if (transition.Check(controler)) { controler.ChangeState(transition.nextState); } } }
private void WalkTowardsTarget(FSMControler controler) { if (controler.target) { Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); citizen.isWalking = true; controler.agent.SetDestination(controler.target.transform.position); } }
public void FindBuildingToDeliver(FSMControler controler) { Building[] buildings = FindObjectsOfType <Building>(); Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); if (controler.manualTarget != null) { controler.finalTarget = controler.manualTarget; return; } foreach (Building building in buildings) { if (building.needRessources && building.isPlaced) { controler.finalTarget = building.gameObject; foreach (RessourceTank rt in building.getRessourcesNeeded()) { controler.GetComponent <Citizen>().ressourcesToTransport.add(rt); } if (building.needTools) { foreach (Tool t in building.getToolsNeeded()) { controler.GetComponent <Citizen>().toolsToTransport.add(t); } return; } else { foreach (Tool t in controler.GetComponent <Citizen>().toolsToTransport.toolInventory) { t.neededToTransport = false; } } } else if (building.needTools && building.isPlaced) { controler.finalTarget = building.gameObject; foreach (Tool t in building.getToolsNeeded()) { controler.GetComponent <Citizen>().toolsToTransport.add(t); } foreach (RessourceTank rT in controler.GetComponent <Citizen>().ressourcesToTransport.ressourcesList) { rT.neededToTransport = false; } return; } } }
public override bool Decide(FSMControler controler) { bool boolBag = bagFull(controler); if (boolBag) { setTargetToCamp(controler); } return(boolBag); }
private bool NearTarget(FSMControler controler) { if (!controler.target) { return(false); } else { return(controler.agent.remainingDistance <= controler.citizen.citizenSetting.distanceNearTarget && !controler.agent.pathPending); } }
public override bool Decide(FSMControler controler) { bool res = BuildingDontNeedResources(controler); if (res) { controler.target = null; controler.finalTarget = null; } return(res); }
/* private void Stock(FSMControler controler) * { * if (controler.target.GetComponent<Building>() && controler.citizen.ressources.Count != 0) * { * controler.target.GetComponent<Building>().addRessource(controler.citizen.ressources[0], 1); * controler.citizen.ressources.RemoveAt(0); * } * } */ private void Stock(FSMControler controler) { Building target = controler.citizen.workPlace.GetComponent <Building>(); Citizen citizen = controler.GetComponent <Citizen>(); citizen.refreshSoundBools(); foreach (RessourceTank rT in citizen.ressourcesToTransport.getRessourcesNeededTransport()) { Text woodText = GameObject.Find("WoodTotal").GetComponent <Text>(); woodText.text = (int.Parse(woodText.text) - 1).ToString(); target.take(rT.ressource, citizen); } }
public bool Check(FSMControler controler) { foreach (FSMDecision decision in decisions) { // Une seule decision FAUSSE renvoie FAUX; if (decision.Decide(controler) == false) { return(false); } } // Si toutes les décisions sont passées -> VRAI return(true); }
public bool PriorityTarget(FSMControler controler) { if ((controler.manualTarget != null) && controler.target != controler.manualTarget) { controler.target = controler.manualTarget; return(true); } else { return(false); } }
public bool HaveNotEnoughTools(FSMControler controler) { if (!controler.target) { return(false); } Building building = controler.target.gameObject.GetComponent <Building>(); if (!building) { return(false); } return(!building.enoughToolsToBuild); }