Пример #1
0
    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);
    }
Пример #2
0
    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);
        }
    }
Пример #3
0
    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");
            }
        }
    }
Пример #4
0
    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 = "";
        }
    }