Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
            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);
                        }
                    }
                });
            }
Ejemplo n.º 3
0
        // 主建築檢查所需「文明樹、人口、最大數量」
        // 副建築檢查所需「文明樹、人口」
        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);
        }