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 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) { } }
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()); } } }
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()); } } }
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(); }
/// <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); }