예제 #1
0
    //创建建筑
    public void CreateOffice(int num)
    {
        //如果之前的建筑没有成功建造就删除
        if (SelectBuilding != null)
        {
            Destroy(SelectBuilding.effect.gameObject);
            Destroy(SelectBuilding.gameObject);
        }

        ToggleEffectRange();
        BuildingType type = (BuildingType)num;

        //创建建筑预制体,设定Building脚本的变量
        SelectBuilding      = Instantiate(BuildingPrefab, BuildingContent);
        SelectBuilding.BM   = this;
        SelectBuilding.Type = type; //枚举第一位是0
        //创建EffectRange并赋值
        SelectBuilding.effect = Instantiate(BEPrefab, BuildingContent);
        SelectBuilding.effect.CurrentBuilding = SelectBuilding;

        //把控制面板放到新建筑Prefab旁边
        ControlPanel.transform.position = SelectBuilding.transform.position;
        ControlPanel.SetActive(true);

        //确定名称
        int DepNum = 1;

        for (int i = 0; i < ConstructedBuildings.Count; i++)
        {
            if (ConstructedBuildings[i].Type == type)
            {
                DepNum += 1;
            }
        }
        SelectBuilding.Text_DepName.text = SelectBuilding.Type.ToString() + DepNum;

        //设置尺寸
        if (type == BuildingType.技术部门 || type == BuildingType.市场部门 || type == BuildingType.产品部门 || type == BuildingType.运营部门)
        {
            SelectBuilding.SetSize(2, 3);
        }
        else if (type == BuildingType.高管办公室 || type == BuildingType.人力资源部A || type == BuildingType.人力资源部B || type == BuildingType.摩房)
        {
            SelectBuilding.SetSize(2, 2);
        }
        else if (type == BuildingType.研发部门)
        {
            SelectBuilding.SetSize(2, 4);
        }
        else if (type == BuildingType.健身房)
        {
            SelectBuilding.SetSize(3, 3);
        }
        else if (type == BuildingType.目标修正小组 || type == BuildingType.档案管理室 || type == BuildingType.效能研究室 ||
                 type == BuildingType.财务部 || type == BuildingType.战略咨询部B || type == BuildingType.精确标准委员会 ||
                 type == BuildingType.高级财务部A || type == BuildingType.高级财务部B)
        {
            SelectBuilding.SetSize(2, 3);
        }
    }
예제 #2
0
    // When left mouse up
    private void RealeaseSelection()
    {
        SelectionBox.gameObject.SetActive(false);
        _selection = false;

        // If selection made by box
        if (_boxSelection)
        {
            Vector2 min = SelectionBox.anchoredPosition - (SelectionBox.sizeDelta / 2);
            Vector2 max = SelectionBox.anchoredPosition + (SelectionBox.sizeDelta / 2);

            // If there are units
            SelectUnits?.Invoke(min, max, _selectedUnits);
            _boxSelection = false;
            ShowUnitsInfo();
        }
        // If selection made by left mouse click
        else
        {
            // Drawing Raycast to detect if there is selectable object
            Vector3      worldPos = _manager.GameCamera.ScreenToWorldPoint(_startPos);
            RaycastHit2D hit      = Physics2D.Raycast(worldPos, Vector3.back, Mathf.Infinity);
            Debug.DrawRay(worldPos, Vector3.forward, Color.blue, 10f);

            // Publishing selection request to buildings
            SelectBuilding?.Invoke(hit, _selectedBuildings);

            // If there is building
            if (_selectedBuildings.Count > 0)
            {
                int          buildingIndex = _selectedBuildings[0].BuildingIndex;
                BuildingData buildingData  = _manager.GameConfig.Buildings[buildingIndex];
                _informationMenu.ShowBuildingInfo(buildingData);
            }
            // Else if there is unit
            else
            {
                // Publishing selection request to units
                SelectUnit?.Invoke(hit, _selectedUnits);
                ShowUnitsInfo();
            }
        }
    }
예제 #3
0
 public void RotateBuilding()
 {
     SelectBuilding.Rotate();
     ControlPanel.transform.position = SelectBuilding.transform.position;
 }