public void ClearBuildingCollect(Building buidling) { NBuildingInfo info = mBuildingInfoMap[buidling.BuildingID]; info.number = 0; info.building.RefreshView(); }
void CheckIfCanUnlockOrUpgrade(NDictionary data = null) { if (hudBinder == null) { return; } hudBinder.RemoveHud(HudType.Exmind); int configID = 0; if (buildingID != 0) // if can upgrade { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); configID = info.configID + 1; if (sanctuaryPackage.GetBulidingLevelByConfigID(configID) >= 20) { return; } } else { configID = sanctuaryPackage.GetConfigIDByBuildingType(buildingType); } if (sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID)) { CanUnlockOrUpgrade = true; hudBinder.AddHud(HudType.Exmind); } else { CanUnlockOrUpgrade = false; } }
void ProcessBuildingInfo(InvadeResultInfo info, out string resStr) { if (info.Id == -1) { resStr = string.Format("[960000]大门破损不堪,僵尸毫不费力就闯入了庄园![-]"); return; } //sanctuaryPackage NBuildingInfo buildingInfo = sanctuaryPackage.GetBuildingInfo(info.Id); BuildingFunc func = sanctuaryPackage.GetBuildingFuncByConfigID(buildingInfo.configID); if (func == BuildingFunc.Defence) //Gate { if (info.Blood <= 0) { resStr = string.Format("[960000]僵尸攻破了大门,开始疯狂破坏![-]"); } else { resStr = string.Format("[960000]僵尸开始攻击大门![-]"); } } else //Turret { BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(buildingInfo.configID); resStr = string.Format("{0}击杀了{1}只僵尸", config.BldgName, info.Num); } }
void OnReceive(NetMsgDef msg) { TSCReceive receive = TSCReceive.ParseFrom(msg.mBtsData); long buildingID = receive.BuildingId; int configID = receive.ConfigId; int num = receive.Number; sanctuaryPackage.Receive(buildingID, receive); NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); if (sanctuaryPackage.GetBuildingFuncByConfigID(info.configID) == BuildingFunc.Craft) { SendEvent("RefreshCraftPanel"); } NDictionary data = new NDictionary(); if (configID == 0) //elec { string content = string.Format("获得电力 x {0}", num); data.Add("content", content); } else { ITEM_RES itemConfig = itemPackage.GetItemDataByConfigID(configID); string content = string.Format("获得{0} x {1}", itemConfig.MinName, num); data.Add("content", content); } //info.number = Mathf.Max(0, info.number - num); //info.building.SetCollect(false); info.building.RefreshHud(); FacadeSingleton.Instance.OpenUtilityPanel("UITipsPanel"); FacadeSingleton.Instance.SendEvent("OpenTips", data); FacadeSingleton.Instance.InvokeService("RPCGetResourceInfo", ConstVal.Service_Sanctuary); }
public void StartUpgrade(TSCUpgrade upgrade) { NBuildingInfo info = GetBuildingInfo(upgrade.BuildingId); info.upgradeFinishTime = upgrade.FinishTime; info.building.RefreshView(); }
void InitView() { NBuildingInfo info = sanctuarytPackage.GetBuildingInfo(selecttionBuilding.BuildingID); var buildingDataMap = ConfigDataStatic.GetConfigDataTable("BUILDING"); BUILDING buildingData = buildingDataMap[info.configID] as BUILDING; int level = sanctuarytPackage.GetBulidingLevelByConfigID(info.configID); titleLabel.text = string.Format("{0} Lv.{1}", buildingData.BldgName, level); contentLable.text = buildingData.BldgInfo; //render 3d model string prefabName = buildingData.PrefabName; if (!string.IsNullOrEmpty(prefabName)) { NDictionary data = new NDictionary(); prefabName = prefabName.Substring(0, prefabName.IndexOf(".")); GameObject prefab = Resources.Load <GameObject>("Prefabs/Building/" + prefabName); if (prefab != null) { data.Add("model", prefab); modelGo = FacadeSingleton.Instance.InvokeService("OpenSubRenderer", ConstVal.Service_Sanctuary, data) as GameObject; } } //get attribute data int count = sanctuarytPackage.GetBuildingAttribute(selecttionBuilding, level); tableView.DataCount = count; tableView.TableChange(); }
void InitView() { NBuildingInfo info = sanctuaryPackage.GetSelectionBuildingInfo(); BUILDING configData = null; BUILDING nextConfigData = null; if (info == null) //unlock { Building building = sanctuaryPackage.GetSelectionBuilding(); int configID = sanctuaryPackage.GetConfigIDByBuildingType(building.buildingType); nextConfigData = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); titleLabel.text = string.Format("{0} 升级", nextConfigData.BldgName); preLevelLabel.text = string.Format("Lv.{0}", 0); nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(configID)); } else { configData = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); nextConfigData = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID + 1); titleLabel.text = string.Format("{0} 升级", configData.BldgName); preLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)); nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID + 1)); } titleLabel.text = string.Format("{0} 升级", configData.BldgName); preLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)); nextLevelLabel.text = string.Format("Lv.{0}", sanctuaryPackage.GetBulidingLevelByConfigID(info.configID + 1)); //set icon preIcon.spriteName = configData.IconName; nextIcon.spriteName = nextConfigData.IconName; //show cost int level = nextConfigData.BldgLvLim; levelLabel.text = string.Format("庄园等级限制: {0}", level); int curLevel = userPackage.GetManorLevel(); if (level > curLevel) { levelLabel.color = Color.red; } else { levelLabel.color = Color.white; } //levelLabel.text ShowCost(nextConfigData); //show upgrade effect ShowUpgradeEffect(info); //set point if (info.building.CanUnlockOrUpgrade) { pointGo.SetActive(true); } else { pointGo.SetActive(false); } }
public void UnlockBuilding(long buildingID, Building building, long finishTime) { NBuildingInfo info = new NBuildingInfo(); info.buildingID = buildingID; info.configID = GetConfigIDByBuildingType(building.buildingType); info.building = building; info.upgradeFinishTime = finishTime; building.UnlockBuilding(info); mBuildingInfoMap.Add(buildingID, info); }
public void EndCraft(long buildingID) { NBuildingInfo info = GetBuildingInfo(buildingID); if (info == null) { Debug.Log(string.Format("buidingID={0} not exist")); return; } info.processFinishTime = 0; info.building.RefreshView(); }
public void SetBuildingCollectable(long buildingID) { if (!mBuildingInfoMap.ContainsKey(buildingID)) { return; } NBuildingInfo info = mBuildingInfoMap[buildingID]; //info.number = info.pronum; info.number = (int)info.building.ProNumber; info.building.RefreshView(); }
public void CancelCraft(long buildingID) { NBuildingInfo info = GetBuildingInfo(buildingID); if (info == null) { Debug.Log(string.Format("buidingID={0} not exist")); return; } info.number = 0; info.processUID = 0; info.processFinishTime = 0; }
public void Receive(long buildingID, TSCReceive receive) { NBuildingInfo info = GetBuildingInfo(buildingID); if (info == null) { Debug.Log(string.Format("buidingID={0} not exist")); return; } info.number = Mathf.Max(0, info.number - receive.Number); info.building.RefreshView(); FacadeSingleton.Instance.SendEvent("RefreshCraftPanel"); }
public bool GetBuidlingInfoByType(BuildingType type, out NBuildingInfo info) { info = null; foreach (var pair in mBuildingInfoMap) { if (GetBuildingTypeByConfigID(pair.Value.configID) == type) { info = pair.Value; return(true); } } return(false); }
public int GetStoreHouseCap() { if (!mBuildingType2IDMap.ContainsKey(BuildingType.StoreHouse)) { Debug.Log("storehouse not exist, there must be something wrong with server"); return(0); } NBuildingInfo info = mBuildingType2IDMap[BuildingType.StoreHouse]; var dataMap = ConfigDataStatic.GetConfigDataTable("CANGKU"); CANGKU configData = dataMap[GetBulidingLevelByConfigID(info.configID)] as CANGKU; return(configData.CangkuCap); }
/// <summary> /// buildinginfo is from server /// </summary> public void AddBuilding(BuildingInfo buildingInfo) { NBuildingInfo info = new NBuildingInfo(buildingInfo); info.building = GetTypeBuilding(GetBuildingTypeByConfigID(buildingInfo.ConfigId)); if (info.building == null) { Debug.Log(string.Format("building{0} prefab missing!!!!!!", GetBuildingTypeByConfigID(info.configID))); return; } info.building.SetBuildingID(info.buildingID); mBuildingInfoMap[info.buildingID] = info; mBuildingType2IDMap[GetBuildingTypeByConfigID(info.configID)] = info; }
public void StartCraft(TSCProcess process) { UserPackage userPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage; NBuildingInfo info = GetBuildingInfo(process.BuildingId); if (info == null) { Debug.Log(string.Format("buidingID={0} not exist")); return; } info.processFinishTime = process.FinishTime; info.processUID = userPackage.UserID; info.number = process.Number; info.building.RefreshView(); }
void OnUpgrade() { NBuildingInfo buildingInfo = sanctuaryPackage.GetBuildingInfo(selectBuilding.BuildingID); if (sanctuaryPackage.GetBulidingLevelByConfigID(buildingInfo.configID) >= 20) { NDictionary data = new NDictionary(); data.Add("title", "升级失败"); data.Add("content", "等级达到上限"); data.Add("method", 1); FacadeSingleton.Instance.OpenUtilityPanel("UIMsgBoxPanel"); FacadeSingleton.Instance.SendEvent("OpenMsgBox", data); return; } FacadeSingleton.Instance.BackPanel(); FacadeSingleton.Instance.OverlayerPanel("UIBuildingUpgradePanel"); }
void CheckIfCanSpwan(NDictionary data = null) { NBuildingInfo info = null; SanctuaryPackage sanctuaryPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Sanctuary) as SanctuaryPackage; if (sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Gate, out info) && (sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Turret0) || sanctuaryPackage.GetBuidlingInfoByType(BuildingType.Turret1))) { StartSpwaning(); target = info.building.transform; } else { StopSpwaning(); } }
//reload prefab of building public void ReloadModel() { GameObject prefab = null; if (mState == BuildingState.Locked) { prefab = Resources.Load <GameObject>("Prefabs/Building/lock"); } else { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); if (info == null) { return; } BUILDING configData = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); string prefabName = configData.PrefabName; prefabName = prefabName.Substring(0, prefabName.IndexOf(".")); prefab = Resources.Load <GameObject>("Prefabs/Building/model/" + prefabName); } if (prefab == null) { return; } if (buildingGo != null) { buildingGo.SendMessage("ClearHud", SendMessageOptions.DontRequireReceiver); DestroyImmediate(buildingGo); } buildingGo = Instantiate(prefab); buildingGo.transform.parent = transform; buildingGo.transform.localPosition = Vector3.zero; buildingGo.transform.localRotation = Quaternion.identity; hudBinder = buildingGo.AddComponent <HudBinder>(); Transform pos = buildingGo.transform.Find("pos"); if (pos != null) { hudBinder.SetTarget(pos.gameObject); } NEventListener listener = buildingGo.AddComponent <NEventListener>(); listener.AddClick(OnClick); }
void GetBuildingAttributeNew(Building building, int level) { if (level >= 20) { return; } NBuildingInfo info = GetBuildingInfo(building.BuildingID); BuildingFunc func = GetBuildingFuncByConfigID(info.configID); BUILDING buildingConfig = GetBuildingConfigDataByConfigID(info.configID); string funcName = buildingConfig.BldgFuncTableName; object funcConfig = ConfigDataStatic.GetConfigDataTable(funcName)[level]; //reflection get properties if (func == BuildingFunc.Collect) { } }
void ShowNameBoard(NDictionary args = null) { NDictionary data = new NDictionary(); if (buildingID == 0) { data.Add("id", sanctuaryPackage.GetConfigIDByBuildingType(buildingType)); data.Add("isunlock", false); } else { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); data.Add("id", info.configID); data.Add("isunlock", true); } if (hudBinder != null) { hudBinder.AddHud(HudType.NameBoard, data); } }
public void SetCollect(bool isCollect) { if (isCollect) { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); if (info == null) { return; } BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); NDictionary args = new NDictionary(); args.Add("id", config.ProId); hudBinder.AddHud(HudType.Collect, args); mState = BuildingState.Collect; } else { hudBinder.RemoveHud(HudType.Collect); mState = BuildingState.Idle; } }
void InitView() { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(selectionBuilding.BuildingID); var buildingDataMap = ConfigDataStatic.GetConfigDataTable("BUILDING"); BUILDING buildingData = buildingDataMap[info.configID] as BUILDING; int level = sanctuaryPackage.GetBulidingLevelByConfigID(info.configID); long remainTime = 0; //check if is crafting isCrafting = false; isCollect = false; if (GlobalFunction.GetRemainTime(info.processFinishTime, out remainTime)) { isCrafting = true; } else if (info.number > 0) { isCollect = true; } toConfigID = buildingData.ProId; fromConfigID = buildingData.ConId; //item name var itemDataMap = ConfigDataStatic.GetConfigDataTable("ITEM_RES"); ITEM_RES itemData = itemDataMap[fromConfigID] as ITEM_RES; fromItemName.text = itemData.MinName; fromSprite.spriteName = itemData.IconName; ratio = buildingData.ConPro; itemData = itemDataMap[toConfigID] as ITEM_RES; toItemName.text = itemData.MinName; describeLabel.text = itemData.Desc; toSprite.spriteName = itemData.IconName; descSprite.spriteName = itemData.IconName; // set number NItemInfo itemInfo = itemPackage.GetItemInfo(fromConfigID); craftNum = 0; slider.value = 0f; if (itemInfo == null) { craftMax = 0; } else { int toItemMax = (int)Mathf.Floor((float)itemInfo.number / (float)ratio); craftMax = toItemMax * ratio; slider.numberOfSteps = (int)Mathf.Ceil((float)craftMax / (float)ratio) + 1; } //check if is self if (info.processUID == userPackage.UserID) { isSelf = true; } else { isSelf = false; } //text title.text = string.Format("{0} Lv.{1}", buildingData.BldgName, level); collectButton.gameObject.SetActive(false); cancelButton.gameObject.SetActive(false); //stop timer if (TimerCo != null) { timeLabel.text = "00:00"; StopCoroutine(TimerCo); } if (isCrafting) { //check if is self if (isSelf) { stateLabel.text = "你正在使用"; cancelButton.gameObject.SetActive(true); } else { stateLabel.text = string.Format("玩家Uid{0}正在使用", info.processUID); } //set time if (remainTime > 0) { TimerCo = StartCoroutine(Timer(remainTime)); } } else if (isCollect) { if (isSelf) { stateLabel.text = string.Format("可以领取{0}", info.number); collectButton.gameObject.SetActive(true); } timeLabel.text = "00:00"; } else { stateLabel.text = "该工厂处于空闲状态"; collectButton.gameObject.SetActive(false); cancelButton.gameObject.SetActive(false); } UpdateNumView(); }
/// <summary> /// Uggly implement of getting buliding's attribute /// return count of list /// </summary> public int GetBuildingAttribute(Building building, int level) { BuildingType type = building.buildingType; NBuildingInfo info = GetBuildingInfo(building.BuildingID); BuildingFunc func = GetBuildingFuncByConfigID(info.configID); List <BuildingAttributeData> dataList = new List <BuildingAttributeData>(); switch (type) { case (BuildingType.Rice): { var dataMap = ConfigDataStatic.GetConfigDataTable("DAMI"); DAMI data = dataMap[level] as DAMI; dataList.Add(new BuildingAttributeData("生长速度", data.DamiSpd)); dataList.Add(new BuildingAttributeData("单次最高产量", data.DamiCap)); break; } case (BuildingType.Veg): { var dataMap = ConfigDataStatic.GetConfigDataTable("SHUCAI"); SHUCAI data = dataMap[level] as SHUCAI; dataList.Add(new BuildingAttributeData("生长速度", data.ShucaiSpd)); dataList.Add(new BuildingAttributeData("单次最高产量", data.ShucaiCap)); break; } case (BuildingType.Fertilizer): { var dataMap = ConfigDataStatic.GetConfigDataTable("HUAFEI"); HUAFEI data = dataMap[level] as HUAFEI; dataList.Add(new BuildingAttributeData("生长速度", data.HuafeiSpd)); dataList.Add(new BuildingAttributeData("单次最高产量", data.HuafeiCap)); break; } case (BuildingType.Fruit): { var dataMap = ConfigDataStatic.GetConfigDataTable("SHUIGUO"); SHUIGUO data = dataMap[level] as SHUIGUO; dataList.Add(new BuildingAttributeData("生长速度", data.ShuiguoSpd)); dataList.Add(new BuildingAttributeData("单次最高产量", data.ShuiguoCap)); break; } case (BuildingType.FeedFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("SILIAO"); SILIAO data = dataMap[level] as SILIAO; dataList.Add(new BuildingAttributeData("加工速度", data.SiliaoSpd)); dataList.Add(new BuildingAttributeData("最大加工量", data.SiliaoCap)); break; } case (BuildingType.Well): { var dataMap = ConfigDataStatic.GetConfigDataTable("JING"); JING data = dataMap[level] as JING; dataList.Add(new BuildingAttributeData("渗水速度", data.JingSpd)); dataList.Add(new BuildingAttributeData("容量", data.JingCap)); break; } case (BuildingType.WaterCollector): { var dataMap = ConfigDataStatic.GetConfigDataTable("LUSHUI"); LUSHUI data = dataMap[level] as LUSHUI; dataList.Add(new BuildingAttributeData("收集速度", data.LushuiSpd)); dataList.Add(new BuildingAttributeData("单次最大收集量", data.LushuiCap)); break; } case (BuildingType.WaterFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("KUANGQUANSHUI"); KUANGQUANSHUI data = dataMap[level] as KUANGQUANSHUI; dataList.Add(new BuildingAttributeData("加工速度", data.KuangquanshuiSpd)); dataList.Add(new BuildingAttributeData("最大加工量", data.KuangquanshuiCap)); break; } case (BuildingType.RadioStation): { var dataMap = ConfigDataStatic.GetConfigDataTable("WUXIANDIAN"); WUXIANDIAN data = dataMap[level] as WUXIANDIAN; dataList.Add(new BuildingAttributeData("接受时间(秒)", data.WuxiandianDis)); break; } case (BuildingType.Radar): { var dataMap = ConfigDataStatic.GetConfigDataTable("LEIDA"); LEIDA data = dataMap[level] as LEIDA; dataList.Add(new BuildingAttributeData("接受时间(秒)", data.LeidaDis)); break; } case (BuildingType.StoreHouse): { var dataMap = ConfigDataStatic.GetConfigDataTable("CANGKU"); CANGKU data = dataMap[level] as CANGKU; dataList.Add(new BuildingAttributeData("仓库容量", data.CangkuCap)); break; } case (BuildingType.Battery): { var dataMap = ConfigDataStatic.GetConfigDataTable("DIANCHIZU"); DIANCHIZU data = dataMap[level] as DIANCHIZU; dataList.Add(new BuildingAttributeData("电量储存量", data.DianchizuCap)); break; } case (BuildingType.PowerGym): { var dataMap = ConfigDataStatic.GetConfigDataTable("JIANSHENFANG"); JIANSHENFANG data = dataMap[level] as JIANSHENFANG; dataList.Add(new BuildingAttributeData("能量转化率", data.JianshenfangSpd)); dataList.Add(new BuildingAttributeData("每日转化上限", data.JianshenfangCap)); break; } case (BuildingType.ZombiePlant): { var dataMap = ConfigDataStatic.GetConfigDataTable("JSFADIANZHAN"); JSFADIANZHAN data = dataMap[level] as JSFADIANZHAN; dataList.Add(new BuildingAttributeData("能量转化率", data.JsfadianzhanSpd)); dataList.Add(new BuildingAttributeData("单次最大储电量", data.JsfadianzhanCap)); break; } case (BuildingType.PowerPlant): { var dataMap = ConfigDataStatic.GetConfigDataTable("TAIYANGNENG"); TAIYANGNENG data = dataMap[level] as TAIYANGNENG; dataList.Add(new BuildingAttributeData("发电速率", data.TaiyangnengSpd)); dataList.Add(new BuildingAttributeData("单次最大储电量", data.TaiyangnengCap)); break; } case (BuildingType.OilFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("LIANYOU"); LIANYOU data = dataMap[level] as LIANYOU; dataList.Add(new BuildingAttributeData("炼油速度", data.LianyouSpd)); dataList.Add(new BuildingAttributeData("最高炼油量", data.LianyouCap)); break; } case (BuildingType.SteelFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("LIANGANG"); LIANGANG data = dataMap[level] as LIANGANG; dataList.Add(new BuildingAttributeData("炼钢速度", data.LiangangSpd)); dataList.Add(new BuildingAttributeData("最高炼钢量", data.LiangangCap)); break; } case (BuildingType.ConcreteFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("HUNNINGTU"); HUNNINGTU data = dataMap[level] as HUNNINGTU; dataList.Add(new BuildingAttributeData("搅拌速度", data.HunningtuSpd)); dataList.Add(new BuildingAttributeData("最高搅拌量", data.HunningtuCap)); break; } case (BuildingType.PineWood): { var dataMap = ConfigDataStatic.GetConfigDataTable("SONGSHU"); SONGSHU data = dataMap[level] as SONGSHU; dataList.Add(new BuildingAttributeData("生长速度", data.SongshuSpd)); dataList.Add(new BuildingAttributeData("单次最高产量", data.SongshuCap)); break; } case (BuildingType.WoodFactory): { var dataMap = ConfigDataStatic.GetConfigDataTable("MUCAIJIAGONG"); MUCAIJIAGONG data = dataMap[level] as MUCAIJIAGONG; dataList.Add(new BuildingAttributeData("加工速度", data.MucaijiagongSpd)); dataList.Add(new BuildingAttributeData("最大加工量", data.MucaijiagongCap)); break; } case (BuildingType.Gate): { var dataMap = ConfigDataStatic.GetConfigDataTable("DAMEN"); DAMEN data = dataMap[level] as DAMEN; dataList.Add(new BuildingAttributeData("耐久度", data.DamenDura)); break; } } if (func == BuildingFunc.Collect) { BuildingAttributeData data = dataList[0]; //add buff //calculate distribution } attributeDataList = dataList; return(attributeDataList.Count); }
void InitView() { if (selectBuilding == null) { return; } HideAllButton(); NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(selectBuilding.BuildingID); BuildingFunc funcType = BuildingFunc.Collect; if (info != null) { nameLabel.text = string.Format("{0} Lv.{1}" , sanctuaryPackage.GetBuildingNameByType(selectBuilding.buildingType) , sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)); funcType = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID); } else { nameLabel.text = string.Format("{0}(未解锁)", sanctuaryPackage.GetBuildingNameByType(selectBuilding.buildingType)); } switch (selectBuilding.State) { case (BuildingState.Locked): { unlockBtn.gameObject.SetActive(true); break; } case (BuildingState.Idle): { if (funcType == BuildingFunc.Collect) { infoBtn.gameObject.SetActive(true); upgradeBtn.gameObject.SetActive(true); collectBtn.gameObject.SetActive(true); } else if (funcType == BuildingFunc.Craft) { infoBtn.gameObject.SetActive(true); upgradeBtn.gameObject.SetActive(true); craftBtn.gameObject.SetActive(true); } else { infoBtn.gameObject.SetActive(true); upgradeBtn.gameObject.SetActive(true); } break; } case (BuildingState.Upgrade): { infoBtn.gameObject.SetActive(true); break; } case (BuildingState.Collect): { //Building in remind state should never invoke this panel break; } case (BuildingState.Craft): { infoBtn.gameObject.SetActive(true); upgradeBtn.gameObject.SetActive(true); craftBtn.gameObject.SetActive(true); break; } } //set point if (selectBuilding.CanUnlockOrUpgrade) { unlockBtn.transform.Find("point").gameObject.SetActive(true); upgradeBtn.transform.Find("point").gameObject.SetActive(true); } else { unlockBtn.transform.Find("point").gameObject.SetActive(false); upgradeBtn.transform.Find("point").gameObject.SetActive(false); } grid.Reposition(); }
void ShowUpgradeEffect(NBuildingInfo info) { sanctuaryPackage.CalculateBuildingUpgradeEffect(info.building, sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)); tableView.DataCount = sanctuaryPackage.GetBuildingUpgradeEffect().Count; tableView.TableChange(); }
/// <summary> /// If building is unlock, set the info /// </summary> public void UnlockBuilding(NBuildingInfo info) { buildingID = info.buildingID; }
public void RefreshState() { NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); long remainTime = 0; if (info == null) { mState = BuildingState.Locked; Building building = sanctuaryPackage.GetTypeBuilding(buildingType); if (building == null) { return; } //if under building's min visible level, hide the building if (!sanctuaryPackage.IsBuildingVisible(buildingType)) { building.gameObject.SetActive(false); } else { building.gameObject.SetActive(true); } } else { BuildingFunc func = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID); info.building.gameObject.SetActive(true); if (info.upgradeFinishTime > 0 && GlobalFunction.GetRemainTime(info.upgradeFinishTime, out remainTime)) { mState = BuildingState.Upgrade; } else if (info.processUID != 0 && info.number > 0) { if (GlobalFunction.GetRemainTime(info.processFinishTime, out remainTime)) { mState = BuildingState.Craft; } else { mState = BuildingState.Collect; } } else { mState = BuildingState.Idle; } //store number and update number if (func == BuildingFunc.Collect) { proNumber = info.number; BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); //print(string.Format("Buidlin={0}, number={1}", config.BldgName, info.number)); sanctuaryPackage.GetProAttribute(info.configID, out proSpeed, out proCap); EventPackage eventPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Event) as EventPackage; UserPackage userPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage; BUILDING buildingConfig = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); string buildingName = buildingConfig.BldgFuncTableName; buildingName = Char.ToUpper(buildingName[0]) + buildingName.Substring(1).ToLower(); var eventList = eventPackage.GetCurEventList(); foreach (var eventInfo in eventList) { WORLD_EVENTS eventConfig = eventPackage.GetEventConfigDataByConfigID(eventInfo.configID); if (eventConfig == null) { continue; } Type type = Type.GetType("com.nkm.framework.resource.data.WORLD_EVENTS"); PropertyInfo propertyInfo = type.GetProperty(buildingName + "Bldgcap"); PropertyInfo hasPropertyInfo = type.GetProperty("Has" + buildingName + "Bldgcap"); bool isHave = (bool)hasPropertyInfo.GetValue(eventConfig, null); if (isHave) { int effect = (int)propertyInfo.GetValue(eventConfig, null); if (effect != 0) { proSpeed *= (float)effect / 100f; } } } //add person num int personNum = userPackage.GetManorPersonNumber(); if (personNum == 2) { proSpeed *= 1.6f; } else if (personNum == 3) { proSpeed *= 2.2f; } else if (personNum == 4) { proSpeed *= 2.8f; } if (proTimer != null) { StopCoroutine(proTimer); } proTimer = StartCoroutine(ProduceTimer()); } } }
public void RefreshHud() { if (buildingGo == null || hudBinder == null) { return; } if (hudBinder == null) { return; } hudBinder.ClearHud(); NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); // check if can unlock or upgrade CheckIfCanUnlockOrUpgrade(); // int configID = 0; // if(info != null) // { // configID = info.configID; // if(sanctuaryPackage.GetBulidingLevelByConfigID(configID) < 20) // if(sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID + 1)) // hudBinder.AddHud(HudType.Exmind); // } // else // { // configID = sanctuaryPackage.GetConfigIDByBuildingType(buildingType); // if(sanctuaryPackage.IsAbleToUnlockOrUpgrade(configID)) // hudBinder.AddHud(HudType.Exmind); // } if (info == null) { return; } BUILDING config = sanctuaryPackage.GetBuildingConfigDataByConfigID(info.configID); BuildingFunc func = sanctuaryPackage.GetBuildingFuncByConfigID(info.configID); if (mState == BuildingState.Collect) { // NDictionary args = new NDictionary(); // args.Add("id", config.ProId); // hudBinder.AddHud(HudType.Collect, args); } else if (mState == BuildingState.Upgrade) { NDictionary args = new NDictionary(); //NBuildingInfo info = sanctuaryPackage.GetBuildingInfo(buildingID); args.Add("finishtime", info.upgradeFinishTime); hudBinder.AddHud(HudType.CountDown, args); } if (func == BuildingFunc.Collect) { NDictionary args = new NDictionary(); var configMap = ConfigDataStatic.GetConfigDataTable("BAR_TIME"); BAR_TIME barConfig = configMap[sanctuaryPackage.GetBulidingLevelByConfigID(info.configID)] as BAR_TIME; args.Add("interval", (float)barConfig.BarTime / 1000f); // float speed = (float)sanctuaryPackage.GetProSpeed(info.configID) / 3600; // args.Add("speed", speed); // args.Add("num", info.number); args.Add("building", this); hudBinder.AddHud(HudType.ProduceBar, args); } //collect hud if (mState == BuildingState.Idle) { if (info.number > 0) { SetCollect(true); mState = BuildingState.Collect; } if (func == BuildingFunc.Collect) { if (collectCo != null) { StopCoroutine(collectCo); } collectCo = StartCoroutine(CollectTimer()); } } }