/// <summary>
    /// 进度条刷新
    /// </summary>
    private void UpdateTime()
    {
        if (IsUpdateTime)
        {
            if (m_Needtime <= 0)
            {
                IsUpdateTime = false;
            }
            IsUpdateTime = true;
            m_Needtime--;
            float prog = m_MaxTime <= 0 ? 0 : (m_MaxTime - m_Needtime) / (float)m_MaxTime;
            if (prog >= 1)
            {
                m_ProgressRootImage.fillAmount = 0;
            }
            m_Progress = prog;
            string str = TimeUtil.GetTimeStr((long)m_Needtime);
            m_BlueprintStateLabel.text     = string.Format(TableUtil.GetLanguageString("production_title_1058"), str);
            m_ProgressRootImage.fillAmount = m_Progress;
            ProduceInfoVO gird = null;
            if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_TID, out gird))
            {
                gird.BluePrintState = prog >= 1 ? ProduceState.Finsh : gird.BluePrintState;
                gird.Progress       = prog;

                if (gird.BluePrintState == ProduceState.Finsh)
                {
                    RefreshData(1f, ProduceState.Finsh);
                    GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUT_UPDATE, gird.BluePrintState);
                }
            }
        }
    }
    protected override void OnCellRenderer(int groupIndex, int cellIndex, object cellData, RectTransform cellView, bool selected)
    {
        UIViewListLayout style = State.GetPageLayoutStyle(State.GetPageIndex());

        Animator      animator = cellView.GetComponent <Animator>();
        RectTransform content  = FindComponent <RectTransform>(cellView, "Content");

        if (animator)
        {
            animator.SetBool("IsOn", selected);
        }

        int           page   = groupIndex;
        int           index  = cellIndex;
        ProduceInfoVO infoVO = (ProduceInfoVO)cellData;

        cellView.name = infoVO.TID.ToString();
        ProduceElelment m_ProduceElelmentNew = cellView.GetComponent <ProduceElelment>();

        if (m_ProduceElelmentNew == null)
        {
            m_ProduceElelmentNew = cellView.gameObject.AddComponent <ProduceElelment>();
            m_ProduceElelmentNew.Initialize();
        }
        m_ProduceElelmentNew.SetData(infoVO, m_CurrentType, style);
        infoVO.Elelment = m_ProduceElelmentNew;
    }
 /// <summary>
 /// 空格键按下 领取
 /// </summary>
 public void OnRevecie(HotkeyCallback callbackContext)
 {
     if (callbackContext.started)
     {
         if (m_SelectProduceTid > 0)
         {
             m_ProducingTid = m_SelectProduceTid;
             if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_SelectProduceTid, out ProduceInfoVO girdInfo))
             {
                 if (girdInfo.BluePrintState == ProduceState.Finsh)
                 {
                     ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(girdInfo.TID);
                     if (foundryMember != null)
                     {
                         Receive(foundryMember.TID);
                     }
                 }
                 if (girdInfo.BluePrintState == ProduceState.CanProduce)
                 {
                     Make(girdInfo.TID);
                 }
             }
         }
     }
 }
    private void OnSelectionDataChanged(object obj)
    {
        if (!m_Discard)
        {
            SetHotKeyEnabled(UIAction.Product_ProduceAndCollect, false, 0, false);
        }

        if (obj is ProduceInfoVO)
        {
            ProduceInfoVO item = obj as ProduceInfoVO;
            m_SelectProduceTid = item.TID;
            if (m_OldProduceTid != m_SelectProduceTid)
            {
                m_OldProduceTid = m_SelectProduceTid;
            }
            if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_SelectProduceTid, out ProduceInfoVO girdInfo))
            {
                RefreshHotKey(girdInfo.BluePrintState);
            }
        }
        else
        {
            m_SelectProduceTid = 0;
            if (m_OldProduceTid != m_SelectProduceTid)
            {
                m_OldProduceTid = m_SelectProduceTid;
            }
            SetHotKeyEnabled(UIAction.Product_ProduceAndCollect, false, 0, false);
            SetHotKeyEnabled(UIAction.Product_Cancel, false, 0, false);
        }
    }
    /// <summary>
    /// //立即完成
    /// </summary>
    /// <param name="TID">TID</param>
    private void OnSpeedBack(int TID)
    {
        Debug.Log("立即完成 返回" + TID);

        ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryById(TID);

        if (foundryMember == null)
        {
            return;
        }
        float progress = 0;

        if (foundryMember.EndTime > foundryMember.StartTime && foundryMember.SpendTime >= 0)
        {
            progress = (float)foundryMember.SpendTime / (foundryMember.EndTime - foundryMember.StartTime);
        }
        m_FoundryProxy.SetGirdDataInfo(foundryMember.TID, ProduceState.Finsh, progress); //蓝图生产状态  0,不可生产,1 生产中,2可生产 3 生产完成
        ProduceInfoVO girdInfo = null;

        if (m_FoundryProxy.GetBluePrintDic().TryGetValue(foundryMember.TID, out girdInfo))
        {
            if (girdInfo.Elelment)
            {
                girdInfo.Elelment.RefreshData(girdInfo.Progress, girdInfo.BluePrintState);
            }
            RefreshHotKey(girdInfo.BluePrintState);
            //UpdateTips(TID);
        }
    }
    /// <summary>
    /// //制作返回
    /// </summary>
    /// <param name="TID">实例ID</param>
    private void OnBuildBack(int TID)
    {
        Debug.Log("制作返回   = " + TID);
        ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryById(TID);

        if (foundryMember == null)
        {
            return;
        }
        bool         finshed  = foundryMember.StartTime + foundryMember.SpendTime >= foundryMember.EndTime;
        ProduceState state    = finshed ? ProduceState.Finsh : ProduceState.Producing;
        float        progress = 0;

        if (foundryMember.EndTime > foundryMember.StartTime && foundryMember.SpendTime >= 0)
        {
            progress = (float)foundryMember.SpendTime / (foundryMember.EndTime - foundryMember.StartTime);
        }
        m_FoundryProxy.SetGirdDataInfo(foundryMember.TID, state, progress);      //蓝图生产状态    0,不可生产,1 生产中,2可生产 3 生产完成
        if (m_FoundryProxy.GetBluePrintDic().TryGetValue(foundryMember.TID, out ProduceInfoVO girdInfo))
        {
            if (girdInfo.Elelment)
            {
                girdInfo.Elelment.RefreshData(girdInfo.Progress, girdInfo.BluePrintState);
            }
            RefreshHotKey(girdInfo.BluePrintState);
            //UpdateTips(TID);
        }
    }
 /// <summary>
 /// 填充数据
 /// </summary>
 public void SetData(ProduceInfoVO infoVO, ProduceType produceType, UIViewListLayout style = UIViewListLayout.Row)
 {
     if (infoVO.TID > 0)
     {
         m_Style          = style;
         m_TID            = infoVO.TID;
         m_ProduceType    = produceType;
         m_CurrentItem    = m_FoundryProxy.GetItemByProduceKey(m_TID);
         m_CurrentProduce = m_FoundryProxy.GetProduceByKey(m_TID);
         m_ProduceInfoVO  = infoVO;
         RefreshData(infoVO.Progress, infoVO.BluePrintState);
         SetContent();
     }
 }
    /// <summary>
    /// 取消生产按键回调
    /// </summary>
    private void CanelProduceCallBack()
    {
        ProduceInfoVO girdInfo = null;

        if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_SelectProduceTid, out girdInfo))
        {
            if (girdInfo.BluePrintState == ProduceState.Producing)
            {
                ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(girdInfo.TID);
                if (foundryMember != null)
                {
                    Cancel(foundryMember.TID);
                }
            }
        }
    }
    /// <summary>
    /// 接收产品返回
    /// </summary>
    /// <param name="TID"></param>
    private void OnReceiveBack(int TID)
    {
        Debug.Log("领取返回   = " + TID);
        m_FoundryProxy.BeCanProduce(TID);
        ProduceInfoVO girdInfo = null;

        if (m_FoundryProxy.GetBluePrintDic().TryGetValue(TID, out girdInfo))
        {
            if (girdInfo.Elelment)
            {
                girdInfo.Elelment.RefreshData(girdInfo.Progress, girdInfo.BluePrintState);
            }
            RefreshHotKey(girdInfo.BluePrintState);
            //UpdateTips(TID);
        }
    }
    /// <summary>
    /// 获取加速需要多少钱
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public long GetNeedGlod(int id)
    {
        long          needCout      = 0;
        ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(id);
        float         factorValue   = m_CfgEternityProxy.GetGamingConfig(1).Value.Produce.Value.FinishExpenseRate;
        float         maxTime       = foundryMember.EndTime - foundryMember.StartTime;
        float         needtime      = foundryMember.EndTime - foundryMember.StartTime - foundryMember.SpendTime;

        if ((needtime - HOLD_TIME) > SECOND)
        {
            needCout = (needtime - HOLD_TIME) % SECOND == 0 ? (long)((needtime - HOLD_TIME) / SECOND) : (long)((needtime - HOLD_TIME) / SECOND + 1);
            needCout = (long)(needCout * m_ExpendNumber);
        }
        else
        {
            needCout = (long)m_ExpendNumber;
        }
        return(needCout);
    }
    /// <summary>
    /// 生产按键回调
    /// </summary>
    private void ProduceCallBack()
    {
        if (m_SelectProduceTid > 0)
        {
            ProduceInfoVO girdInfo = null;

            if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_SelectProduceTid, out girdInfo))
            {
                if (girdInfo.BluePrintState == ProduceState.CanProduce)// 蓝图生产状态    0,不可生产,1 生产中,2可生产 3 生产完成
                {
                    // Make(girdInfo.TID);
                }
                if (girdInfo.BluePrintState == ProduceState.Finsh)
                {
                    ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(girdInfo.TID);
                    if (foundryMember != null)
                    {
                        //Receive(foundryMember.TID);
                    }
                }
                if (girdInfo.BluePrintState == ProduceState.Producing)
                {
                    ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(girdInfo.TID);
                    if (foundryMember != null)
                    {
                        if (BeSpeedUpByMoney(foundryMember.TID))
                        {
                            ImmediatelyFinish(foundryMember.TID);
                        }
                        else
                        {
                            Debug.Log("加速货币不够");
                        }
                    }
                }
            }
            else
            {
                Debug.LogWarning("操作违法" + m_SelectProduceTid);
            }
        }
    }
