コード例 #1
0
        /**
         * 條整柱子位置並存放至ColumnList中
         * 流程:先將兩亭的柱子列表內縮至適當位置,算出需移動柱子的方向向量
         *      ,由此向量與另一亭的同邊柱子位置做一個平面並計算需位移的距離
         *      兩亭皆完成此步驟後將所有點加入新的列表中,並調整 List 順序
         */
        public void InitFunction(CombineTing combineTing, List <Vector3> eaveCornerColumnPosList, List <Vector3> goldCornerColumnPosList, float eaveColumnHeight)
        {
            this.eaveColumnHeight = eaveColumnHeight;
            this.goldColumnHeight = eaveColumnHeight;

            columnFundationHeight = eaveColumnHeight * 0.05f;

            CreateBody(combineTing.body, (int)combineTing.sides, combineTing.entranceIndexList, eaveCornerColumnPosList, goldCornerColumnPosList);
        }
コード例 #2
0
        /**
         * 初始化基座
         */
        public void InitFunction(CombineTing combineTing, List <Vector3> platTopPosList, float platformHeight, float platWidth)
        {
            this.platWidth   = platWidth;
            this.platHeight  = platformHeight;
            stairHeight      = platformHeight;
            parentObj        = combineTing.platform;
            entraneIndexList = combineTing.entranceIndexList;
            sides            = (int)combineTing.sides;
            //***********************************************************************
            platFormStruct = CreatePlatform(combineTing.platform, platTopPosList, -(platWidth - Define.initPlatWidth));

            StartCreateBorder(isBorder);
            StartCreateStair(isStair);
        }
コード例 #3
0
    public void UpdateBodyToggleInfo(Toggle toggle)
    {
        BuildingObj nowBuilding = Buildings[selectFloor];
        CombineTing CT          = nowBuilding.transform.GetComponentInParent <CombineTing>();

        switch (toggle.name)
        {
        case BodyMenuHandler.GoldColToggle_NAME:
            if (CT)
            {
                CT.ResetGoldColumn(toggle.isOn);
                CT.ResetWindowAndDoorNum();
            }
            else
            {
                nowBuilding.ResetGoldColumn(toggle.isOn);
                nowBuilding.ResetWindowAndDoorNum();
            }
            break;

        case BodyMenuHandler.FriezeToggle_NAME:
            if (CT)
            {
                CT.ResetFrieze(toggle.isOn);
            }
            else
            {
                nowBuilding.ResetFrieze(toggle.isOn);
            }
            break;

        case BodyMenuHandler.BalustradeToggle_NAME:
            if (CT)
            {
                CT.ResetBalustrade(toggle.isOn);
            }
            else
            {
                nowBuilding.ResetBalustrade(toggle.isOn);
            }
            break;

        default:
            print("!!! Can't Find Toggle Name !!!");
            break;
        }
    }
コード例 #4
0
    public void UpdatePlameToggleInfo(Toggle toggle)
    {
        PlatformController platform = Buildings[selectFloor].platformController;

        BuildingObj nowBuilding = Buildings[selectFloor];
        CombineTing CT          = nowBuilding.transform.GetComponentInParent <CombineTing>();

        switch (toggle.name)
        {
        case PlamformMenuHandler.StairToggle_NAME:
            if (CT)
            {
                CT.platformController.StartCreateStair(toggle.isOn);
            }
            else
            {
                nowBuilding.platformController.StartCreateStair(toggle.isOn);
            }
            break;

        case PlamformMenuHandler.BorderToggle_NAME:
            if (CT)
            {
                CT.platformController.StartCreateBorder(toggle.isOn);
            }
            else
            {
                nowBuilding.platformController.StartCreateBorder(toggle.isOn);
            }
            break;

        default:
            print("!!! Can't Find Toggle Name !!!");
            break;
        }
    }
