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