Beispiel #12
0
 /// <summary>
 /// 设置蓝图状态信息
 /// </summary>
 /// <param name="uId">实例id</param>
 /// <param name="tId">蓝图id</param>
 /// <param name="num">蓝图数量</param>
 /// <param name="state">蓝图状态</param>
 /// <param name="progress">蓝图进度</param>
 /// <param name="active">是否激活</param>
 public void SetGirdDataInfo(int tId, ProduceState state, float progress = 0, bool active = true)
 {
     if (!GetBluePrintDic().ContainsKey(tId))
     {
         ProduceInfoVO girdInfo = new ProduceInfoVO();
         girdInfo.TID            = tId;
         girdInfo.MItem          = GetItemByProduceKey(tId);
         girdInfo.MProduce       = GetItemByKey((uint)tId);
         girdInfo.BluePrintState = state;
         girdInfo.Progress       = progress;
         GetBluePrintDic().Add(tId, girdInfo);
         girdInfo.Active = active;
     }
     else
     {
         ProduceInfoVO girdInfo = GetBluePrintDic()[tId];
         girdInfo.Progress       = progress;
         girdInfo.BluePrintState = state;
         girdInfo.Active         = active;
     }
 }
 /// <summary>
 /// 获取生产时间
 /// </summary>
 /// <param name="finish"> 生产状态是否为完成</param>
 private void GetProduceTime(ProduceState state)
 {
     if (state == ProduceState.Producing)
     {
         ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(m_TID);
         if (foundryMember == null)
         {
             IsUpdateTime = false;
             return;
         }
         m_MaxTime  = foundryMember.EndTime - foundryMember.StartTime;
         m_Needtime = foundryMember.EndTime - foundryMember.StartTime - foundryMember.SpendTime;
         if (m_Needtime <= 0 || m_MaxTime <= 0)
         {
             return;
         }
         IsUpdateTime = true;
     }
     else
     {
         IsUpdateTime = false;
         if (state == ProduceState.CanNotProduce)
         {
             m_BlueprintStateLabel.text = TableUtil.GetLanguageString("production_title_1060");
         }
         else if (state == ProduceState.CanProduce)
         {
             m_BlueprintStateLabel.text = TableUtil.GetLanguageString("production_title_1061");
         }
         else if (state == ProduceState.Finsh)
         {
             m_BlueprintStateLabel.text = TableUtil.GetLanguageString("production_title_1059");
         }
         else if (state == ProduceState.Have)
         {
             m_BlueprintStateLabel.text = TableUtil.GetLanguageString("production_text_1045");
         }
     }
 }
