void BuyItemResponce(NetMsgDef msg) { TSCBuyGoods res = TSCBuyGoods.ParseFrom(msg.mBtsData); string content; if (res.IsChange) { content = "价格已改变, 请重新操作"; FacadeSingleton.Instance.InvokeService("RPCGetItemTradeInfo", ConstVal.Service_Sanctuary); } else if (res.IsLimit) { content = "购买达到上限"; FacadeSingleton.Instance.InvokeService("RPCGetPurchase", ConstVal.Service_Sanctuary); } else { ITEM_RES config = itemPackage.GetItemDataByConfigID(res.ConfigId); double price = itemPackage.GetItemPrice(res.ConfigId); content = string.Format("购买{0} x {1}单位\n消耗黄金{2}", config.MinName, res.Number, price * res.Number); FacadeSingleton.Instance.InvokeService("RPCGetPurchase", ConstVal.Service_Sanctuary); FacadeSingleton.Instance.InvokeService("RPCGetResourceInfo", ConstVal.Service_Sanctuary); } FacadeSingleton.Instance.OpenUtilityPanel("UIMsgBoxPanel"); NDictionary args = new NDictionary(); args.Add("content", content); args.Add("method", 1); SendEvent("OpenMsgBox", args); }
public override void DrawCell(int i, int index, int count = 0) { base.DrawCell(i, index, count); var dataList = dynamicPackage.GetFilteredTradeInfoList(); if (mIndex >= dataList.Count) { return; } NTradeInfo tradeInfo = dataList[mIndex]; ITEM_RES config = itemPackage.GetItemDataByConfigID(tradeInfo.configID); nameLabel.text = config.MinName; iconSprite.spriteName = config.IconName; NItemInfo info = itemPackage.GetItemInfo(tradeInfo.configID); if (info == null) { numLabel.text = "0"; } else { numLabel.text = GlobalFunction.NumberFormat(info.number); } }
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); }
//get item history price public void CalculateGraphInfo(int configID, long startTime, long curTime) { mGraphInfoList.Clear(); EventPackage eventPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Event) as EventPackage; ItemPackage itemPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Item) as ItemPackage; ITEM_RES itemConfig = itemPackage.GetItemDataByConfigID(configID); List <NWorldEventInfo> eventList = eventPackage.GetHistoryEventList(); string itemKeyName = itemConfig.KeyName; itemKeyName = char.ToUpper(itemKeyName[0]) + itemKeyName.Substring(1).ToLower(); //reflection System.Type type = System.Type.GetType("com.nkm.framework.resource.data." + "WORLD_EVENTS"); PropertyInfo itemPriceProperty = type.GetProperty(itemKeyName); PropertyInfo itemHasProperty = type.GetProperty("Has" + itemKeyName); NGraphNode preNode = null; NGraphNode node = null; //add start node node = new NGraphNode(); node.price = (double)itemConfig.GoldConv / 1000d; node.time = startTime; mGraphInfoList.Add(node); for (int i = 0; i < eventList.Count; i++) { NWorldEventInfo info = eventList[i]; WORLD_EVENTS eventConfig = eventPackage.GetEventConfigDataByConfigID(info.configID); bool isHas = (bool)itemHasProperty.GetValue(eventConfig, null); if (!isHas) { continue; } double priceArgs = System.Convert.ToDouble(itemPriceProperty.GetValue(eventConfig, null)) / 100; if (info.happenTime <= startTime) { node = mGraphInfoList[0]; node.price *= priceArgs; } else { preNode = mGraphInfoList[mGraphInfoList.Count - 1]; node = new NGraphNode(); if (info.isHappen) { node.price = preNode.price * priceArgs; } else { node.price = preNode.price / priceArgs; } mGraphInfoList.Add(node); } } }
public void CalculateTradeInfo() { mTradeInfoList.Clear(); var dataList = ConfigDataStatic.GetConfigDataTable("ITEM_RES"); foreach (var pair in dataList) { ITEM_RES config = pair.Value as ITEM_RES; mTradeInfoList.Add(new NTradeInfo(config.Id)); } }
public void CalculateItemEffect(int configID) { var dataMap = ConfigDataStatic.GetConfigDataTable("ITEM_RES"); ITEM_RES configData = dataMap[configID] as ITEM_RES; if (configData == null || configData.IfAvailable != 1) { return; } mItemEffectList.Clear(); if (configData.HasHpRec) { mItemEffectList.Add(new ItemEffect("回复血量", configData.HpRec.ToString())); } if (configData.HasStarvRec) { mItemEffectList.Add(new ItemEffect("回复饥饿", configData.StarvRec.ToString())); } if (configData.HasWaterRec) { mItemEffectList.Add(new ItemEffect("回复口渴", configData.WaterRec.ToString())); } if (configData.HasHealthRec) { mItemEffectList.Add(new ItemEffect("回复健康", configData.HealthRec.ToString())); } if (configData.HasMoodRec) { mItemEffectList.Add(new ItemEffect("回复心情", configData.MoodRec.ToString())); } if (configData.HasAtkAdd) { mItemEffectList.Add(new ItemEffect("攻击", configData.AtkAdd.ToString())); } if (configData.HasDefAdd) { mItemEffectList.Add(new ItemEffect("防御", configData.DefAdd.ToString())); } if (configData.HasSpdAdd) { mItemEffectList.Add(new ItemEffect("移速", configData.SpdAdd.ToString())); } if (configData.HasLoadAdd) { mItemEffectList.Add(new ItemEffect("负载", configData.LoadAdd.ToString())); } if (configData.HasAgiAdd) { mItemEffectList.Add(new ItemEffect("敏捷", configData.AgiAdd.ToString())); } }
void SetIcon(int configID) { ItemPackage itemPackge = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Item) as ItemPackage; if (configID == 0) //elec { iconSprite.spriteName = "electricity"; } else { ITEM_RES config = itemPackge.GetItemDataByConfigID(configID); iconSprite.spriteName = config.IconName; } }
public int GetRousourceTotalCap() { int sum = 0; foreach (var pair in mItemInfoMap) { NItemInfo info = pair.Value; ITEM_RES config = GetItemDataByConfigID(info.configID); if (config == null) { Debug.Log(string.Format("item configID= {0} missing", info.configID)); continue; } sum += config.StorUnit * info.number; } return(sum); }
void InitView() { NItemInfo info = itemPackage.GetSelectionItem(); ITEM_RES configData = itemPackage.GetItemDataByConfigID(info.configID); nameLabel.text = configData.MinName; numLabel.text = info.number.ToString(); descLabel.text = configData.Desc; iconSprite.spriteName = configData.IconName; if (configData.IfAvailable == 1) { ShowEffect(configData.Id); } else { tableView.DataCount = 0; tableView.TableChange(); } }
void InitView(NDictionary data = null) { configID = itemPackage.GetSelectionItemConfigID(); isBuy = data.Value <bool>("isbuy"); ITEM_RES config = itemPackage.GetItemDataByConfigID(configID); if (isBuy) { titleLabel.text = string.Format("购买 {0}", config.MinName); double price = itemPackage.GetItemPrice(configID); double curGold = itemPackage.GetGoldNumber(); double tax = itemPackage.GetTaxRate(); itemCap = Mathf.Min(itemPackage.GetBuyLimit(configID), (int)(curGold / (price * (1 + tax)))); btnLabel.text = "购买"; } else { NItemInfo info = itemPackage.GetItemInfo(configID); titleLabel.text = string.Format("出售 {0}", config.MinName); itemCap = info.number; if (itemCap <= 0) { ITEM_RES test = itemPackage.GetItemDataByConfigID(info.configID); print(string.Format("{0}'s number is zero", test.MinName)); } btnLabel.text = "出售"; } if (config.GoldConv >= 1000) { ratio = 1; } else { ratio = 1000 / config.GoldConv; } itemCap = AdjustCap(ratio, itemCap); value = 0; slider.value = 0f; slider.numberOfSteps = (int)Mathf.Ceil((float)itemCap / (float)ratio) + 1; UpdateValueView(); }
public override void DrawCell(int i, int index, int count = 0) { base.DrawCell(i, index, count); int dataCount = mIndex; List <NItemInfo> itemInfoList = itemPackage.GetItemFilterInfoList(); info = itemInfoList[dataCount]; var itemDataMap = ConfigDataStatic.GetConfigDataTable("ITEM_RES"); if (!itemDataMap.ContainsKey(info.configID)) { Debug.Log(string.Format("item configID={0} cant find config", info.configID)); return; } ITEM_RES itemConfigData = itemDataMap[info.configID] as ITEM_RES; nameLabel.text = itemConfigData.MinName; numLabel.text = GlobalFunction.NumberFormat(info.number); iconSprite.spriteName = itemConfigData.IconName; }
void RefreshItemInfo() { int selectionConfigID = itemPackage.GetSelectionItemConfigID(); if (selectionConfigID == 0) { taxLabel.text = ""; nameLabel.text = ""; cdTimeLabel.text = ""; return; } var dataList = ConfigDataStatic.GetConfigDataTable("ITEM_RES"); if (!dataList.ContainsKey(selectionConfigID)) { Debug.Log(string.Format("ITEM_RES config={0} missing", selectionConfigID)); return; } ITEM_RES itemConfig = dataList[selectionConfigID] as ITEM_RES; taxLabel.text = string.Format("当前中间人费用{0}%", itemPackage.GetTaxRate() * 100); nameLabel.text = string.Format("{0}近3日价格", itemConfig.MinName); priceLabel.text = string.Format("当前价格: {0}", itemPackage.GetItemPrice(selectionConfigID).ToString("0.00")); //set buy & sell button NItemInfo info = itemPackage.GetItemInfo(itemPackage.GetSelectionItemConfigID()); //PURCHASE_LIM limConfig = ConfigDataStatic.GetConfigDataTable("PURCHASE_LIM")[userPackage.GetPlayerLevel()] as PURCHASE_LIM; if (info == null || info.number <= 0) { sellBtn.isEnabled = false; } else { sellBtn.isEnabled = true; } RefreshBuyLimit(); RefreshGraph(); }
public int GetBuyLimit(int configID) { UserPackage userPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage; ITEM_RES configData = GetItemDataByConfigID(configID); var dataMap = ConfigDataStatic.GetConfigDataTable("PURCHASE_LIM"); int boughtNum; if (!mItemServerData.ContainsKey(configID)) { boughtNum = 0; } else { boughtNum = mItemServerData[configID].boughtNum; } Type type = Type.GetType("com.nkm.framework.resource.data.PURCHASE_LIM"); string key = configData.KeyName; if (key.Length <= 1) { key = key.ToUpper(); } else { key = char.ToUpper(key[0]) + key.Substring(1); } PropertyInfo valInfo = type.GetProperty(key); int res = (int)valInfo.GetValue(dataMap[userPackage.GetPlayerLevel()], null) - boughtNum; if (res > 0) { return(res); } else { return(0); } }
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(); }
void ShowCost(BUILDING configData) { int count = 0; //show gold & elec if (configData.GoldCost > 0) { int costNum = configData.GoldCost; double curNum = itemPackage.GetGoldNumber(); costCellList[count].title.text = "黄金消耗: "; costCellList[count].value.text = string.Format("{0} / {1}", GlobalFunction.NumberFormat(costNum), GlobalFunction.NumberFormat(curNum)); costCellList[count].go.SetActive(true); if ((double)costNum > curNum) { costCellList[count].title.color = Color.red; costCellList[count].value.color = Color.red; } else { costCellList[count].title.color = Color.white; costCellList[count].value.color = Color.white; } count++; } if (configData.ElecCost > 0) { int costNum = configData.ElecCost; double curNum = itemPackage.GetElecNumber(); costCellList[count].title.text = "电力消耗: "; costCellList[count].value.text = string.Format("{0} / {1}", GlobalFunction.NumberFormat(costNum), GlobalFunction.NumberFormat(curNum)); costCellList[count].go.SetActive(true); if ((double)costNum > curNum) { costCellList[count].title.color = Color.red; costCellList[count].value.color = Color.red; } else { costCellList[count].title.color = Color.white; costCellList[count].value.color = Color.white; } count++; } for (int i = 0; i < configData.CostTableCount; i++) { int itemConfigId = configData.GetCostTable(i).CostId; if (itemConfigId == 0) { continue; } int num = configData.GetCostTable(i).CostQty; ITEM_RES itemData = itemPackage.GetItemDataByConfigID(itemConfigId); NItemInfo itemInfo = itemPackage.GetItemInfo(itemConfigId); int curNum = itemInfo == null ? 0 : itemInfo.number; costCellList[count].title.text = itemData.MinName + ": "; costCellList[count].value.text = string.Format("{0} / {1}", num.ToString(), curNum); costCellList[count].go.SetActive(true); if (itemInfo == null || itemInfo.number < num) { costCellList[count].title.color = Color.red; costCellList[count].value.color = Color.red; } else { costCellList[count].title.color = Color.white; costCellList[count].value.color = Color.white; } count++; } for (; count < 5; count++) { costCellList[count].go.SetActive(false); } }
public override void DrawCell(int index, int count = 0) { base.DrawCell(index, count); var dataList = sanctuaryPackage.GetBuildingCostList(); NCostDef cost = dataList[index]; bool isEnough = true; if (cost.configID == 1) { nameLabel.text = string.Format("庄园等级限制:"); valueLabel.text = string.Format("{0}/{1}", cost.value, userPackage.GetManorLevel()); if (userPackage.GetManorLevel() < cost.value) { isEnough = false; } } else if (cost.configID == 2) { nameLabel.text = string.Format("黄金:"); valueLabel.text = string.Format("{0}/{1}", cost.value, GlobalFunction.NumberFormat(itemPackage.GetGoldNumber())); if (itemPackage.GetGoldNumber() < cost.value) { isEnough = false; } } else if (cost.configID == 3) { nameLabel.text = string.Format("电力:"); valueLabel.text = string.Format("{0}/{1}", cost.value, GlobalFunction.NumberFormat(itemPackage.GetElecNumber())); if (itemPackage.GetElecNumber() < cost.value) { isEnough = false; } } else { ITEM_RES itemData = itemPackage.GetItemDataByConfigID(cost.configID); if (itemData == null) { return; } nameLabel.text = string.Format("{0}:", itemData.MinName); NItemInfo itemInfo = itemPackage.GetItemInfo(cost.configID); if (itemInfo == null) { valueLabel.text = string.Format("{0}/{1}", cost.value, 0); isEnough = false; } else { valueLabel.text = string.Format("{0}/{1}", cost.value, GlobalFunction.NumberFormat(itemInfo.number)); if (itemInfo.number < cost.value) { isEnough = false; } } } if (isEnough) { nameLabel.color = Color.white; valueLabel.color = Color.white; } else { nameLabel.color = Color.red; valueLabel.color = Color.red; } }