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(); }
protected override void OnClose(bool isShutdown, object userData) { base.OnClose(isShutdown, userData); clearListeners(); subBuildingPreset = null; }