コード例 #1
0
        protected override void OnOpen(object userData)
        {
            base.OnOpen(userData);

            subBuildingPreset = userData as WorldMapSelectSubBuilding.Preset;

            btnBack.gameObject.SetActive(subBuildingPreset.isMainBuildingProcess);
            btnBack.onClick.AddListener(() => { GameCore.UI.CloseUIForm(UIForm, false); });
            CancelBtn.onClick.AddListener(() => { GameCore.UI.CloseUIForm(UIForm, true); });
            ExitButton.onClick.AddListener(() => { GameCore.UI.CloseUIForm(UIForm, true); });
            OkBtn.onClick.AddListener(() =>
            {
                if (selectData == null)
                {
                    var msg = new NE_ResetBuildingC()
                    {
                        Serial = client_serial_type.ENeResetBuildingC, Building = new BuildingObject()
                        {
                            PosIndex = subBuildingPreset.posIndex, MasterTid = subBuildingPreset.masterTid, SlaverTid = 0
                        }
                    };
                    GameCore.Network.Send(msg.Serial, msg, GameCore.Connect.ProxyChannel);
                    GameCore.UI.CloseUIForm(UIForm, true);
                }
                else if (UIBuildingCard.CheckBuildCondition(selectData, buildCost, nonUsingCost))
                {
                    var msg = new NE_ResetBuildingC()
                    {
                        Serial = client_serial_type.ENeResetBuildingC, Building = new BuildingObject()
                        {
                            PosIndex = subBuildingPreset.posIndex, MasterTid = subBuildingPreset.masterTid, SlaverTid = selectData.Id
                        }
                    };
                    GameCore.Network.Send(msg.Serial, msg, GameCore.Connect.ProxyChannel);
                    GameCore.UI.CloseUIForm(UIForm, true);
                }
            });

            masterData = GameCore.DataTable.GetData <BuildingData>(subBuildingPreset.masterTid);

            // 計算選擇地格是否有舊建築, 紀錄人口開銷
            var building           = GameCore.NetData.GetBuilding(subBuildingPreset.posIndex);
            int savePopulationCost = 0;

            slaverTid    = masterData.default_sub;
            preSlaverTid = 0;
            if (building != null && building.MasterTid > 0)
            {
                var buildingData = GameCore.DataTable.GetData <BuildingData>(building.MasterTid);
                if (subBuildingPreset.isMainBuildingProcess)
                {
                    savePopulationCost += buildingData.population_cost;
                }

                if (building.SlaverTid > 0)
                {
                    var slaverBuildingData = GameCore.DataTable.GetData <BuildingData>(building.SlaverTid);
                    savePopulationCost += slaverBuildingData.population_cost;

                    // 為相同建物的副建物進行置換, 原始設定才算是目前使用中建物
                    if (building.MasterTid == masterData.Id)
                    {
                        preSlaverTid = building.SlaverTid;
                        slaverTid    = building.SlaverTid;
                    }
                }
            }

            // 建物總人口開銷 - 選擇地格建物人口開銷
            usingPopulation = GameCore.NetData.GetAllBuildingCost() - savePopulationCost;
            // 剩餘人口
            nonUsingCost = GameCore.NetData.Character.Population - usingPopulation;

            RefreshPopulation();
            UpdateBuildingListData();
            Refresh();
        }
コード例 #2
0
 protected override void OnClose(bool isShutdown, object userData)
 {
     base.OnClose(isShutdown, userData);
     clearListeners();
     subBuildingPreset = null;
 }