Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    //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);
            }
        }
    }
Exemplo n.º 5
0
    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));
        }
    }
Exemplo n.º 6
0
    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()));
        }
    }
Exemplo n.º 7
0
    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;
        }
    }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 9
0
    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();
        }
    }
Exemplo n.º 10
0
    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();
    }
Exemplo n.º 11
0
    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;
    }
Exemplo n.º 12
0
    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();
    }
Exemplo n.º 13
0
    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);
        }
    }
Exemplo n.º 14
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();
    }
Exemplo n.º 15
0
    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);
        }
    }
Exemplo n.º 16
0
    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;
        }
    }