コード例 #5
0
    /**
     * 更新屋身
     */
    public void UpdateBodySliderInfo(Slider slider)
    {
        BuildingObj nowBuilding = Buildings[selectFloor];
        CombineTing CT          = nowBuilding.transform.GetComponentInParent <CombineTing>();

        switch (slider.name)
        {
        case BodyMenuHandler.ColumeHeightSlider_NAME:

            if (CT)
            {
                float moveOffset = slider.value - CT.bodyController.eaveColumnHeight;
                for (int i = 0; i < CT.BuildingsList.Count; i++)
                {
                    CT.BuildingsList[i].MoveBuildingRoof(new Vector3(0, moveOffset, 0));
                }
                CT.bodyController.eaveColumnHeight = slider.value;
                CT.bodyController.goldColumnHeight = slider.value;
                CT.UpdateBodyFunction();
            }
            else
            {
                float moveOffset = slider.value - nowBuilding.bodyController.eaveColumnHeight;
                nowBuilding.bodyController.eaveColumnHeight = slider.value;
                nowBuilding.bodyController.goldColumnHeight = slider.value;
                nowBuilding.MoveBuildingRoof(new Vector3(0, moveOffset, 0));
                nowBuilding.ResetBodyFunction();
            }
            break;

        case BodyMenuHandler.GoldColNumSlider_NAME:
            if (CT)
            {
                CT.bodyController.goldColumnbayNumber = (int)slider.value;
                CT.UpdateBodyFunction();
            }
            else
            {
                nowBuilding.bodyController.goldColumnbayNumber = (int)slider.value;
                nowBuilding.DeleteGoldColumn();
                nowBuilding.ResetGoldColumn(true);
                nowBuilding.ResetWindowAndDoorNum();
            }
            break;

        case BodyMenuHandler.UnitInBay_NAME:

            if (CT)
            {
                CT.bodyController.unitNumberInBay = (int)slider.value;
                CT.UpdateBodyFunction();
            }
            else
            {
                nowBuilding.bodyController.unitNumberInBay = (int)slider.value;
                nowBuilding.ResetWindowAndDoorNum();
            }
            break;

        case BodyMenuHandler.DoorNumSlider_NAME:

            if (CT)
            {
                CT.bodyController.doorNumber = (int)slider.value;
                CT.UpdateBodyFunction();
            }
            else
            {
                nowBuilding.bodyController.doorNumber = (int)slider.value;
                nowBuilding.ResetWindowAndDoorNum();
            }
            break;

        case BodyMenuHandler.BodyWidthSlider_NAME:

            if (CT)
            {
                nowBuilding.bodyController.bodyWidth = slider.value;
                nowBuilding.ResetBodyFunction();
                CT.UpdateBodyFunction();
                CT.UpdatePlatformFunction();
            }
            else
            {
                nowBuilding.bodyController.bodyWidth = slider.value;
                nowBuilding.ResetBodyFunction();
            }
            break;

        case BodyMenuHandler.BodyLengthSlider_NAME:

            if (CT)
            {
                nowBuilding.bodyController.bodyLength = slider.value;
                nowBuilding.ResetBodyFunction();
                CT.UpdateBodyFunction();
                CT.UpdatePlatformFunction();
            }
            else
            {
                nowBuilding.bodyController.bodyLength = slider.value;
                nowBuilding.ResetBodyFunction();
            }
            break;
        }
    }
コード例 #6
0
    /**
     * 更新基座
     */
    public void UpdatePlameSliderInfo(Slider slider)
    {
        PlatformController platform    = Buildings[selectFloor].platformController;
        BuildingObj        nowBuilding = Buildings[selectFloor];
        CombineTing        CT          = nowBuilding.transform.GetComponentInParent <CombineTing>();

        switch (slider.name)
        {
        case PlamformMenuHandler.WidthSlider_NAME:
            if (CT)
            {
                CT.platformController.platWidth = slider.value;
                CT.UpdatePlatformFunction();
            }
            else
            {
                nowBuilding.ResetPlatformFunction(platform.platLength, slider.value, platform.platHeight, platform.isStair);
            }
            break;

        case PlamformMenuHandler.DepthSlider_NAME:
            nowBuilding.ResetPlatformFunction(slider.value, platform.platWidth, platform.platHeight, platform.isStair);
            break;

        case PlamformMenuHandler.HeightSlider_NAME:

            if (CT)
            {
                float moveOffset = (slider.value - CT.platformController.platHeight) / 2;
                CT.MoveBuildingBody(new Vector3(0, moveOffset, 0));
                for (int i = 0; i < CT.BuildingsList.Count; i++)
                {
                    CT.BuildingsList[i].MoveBuildingRoof(new Vector3(0, moveOffset, 0));
                }
                CT.platformController.platHeight = slider.value;
                CT.UpdatePlatformFunction();
            }
            else
            {
                float moveOffset = (slider.value - nowBuilding.platformController.platHeight) / 2;
                nowBuilding.MoveBuildingBody(new Vector3(0, moveOffset, 0));
                nowBuilding.MoveBuildingRoof(new Vector3(0, moveOffset, 0));
                nowBuilding.ResetPlatformFunction(platform.platLength, platform.platWidth, slider.value, platform.isStair);
            }
            break;

        case PlamformMenuHandler.StairNumSlider_NAME:

            break;

        case PlamformMenuHandler.StairLengthSlider_NAME:
            nowBuilding.ResetStair(slider.value, platform.stairWidth);                      //***參數未設定好
            break;

        case PlamformMenuHandler.StairWidthSlider_NAME:
            nowBuilding.ResetStair(platform.stairLength, slider.value);                      //***參數未設定好
            break;

        default:
            print("!!! Can't Find Slider Name !!!");
            break;
        }
    }
