private void onLearnTech(object sender, GameEventArgs e) { var msg = e as NetDataEvent.LearnTechEvent; if (msg == null) { return; } GameCore.Setting.SetInt(Constant.SettingKey.CultureTreeCollectTechID, msg.TechID); // 收取當前研發完成之新科技並前往文明樹頁面檢視 // 關閉建築清單,前往文明樹介面,並且焦點為對應的文明樹ID GameCore.Event.Fire(null, ChangeStateEventArgs.Create(typeof(WorldMapCultureTree), UIBuildingCard.RequireUnlockTechID)); }
public void RefreshButtons(UIBuildingCardPreset preset) { infoBtn.onClick.AddListener(() => { selectedToggle.isOn = true; curDisplayMode = DisplayMode.Info; }); infoBackBtn.onClick.AddListener(() => { selectedToggle.isOn = true; curDisplayMode = DisplayMode.Normal; }); // 選擇該建築進行建設 selectBtn.onClick.AddListener(() => { selectedToggle.isOn = true; if (buildData.IsMainBuilding) { if (CheckBuildCondition(buildData, preset.totalCost, preset.nonUsingCost)) { GameCore.Event.Fire(this, ChangeStateEventArgs.Create(typeof(WorldMapSelectSubBuilding), new WorldMapSelectSubBuilding.Preset() { posIndex = preset.posIndex, position = preset.position, masterTid = buildData.Id, isMainBuildingProcess = true })); } } else if (buildData.IsSubBuilding) { if (preset.selectAction != null) { preset.selectAction(buildData); } } }); }
// 主建築檢查所需「文明樹、人口、最大數量」 // 副建築檢查所需「文明樹、人口」 public static bool CheckBuildCondition(BuildingData buildData, int buildCost, int nonUsingCost) { if (buildData != null) { if (!buildData.IsUnlocked) { RequireUnlockTechID = buildData.culture_tree_id; var cultrueTreeData = GameCore.DataTable.GetDataTable <CultureTreeData>().GetDataRow(buildData.culture_tree_id); var remainTime = GameCore.NetData.GetRemainTime(NetDataComponent.TechEnchantID); if (remainTime == null || remainTime.Value > 0) { // 無待採收科技 UIComfirm.ShowComfirm(GameCore.Localization.GetString(300014), Utility.Text.Format(GameCore.Localization.GetString(300015), GameCore.Localization.GetString(cultrueTreeData.string_id)), (cultureTreeID) => { // check remain time again var remainTime2 = GameCore.NetData.GetRemainTime(NetDataComponent.TechEnchantID); if (remainTime2 == null || remainTime2.Value > 0) { // 關閉建築清單,前往文明樹介面,並且焦點為對應的文明樹ID GameCore.Event.Fire(null, ChangeStateEventArgs.Create(typeof(WorldMapCultureTree), cultureTreeID)); } else { // 採收科技 GameCore.NetData.SendLearnTech((int)cultureTreeID, NE_LearnTechC.Types.EOperate.EGet); } }, cultrueTreeData.Id, null, null, GameCore.Localization.GetString(20), GameCore.Localization.GetString(21)); return(false); } else { // 有已經完成的科技待採收 UIComfirm.ShowComfirm(GameCore.Localization.GetString(300014), Utility.Text.Format(GameCore.Localization.GetString(300016), GameCore.Localization.GetString(cultrueTreeData.string_id)), (cultureTreeID) => { // 採收科技, 收取後前往文明樹頁面檢視 GameCore.NetData.SendLearnTech((int)cultureTreeID, NE_LearnTechC.Types.EOperate.EGet); }, cultrueTreeData.Id, null, null, GameCore.Localization.GetString(300017), GameCore.Localization.GetString(21)); return(false); } } if (buildCost > nonUsingCost) { // 人口需求超出上限,文明樹的研發可提昇人口數量 WorldSystems.MsgSys.AddPersonalMsg(GameCore.Localization.GetString(300056)); return(false); } if (buildData.IsMainBuilding) { // check 當前建物建築最大數量 if (GameCore.NetData.GetBuildingCount(buildData.Id) >= buildData.max) { // 已達最大可建設數量 WorldSystems.MsgSys.AddPersonalMsg(GameCore.Localization.GetString(300010)); return(false); } } } return(true); }