Beispiel #14
0
    /// <summary>
    /// 添加服务器生产中或生产完成的数据
    /// </summary>
    /// <param name="tid">蓝图id</param>
    /// <param name="startTime">开始时间</param>
    /// <param name="endTime">结束时间</param>
    /// <param name="spendTime">花费时间</param>
    /// <param name="isFinish">是否完成</param>
    public void AddMember(int tid, ulong startTime, ulong endTime, ulong spendTime, bool isFinish)
    {
        ProduceInfoVO item = new ProduceInfoVO();

        item.TID       = tid;
        item.StartTime = startTime;
        item.EndTime   = endTime;
        item.SpendTime = spendTime;
        item.MItem     = GetItemByProduceKey(tid);
        item.MProduce  = GetItemByKey((uint)tid);
        //item.RelatedType = GetCfgItemListProxy().GetDrawingVOByKey(tid).RelatedType;

        if (!m_ServerBluePrintDic.ContainsKey(tid))
        {
            m_ServerBluePrintDic.Add(tid, item);
        }
        if (isFinish)
        {
            item.SpendTime = item.EndTime - item.StartTime;
        }
        AddListener();
    }
    /// <summary>
    /// server 生产接收返回
    /// </summary>
    /// <param name="buf"></param>
    private void OnFoundryReceive(KProtoBuf buf)
    {
        S2C_FOUNDRY_RECEIVE_BACK msg = buf as S2C_FOUNDRY_RECEIVE_BACK;
        //奖励面板
        ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryById(msg.itemTid);

        if (foundryMember == null)
        {
            return;
        }
        //var drawVO = (GameFacade.Instance.RetrieveProxy(ProxyName.CfgItemListProxy) as CfgItemListProxy).GetDrawingVOByKey((int)foundryMember.TID);
        //if (drawVO.ByteBuffer == null)
        //{
        //	return;
        //}
        //to do 奖励面板确定是否要
        m_FoundryProxy.RemoveMember(msg.itemTid);
        MsgProduct msgProduct = MessageSingleton.Get <MsgProduct>();

        msgProduct.itemTID = msg.itemTid;
        msgProduct.msg     = NotificationName.MSG_FOUNDRY_RECEIVE;
        GameFacade.Instance.SendNotification(NotificationName.MSG_FOUNDRY_UPDATE, msgProduct);
    }
    /// <summary>
    /// 空格键按下  生产 加速 领取
    /// </summary>
    /// <param name="callbackContext">参数</param>
    public void OnProduce(HotkeyCallback callbackContext)
    {
        if (callbackContext.started)
        {
            if (!m_HoldProduceDown)
            {
                m_HoldProduceDown = true;
                if (m_SelectProduceTid > 0)
                {
                    m_ProducingTid = m_SelectProduceTid;
                    if (m_FoundryProxy.GetBluePrintDic().TryGetValue(m_SelectProduceTid, out ProduceInfoVO girdInfo))
                    {
                        //if (girdInfo.BluePrintState == ProduceState.CanProduce)
                        //{
                        //    MsgProduceConfim msgProduceConfim = new MsgProduceConfim();
                        //    msgProduceConfim.OrderType = ProduceOrder.Produce;
                        //    msgProduceConfim.Tid = m_SelectProduceTid;
                        //    GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDER, msgProduceConfim);
                        //}

                        if (girdInfo.BluePrintState == ProduceState.Producing)
                        {
                            ProduceInfoVO foundryMember = m_FoundryProxy.GetFoundryMemberByTID(girdInfo.TID);
                            if (foundryMember != null)
                            {
                                MsgProduceConfim msgProduceConfim = new MsgProduceConfim();
                                msgProduceConfim.OrderType = ProduceOrder.SpeedUp;
                                msgProduceConfim.Tid       = m_SelectProduceTid;
                                msgProduceConfim.ExpendNum = GetNeedGlod(m_SelectProduceTid);
                                GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDER, msgProduceConfim);
                            }
                            else
                            {
                                Debug.Log("fuwuqi不包含");
                            }
                        }
                    }
                    else
                    {
                        Debug.Log("不包含");
                    }
                }
                WwiseUtil.PlaySound((int)WwiseMusic.Music_Production_began, false, null);
            }
            if (m_ProducingTid == m_SelectProduceTid && !m_Discard)
            {
                GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDE_SHOW);
                float progress = (float)((callbackContext.time - callbackContext.startTime) / callbackContext.duration);
                if (m_ProduceView.GetDownProgressImage() != null)
                {
                    m_ProduceView.GetDownProgressImage().fillAmount = progress;
                }

                float repc = progress * m_SoundRtpcOffet;
                WwiseManager.SetParameter(WwiseRtpc.Rtpc_UI_Hotkey, repc);
            }
            else
            {
                GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDE_RRETRIEVE);
                m_Discard = true;
                WwiseUtil.PlaySound((int)WwiseMusic.Music_Production_ToCancel, false, null);
            }
        }
        if (callbackContext.performed && m_ProducingTid == m_SelectProduceTid && !m_Discard)
        {
            GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDE_RRETRIEVE);
            ProduceCallBack();
            m_HoldProduceDown = false;
            WwiseUtil.PlaySound((int)WwiseMusic.Music_Production_end, false, null);
        }
        if (callbackContext.cancelled)
        {
            GameFacade.Instance.SendNotification(NotificationName.MSG_PRODUCE_ORDE_RRETRIEVE);
            m_Discard         = false;
            m_HoldProduceDown = false;
            WwiseUtil.PlaySound((int)WwiseMusic.Music_Production_ToCancel, false, null);
        }
    }