コード例 #7
0
    public List <BuildingObj> AddBuilding(Vector3 pos, float rotateAngle)
    {
        List <BuildingObj> buildings = new List <BuildingObj>();

        //檢查是否為組合亭
        if (AllBuildings.Count > 0)
        {
            List <BuildingObj> selectBuildings = MainController.Instance.AllBuildings[selectBuildingsIndex];
            for (int i = 0; i < selectBuildings.Count; i++)
            {
                GameObject building = new GameObject("building" + buildingCount++);
                building.gameObject.AddComponent <BuildingObj>();
                Vector3 revisePos = pos;
                revisePos.y = selectBuildings[i].platformCenter.y;
                building.GetComponent <BuildingObj>().InitFunction(building, revisePos, sides, selectBuildings[i].platformController.platLength, selectBuildings[i].platformController.platWidth, selectBuildings[i].platformController.platHeight, selectBuildings[i].bodyController.eaveColumnHeight, selectBuildings[i].bodyController.goldColumnHeight, selectBuildings[i].roofController.mainRidgeHeightOffset, selectBuildings[i].roofController.allJijaHeight, Vector3ListAddVector3(selectBuildings[i].roofController.topFloorBorderList, pos), (int)selectBuildings[i].roofController.roofType, selectBuildings[i].platformController.isStair, rotateAngle);
                buildings.Add(building.GetComponent <BuildingObj>());

                BuildingObj LTing = building.GetComponent <BuildingObj>();
                //檢查與其他組合亭有無需要合併
                for (int j = AllBuildings.Count - 1; j >= 0; j--)
                {
                    BuildingObj RTing = AllBuildings[j][i];
                    if (isNeedCombine(LTing, RTing))
                    {
                        GameObject         combinTing      = new GameObject("CombinTing");
                        CombineTing        combineTingCtrl = combinTing.AddComponent <CombineTing>();
                        List <BuildingObj> buildingsList   = new List <BuildingObj>();
                        if (RTing.transform.GetComponentInParent <CombineTing>())
                        {
                            Debug.Log("Already Has CombineTingoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo");
                            Destroy(combinTing);
                            combinTing             = RTing.transform.GetComponentInParent <CombineTing>().gameObject;
                            combineTingCtrl        = RTing.transform.GetComponentInParent <CombineTing>();
                            LTing.transform.parent = combinTing.transform;
                            buildingsList.AddRange(combineTingCtrl.BuildingsList);
                            Destroy(combineTingCtrl.body.gameObject);
                            Destroy(combineTingCtrl.platform.gameObject);
                        }
                        else
                        {
                            LTing.transform.parent = combinTing.transform;
                            RTing.transform.parent = combinTing.transform;
                            buildingsList.Add(RTing);
                        }
                        buildingsList.Add(LTing);

                        combineTingCtrl.InitFunction(buildingsList.ToArray());

                        AllCT.Add(combineTingCtrl);
                        break;
                    }
                }
            }
        }
        else
        {
            Debug.Log("FirstBuilding");
            GameObject building = new GameObject("building" + buildingCount++);
            building.gameObject.AddComponent <BuildingObj>();
            building.GetComponent <BuildingObj>().InitFunction(building, pos, sides, initPlatformLength_DownStair, initPlatformWidth_DownStair, initPlatformHeight_DownStair, initEaveColumnHeight, initGoldColumnHeight, 0, initAllJijaHeight_TopStair, null, (int)roofType, false, rotateAngle);
            buildings.Add(building.GetComponent <BuildingObj>());
            Debug.Log("----------------------------------- ----------------------------------- -----------------------------------");
            Debug.Log("AllBuildings.Count : " + AllBuildings.Count);
        }

        AllBuildings.Add(buildings);

        return(buildings);
    }