public Serf AddSerf(Vector2 position, ResourceController resController) { //Debug.Log(position.x + " " + position.y); Serf serf = new Serf(position, this, resController); GameObject unit_go = Instantiate(serf_prefab); unit_go.transform.SetParent(characters.transform); unit_go.transform.position = new Vector3(position.x, MapController.Instance.mapData.GetHeight(position) + 1f, position.y); unitList.Add(serf, unit_go); return serf; }
void OnComplete(Serf serf) { serf.ReturnCargo(); ResourceAgent ra = lookForAgent(endPosition, resource); if (ra == null) { ResourceController rc = endPosition.GetComponent<ResourceController>(); rc.AddResource(resource); } else { ra.BringResource(); ra.JobIsEnded(this);// This should be executed in case of job is ended unsuccessfuly. } ra = lookForAgent(startPosition, resource); if (ra != null) { ra.JobIsEnded(this);// This should be executed in case of job is ended unsuccessfuly. } }
public bool DoWork(Serf serf) { if (!cargoIsTaken) { serf.TakeCargo(resource); ResourceAgent ra = lookForAgent(startPosition, resource); if (ra == null) { ResourceController rc = startPosition.GetComponent<ResourceController>(); rc.TakeResource(resource); } else { ra.TakeResource(); } //Debug.Log("DoWork: Resource is taken"); cargoIsTaken = true; return false; } else { OnComplete(serf); //Debug.Log("DoWork: Resource job is finished"); return true; } }