public virtual bool Check_canBuild() { CivBaseSim civ_base = GameObject.FindWithTag("CivBase").GetComponent <CivBaseSim>(); if (civ_base != null) { if (civ_base.wood >= cost_wood && civ_base.stone >= cost_stone) { civ_base.wood -= cost_wood; civ_base.stone -= cost_stone; return(true); } } return(false); }
void HungerUpdate() { consumption_timer += Time.deltaTime; if (consumption_timer >= 0.5f) { bool found = false; Vector3Int civ_base_position = machine.Find("CivBase", ref found); if (found) { GameObject tile_object = tilemap.GetInstantiatedObject(civ_base_position); if (tile_object != null) { CivBaseSim civ_base = tile_object.GetComponent <CivBaseSim>(); if (civ_base != null) { if (civ_base.food > food_consumption_rate) { civ_base.food -= food_consumption_rate; starvation = 100; } else { starvation--; } } } } consumption_timer = 0; } if (starvation <= 0) { Destroy(gameObject); } }
void LumberjackUpdate() { if (machine.state == State.Idle) { machine.Collect("Tree"); } if (machine.state == State.Full) { bool found_civbase = false; bool found_house = false; Vector3Int civ_base_position = machine.Find("CivBase", ref found_civbase); Vector3Int house_position = machine.Find("House", ref found_house); if (found_civbase && found_house) { float base_dist = (tilemap.CellToWorld(civ_base_position) - transform.position).magnitude; float house_dist = (tilemap.CellToWorld(house_position) - transform.position).magnitude; if (house_dist < base_dist) { machine.WalkTo(house_position); } else { machine.WalkTo(civ_base_position); } } else { machine.WalkTo(civ_base_position); } } if (machine.state == State.TargetReached) { bool found = false; bool found_house = false; Vector3Int civ_base_position = machine.Find("CivBase", ref found); Vector3Int house_position = machine.Find("House", ref found_house); if (found || found_house) { Vector3Int grid_position = tilemap.WorldToCell(transform.position); if (civ_base_position == grid_position || house_position == grid_position) { GameObject tile_object = tilemap.GetInstantiatedObject(civ_base_position); if (tile_object != null) { CivBaseSim civ_base = tile_object.GetComponent <CivBaseSim>(); if (civ_base != null) { civ_base.wood += machine.resource_count; machine.resource_count = 0; } } } machine.Collect("Tree"); } } }
void Update() { Tile tile = (Tile)world.GetTile(grid_position); if (tile != null) { GameObject marked_object = world.GetInstantiatedObject(grid_position); if (marked_object != null) { switch (marked_object.tag) { case "Tree": { object_information.GetComponent <Text>().text = "Object: Tree"; } break; case "CivBase": { object_information.GetComponent <Text>().text = "Object: Civilization center\n"; CivBaseSim cbase = marked_object.GetComponent <CivBaseSim>(); int wood_count = cbase.wood; int food_count = cbase.food; object_information.GetComponent <Text>().text += "Wood: " + wood_count + "\n"; object_information.GetComponent <Text>().text += "Food: " + food_count + "\n"; } break; case "Rock": { object_information.GetComponent <Text>().text = "Object: Rock"; } break; case "DeepGrass": { object_information.GetComponent <Text>().text = "Object: Thick grass"; } break; default: { object_information.GetComponent <Text>().text = marked_object.tag; } break; } } } else { object_information.GetComponent <Text>().text = ""; } tile = (Tile)ground.GetTile(grid_position); if (tile != null) { GameObject marked_ground = ground.GetInstantiatedObject(grid_position); if (marked_ground != null) { switch (marked_ground.tag) { case "Grass": { ground_information.GetComponent <Text>().text = "Ground: Grass"; } break; default: { ground_information.GetComponent <Text>().text = "Uknown ground type"; } break; } } } else { ground_information.GetComponent <Text>().text = ""; } }