Ejemplo n.º 1
0
    public void CalcTaskPrgs(PlayerData pd, int rid)
    {
        TaskRewardData trd   = TaskSys.instance.GetTaskRewardData(pd, rid);
        TaskRewardCfg  trcfg = CfgSvc.Instance.GetTaskRewardCfg(rid);

        if (trd.prgs < trcfg.count)
        {
            trd.prgs += 1;
            CalcTaskArr(pd, trd);

            ServerSession session = CacheSvc.Instance.GetServerSessionByID(pd.id);
            if (session != null)
            {
                GameMsg msg = new GameMsg
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs
                    {
                        taskArr = pd.taskArr
                    }
                };

                session.SendMsg(msg);
            }
        }
    }
Ejemplo n.º 2
0
    public void RefreshUI(TaskRewardCfg trf, TaskRewardData trc)
    {
        rewardID     = trf.ID;
        txtName.text = trf.taskName;
        txtExp.text  = trf.exp.ToString();
        txtCoin.text = "金币 " + trf.coin.ToString();
        txtPrg.text  = trc.progress + "/" + trf.count;
        float pec = trc.progress * 1.0f / trf.count;

        proVal.fillAmount = pec;
        bool taked = trc.taked;

        if (taked == false)
        {
            compTrans.gameObject.SetActive(false);
            if (trf.count != trc.progress)
            {
                takeBtn.interactable = false;
            }
            else
            {
                takeBtn.interactable = true;
            }
        }
        else
        {
            takeBtn.interactable = false;
            compTrans.gameObject.SetActive(true);
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 更新玩家数据的任务进度
    /// </summary>
    /// <param name="pd">玩家数据</param>
    /// <param name="tid">进度id</param>
    public void CalcTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);      //获得玩家当前任务信息
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfgData(tid); //获得任务模板

        if (trd.prgs < trc.count)
        {
            //更新任务进度
            trd.prgs++;
            CalcUpdatePlayerTaskArr(pd, trd);

            ServerSession session = cacheSvc.GetOnlineServerSession(pd.id);
            if (session != null)
            {
                session.SendMsg(
                    new GameMsg
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs
                    {
                        taskArr = pd.taskArr
                    }
                }
                    );
            }
        }
    }
Ejemplo n.º 4
0
    public void CalcTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);


        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;

            //更新任务进度
            CalcTaskArr(pd, trd);

            ServerSession session = cacheSvc.GetOnlineServerSession(pd.id);
            if (session != null)
            {
                session.SendMsg(new GameMsg()
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs()
                    {
                        taskArr = pd.taskArr
                    }
                });
            }
        }
    }
Ejemplo n.º 5
0
    public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);

        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;
            // 更新任务进度
            CalcTaskArr(pd, trd);

            return(new PshTaskPrgs
            {
                taskArr = pd.taskArr
            });

            //ServerSession session = cacheSvc.GetOnlineServerSessions(pd.id);
            //if (session != null)
            //{
            //    session.SendMsg(new GameMsg
            //    {
            //        cmd = (int)CMD.PshTaskPrgs,
            //        pshTaskPrgs = new PshTaskPrgs
            //        {
            //            taskArr = pd.taskArr
            //        }
            //    });
            //}
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 6
0
    public void RefreshUI()
    {
        curTaskDataList.Clear();
        verticalScrollBar.GetComponent <Scrollbar>().value = 1;
        for (int i = 0; i < itemGroupTrans.childCount; i++)
        {
            Destroy(itemGroupTrans.GetChild(i).gameObject);
        }

        List <TaskRewardData> todoList     = new List <TaskRewardData>();
        List <TaskRewardData> waitDoneList = new List <TaskRewardData>();
        List <TaskRewardData> doneList     = new List <TaskRewardData>();

        for (int i = 0; i < playerData.taskArr.Length; i++)
        {
            string[]       taskInfo = playerData.taskArr[i].Split('|');
            TaskRewardData data     = new TaskRewardData
            {
                ID       = int.Parse(taskInfo[0]),
                progress = int.Parse(taskInfo[1]),
                taked    = taskInfo[2].Equals("1"),
            };

            if (data.taked == false)
            {
                if (data.progress == resSvc.GetTaskRewardCfg(data.ID).count)
                {
                    waitDoneList.Add(data);
                }
                else
                {
                    todoList.Add(data);
                }
            }
            else
            {
                doneList.Add(data);
            }
        }


        //将未完成任务、待领取任务与已完成任务按顺序加入列表
        curTaskDataList.AddRange(waitDoneList);
        curTaskDataList.AddRange(todoList);
        curTaskDataList.AddRange(doneList);
        for (int j = 0; j < curTaskDataList.Count; j++)
        {
            GameObject itemTask = resSvc.LoadPrefab(PathDefine.ItemTaskPrefab);
            itemTask.transform.SetParent(itemGroupTrans);
            itemTask.transform.localPosition = Vector3.zero;
            itemTask.transform.localScale    = Vector3.one;
            itemTask.name = "itemTask_" + j;

            TaskRewardData data = curTaskDataList[j];
            TaskRewardCfg  trf  = resSvc.GetTaskRewardCfg(data.ID);
            itemTask.GetComponent <ItemTask>().RefreshUI(trf, data);
        }
    }
Ejemplo n.º 7
0
    private void LoadAssetSucessCallBack(string assetName, object asset, float duration, object userData)
    {
        GameObject go    = asset as GameObject;
        int        index = -1;

        if (!go || !int.TryParse(userData.ToString(), out index))
        {
            Debug.LogError("Sprite:" + assetName + "资源不存在");
        }
        else
        {
            go = Instantiate(go);
            go.transform.SetParent(scrollTrans);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = Vector3.one;
            go.name = "taskItem_" + index;

            TaskRewardData trd = trdLst[index];
            TaskRewardCfg  trf = GameEntry.Res.GetTaskRewardCfg(trd.ID);

            SetText(GetTrans(go.transform, "txtName"), trf.taskName);
            SetText(GetTrans(go.transform, "txtPrg"), trd.prgs + "/" + trf.count);
            SetText(GetTrans(go.transform, "txtExp"), "奖励:    经验" + trf.exp);
            SetText(GetTrans(go.transform, "txtCoin"), "金币" + trf.coin);
            Image imgPrg = GetTrans(go.transform, "prgBar/prgVal").GetComponent <Image>();
            float prgVal = trd.prgs * 1.0f / trf.count;
            imgPrg.fillAmount = prgVal;

            Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>();
            btnTake.onClick.AddListener(() => {
                ClickTakeBtn(go.name);
            });

            Transform transComp = GetTrans(go.transform, "imgComp");
            if (trd.taked)
            {
                btnTake.interactable = false;
                SetActive(transComp);
            }
            else
            {
                SetActive(transComp, false);
                if (trd.prgs == trf.count)
                {
                    btnTake.interactable = true;
                }
                else
                {
                    btnTake.interactable = false;
                }
            }
            GameEntry.Resource.UnloadAsset(asset);
        }
    }
Ejemplo n.º 8
0
    //更新玩家任务进度数据
    public void CalcUpdatePlayerTaskArr(PlayerData pd, TaskRewardData trd)
    {
        string result = trd.id + "|" + trd.prgs + "|" + (trd.taked ? 1 : 0);
        int    index  = 0;

        for (int i = 0; i < pd.taskArr.Length; i++)
        {
            string[] taskInfo = pd.taskArr[i].Split('|');
            if (int.Parse(taskInfo[0]) == trd.id)
            {
                index = i;
                break;
            }
        }
        pd.taskArr[index] = result;
    }
Ejemplo n.º 9
0
        public void CalcTaskArray(PlayerData playerData, TaskRewardData taskData)//更新任务进度数据
        {
            string result = taskData.Id + "|" + taskData.Prangs + "|" + (taskData.Tasked ? 1 : 0);
            int    index  = -1;

            for (int i = 0; i < playerData.TaskArray.Length; i++)
            {
                string[] taskInfo = playerData.TaskArray[i].Split('|');
                if (int.Parse(taskInfo[0]) == taskData.Id)
                {
                    index = i;
                    break;
                }
            }
            playerData.TaskArray[index] = result;
        }
Ejemplo n.º 10
0
    public void CalcTaskArr(PlayerData pd, TaskRewardData trd)
    {
        string result = trd.ID + "|" + trd.prgs + '|' + (trd.taked ? 1 : 0);
        int    index  = -1;

        for (int i = 0; i < pd.TaskArr.Count; i++)
        {
            string[] taskinfo = pd.TaskArr[i].Split('|');
            if (int.Parse(taskinfo[0]) == trd.ID)
            {
                index = i;
                break;
            }
        }
        pd.TaskArr[index] = result;
    }
Ejemplo n.º 11
0
    public void ReqTaskReward(MsgPack msgPack)
    {
        ReqTaskReward data = msgPack.msg.reqTaskReward;
        GameMsg       msg  = new GameMsg()
        {
            cmd = (int)CMD.RspTaskReward
        };


        PlayerData pd = cacheSvc.GetPlayerDataBySession(msgPack.session);
        //获得任务模板
        TaskRewardCfg trc = cfgSvc.GetTaskRewardCfgData(data.taskId);
        //获得玩家当前任务信息
        TaskRewardData trd = CalcTaskRewardData(pd, data.taskId);

        if ((trd.prgs == trc.count) && (!trd.taked))
        {
            //任务进度完成,且奖励未被领取
            pd.coin += trc.coin;
            PECommon.CalExp(pd, trc.exp);
            trd.taked = true;
            CalcUpdatePlayerTaskArr(pd, trd);

            if (!cacheSvc.UpdataPlayerData(pd.id, pd))
            {
                //数据库写入失败
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspTaskReward = new RspTaskReward
                {
                    coin    = pd.coin,
                    exp     = pd.exp,
                    lv      = pd.lv,
                    taskArr = pd.taskArr
                };
            }
        }
        else
        {
            //客户端数据异常
            msg.err = (int)ErrorCode.ClientDataError;
        }

        msgPack.session.SendMsg(msg);
    }
Ejemplo n.º 12
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = pack.Msg.reqTakeTaskReward;

        GameMsg msg = new GameMsg()
        {
            cmd = (int)CMD.RspTakeTaskReward
        };

        PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.Session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(data.tid);
        TaskRewardData trd = CalcTaskRewardData(pd, data.tid);


        if (trd.prgs == trc.count && !trd.taked)
        {
            pd.coin += trc.coin;
            PECommon.CalcExp(pd, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(pd, trd);

            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward()
                {
                    coin    = pd.coin,
                    lv      = pd.lv,
                    exp     = pd.exp,
                    taskArr = pd.taskArr
                };
                msg.rspTakeTaskReward = rspTakeTaskReward;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.Session.SendMsg(msg);
    }
Ejemplo n.º 13
0
    public void RefreshUI(object sender, GameEventArgs e)
    {
        OnRefreshUIFormEventArgs ne = e as OnRefreshUIFormEventArgs;

        if ((System.Object)sender != this && ne.formId != UIFormId.TaskForm)
        {
            return;
        }
        trdLst.Clear();

        List <TaskRewardData> todoLst = new List <TaskRewardData>();
        List <TaskRewardData> doneLst = new List <TaskRewardData>();

        //1|0|0
        for (int i = 0; i < m_TaskFormData.PlayerData.TaskArr.Count; i++)
        {
            string[]       taskInfo = m_TaskFormData.PlayerData.TaskArr[i].Split('|');
            TaskRewardData trd      = new TaskRewardData {
                ID    = int.Parse(taskInfo[0]),
                prgs  = int.Parse(taskInfo[1]),
                taked = taskInfo[2].Equals("1")
            };

            if (trd.taked)
            {
                doneLst.Add(trd);
            }
            else
            {
                todoLst.Add(trd);
            }
        }

        trdLst.AddRange(todoLst);
        trdLst.AddRange(doneLst);

        for (int i = 0; i < scrollTrans.childCount; i++)
        {
            Destroy(scrollTrans.GetChild(i).gameObject);
        }

        for (int i = 0; i < trdLst.Count; i++)
        {
            GameEntry.Res.LoadPrefab(PathDefine.TaskItemPrefab, LoadAssetSucessCallBack, LoadAssetFailCallBack, i);
        }
    }
Ejemplo n.º 14
0
    public void ReqTakeTaskReward(PackMsg pack)
    {
        ReqTakeTaskReward data    = pack.msg.reqTakeTaskReward;
        ServerSession     session = pack.session;
        GameMsg           msg     = new GameMsg
        {
            cmd = (int)CMD.RspTakeTaskReward,
        };
        int        rewardID   = data.rid;
        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(rewardID);
        TaskRewardData trd = GetTaskRewardData(playerData, rewardID);

        //安全验证
        if (trd.progress == trc.count && !trd.taked)
        {
            playerData.coin += trc.coin;
            PECommon.UpdateExp(playerData, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(playerData, trd);

            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspTakeTaskReward = new RspTakeTaskReward
                {
                    coin    = playerData.coin,
                    exp     = playerData.exp,
                    lv      = playerData.lv,
                    hp      = playerData.hp,
                    taskArr = playerData.taskArr,
                };
                session.SendMsg(msg);
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
    }
Ejemplo n.º 15
0
        public void RequestTaskReward(MsgPack msgPack)
        {
            RequestTask data   = msgPack.Msg.RequestTask;
            NetMsg      netMsg = new NetMsg
            {
                cmd = (int)Command.ResponseTask
            };
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session);

            TaskRewardCfg  taskCfg  = _resCfgSvc.GetTaskData(data.TaskId);
            TaskRewardData taskData = CalcTaskRewardData(playerData, data.TaskId);

            if (taskData.Prangs == taskCfg.Count && !taskData.Tasked)
            {
                playerData.Coin += taskCfg.Coin;
                PeRoot.CalcExp(playerData, taskCfg.Exp);
                playerData.Diamond += taskCfg.Diamond;
                taskData.Tasked     = true;
                CalcTaskArray(playerData, taskData);

                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    ResponseTask responseTask = new ResponseTask
                    {
                        Coin      = playerData.Coin,
                        Level     = playerData.Level,
                        Diamond   = playerData.Diamond,
                        Exp       = playerData.Exp,
                        TaskArray = playerData.TaskArray,
                    };
                    netMsg.ResponseTask = responseTask;
                }
            }
            else
            {
                netMsg.err = (int)ErrorCode.ClientDataError;
            }

            msgPack.Session.SendMsg(netMsg);
        }
Ejemplo n.º 16
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = pack.msg.reqTakeTaskReward;

        GameMsg msg = new GameMsg {
            cmd = (int)CMD.RspTakeTaskReward
        };

        PlayerData     playerData = cacheSvc.GetPlayerDataBySession(pack.session);
        TaskRewardCfg  trc        = cfgSvc.GetTaskRewardCfg(data.rid);
        TaskRewardData trd        = CalcTaskRewardData(playerData, data.rid);

        if (trd.prgs == trc.count && trd.isTakenReward == false)
        {
            playerData.coin += trc.coin;
            Common.CalcExp(playerData, trc.exp);
            trd.isTakenReward = true;

            // 更新任务进度数据
            CalcTaskArr(playerData, trd);

            if (cacheSvc.UpdatePlayerData(playerData.id, playerData) == true)
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward {
                    coin    = playerData.coin,
                    lv      = playerData.lv,
                    exp     = playerData.exp,
                    taskArr = playerData.taskArr
                };

                msg.rspTakeTaskReward = rspTakeTaskReward;
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }
Ejemplo n.º 17
0
    public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);

        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;
            //更新任务进度
            CalcTaskArr(pd, trd);
            PshTaskPrgs pshTaskPrgs = new PshTaskPrgs();
            pshTaskPrgs.TaskArr.SetRepeated <string>(pd.TaskArr);
            return(pshTaskPrgs);
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 18
0
    public void CalcTaskArr(PlayerData playerData, TaskRewardData trd)
    {
        string result = trd.ID + "|" + trd.prgs + "|" + (trd.isTakenReward ? 1 : 0);
        int    index  = -1;

        for (int i = 0; i < playerData.taskArr.Length; i++)
        {
            string[] taskInfo = playerData.taskArr[i].Split('|');

            // 1|0|0
            if (int.Parse(taskInfo[0]) == trd.ID)
            {
                index = i;
                break;
            }
        }

        playerData.taskArr[index] = result;
    }
Ejemplo n.º 19
0
    ////更新任务进度
    //public void CalcTaskProgs(PlayerData pd,int rid)
    //{
    //    TaskRewardData trd = GetTaskRewardData(pd, rid);
    //    TaskRewardCfg trc = cfgSvc.GetTaskRewardCfg(rid);
    //    if(trd.progress < trc.count)
    //    {
    //        trd.progress += 1;
    //    }
    //    CalcTaskArr(pd,trd);

    //    ServerSession session = cacheSvc.GetOnLineServerSession(pd.id);
    //    GameMsg msg = new GameMsg
    //    {
    //        cmd = (int)CMD.PshTaskProgs,
    //        pshTaskProgs = new PshTaskProgs
    //        {
    //            taskArr = pd.taskArr,
    //        }
    //    };
    //    if(session != null)
    //    {
    //        session.SendMsg(msg);
    //    }
    //}

    //更新任务进度
    public PshTaskProgs CalcTaskProgs(PlayerData pd, int rid)
    {
        TaskRewardData trd = GetTaskRewardData(pd, rid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(rid);

        if (trd.progress < trc.count)
        {
            trd.progress += 1;
            CalcTaskArr(pd, trd);

            return(new PshTaskProgs
            {
                taskArr = pd.taskArr,
            });
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 20
0
        public PshTask GetTaskPrangs(PlayerData playerData, int taskId)
        {
            TaskRewardData taskData = CalcTaskRewardData(playerData, taskId);
            TaskRewardCfg  taskCfg  = _resCfgSvc.GetTaskData(taskId);

            if (taskData.Prangs < taskCfg.Count)
            {
                taskData.Prangs += 1;
                CalcTaskArray(playerData, taskData);

                return(new PshTask
                {
                    TaskArray = playerData.TaskArray
                });
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 21
0
    public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);

        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;
            //更新任务进度
            CalcTaskArr(pd, trd);

            return(new PshTaskPrgs {
                taskArr = pd.taskArr
            });
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 22
0
    public void CalcTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);

        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;
            //更新任务进度
            CalcTaskArr(pd, trd);

            ClientSocket session = cacheSvc.GetOnlineServersession(pd.Id);
            if (session != null)
            {
                PshTaskPrgs PshTaskPrgs = new PshTaskPrgs();
                PshTaskPrgs.TaskArr.SetRepeated <string>(pd.TaskArr);
                session.SendMsg(PshTaskPrgs);
            }
        }
    }
Ejemplo n.º 23
0
        public TaskRewardData CalcTaskRewardData(PlayerData playerData, int id)//解析数据
        {
            TaskRewardData data = null;

            foreach (var t in playerData.TaskArray)
            {
                string[] taskInfo = t.Split('|');
                if (int.Parse(taskInfo[0]) == id)
                {
                    data = new TaskRewardData
                    {
                        Id     = int.Parse(taskInfo[0]),
                        Prangs = int.Parse(taskInfo[1]),
                        Tasked = taskInfo[2].Equals("1"),
                    };
                    break;
                }
            }
            return(data);
        }
Ejemplo n.º 24
0
    public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid)
    {
        TaskRewardData trd = null;

        for (int i = 0; i < pd.taskArr.Length; i++)
        {
            string[] taskinfo = pd.taskArr[i].Split('|');
            //1|0|0
            if (int.Parse(taskinfo[0]) == rid)
            {
                trd = new TaskRewardData {
                    ID    = int.Parse(taskinfo[0]),
                    prgs  = int.Parse(taskinfo[1]),
                    taked = taskinfo[2].Equals("1")
                };
                break;
            }
        }
        return(trd);
    }
Ejemplo n.º 25
0
        public void CalcTaskPrangs(PlayerData playerData, int taskId)
        {
            TaskRewardData taskData = CalcTaskRewardData(playerData, taskId);
            TaskRewardCfg  taskCfg  = _resCfgSvc.GetTaskData(taskId);

            if (taskData.Prangs < taskCfg.Count)
            {
                taskData.Prangs += 1;
                CalcTaskArray(playerData, taskData);

                ServerSession session = _cacheSvc.GetOnLineServerSessions(playerData.Id);
                session?.SendMsg(new NetMsg
                {
                    cmd     = (int)Command.PshTask,
                    PshTask = new PshTask
                    {
                        TaskArray = playerData.TaskArray
                    }
                });
            }
        }
Ejemplo n.º 26
0
    //根据rid获取玩家的任务奖励数据
    public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid)
    {
        TaskRewardData trd = null;

        for (int i = 0; i < pd.taskArr.Length; i++)
        {
            string[] taskInfo = pd.taskArr[i].Split('|');
            if (int.Parse(taskInfo[0]) == rid)
            {
                //获得玩家当前任务信息
                trd = new TaskRewardData
                {
                    id    = rid,
                    prgs  = int.Parse(taskInfo[1]),
                    taked = taskInfo[2].Equals("1"),
                };
                break;
            }
        }
        return(trd);
    }
Ejemplo n.º 27
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = (ReqTakeTaskReward)pack.msg;

        SCPacketBase msg = new RspTakeTaskReward();
        PlayerData   pd  = cacheSvc.GetPlayerDataBySession(pack.session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(data.Rid);
        TaskRewardData trd = CalcTaskRewardData(pd, data.Rid);

        if (trd.prgs == trc.count && !trd.taked)
        {
            pd.Coin += trc.coin;
            KDCommon.CalcExp(pd, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(pd, trd);

            if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
            {
                msg.error = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward {
                    Coin = pd.Coin,
                    Lv   = pd.Lv,
                    Exp  = pd.Exp,
                };
                rspTakeTaskReward.TaskArr.SetRepeated <string>(pd.TaskArr);
                msg = rspTakeTaskReward;
            }
        }
        else
        {
            msg.error = (int)ErrorCode.ClientDataError;
        }
        pack.session.SendMsg(msg);
    }
Ejemplo n.º 28
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = pack.msg.reqTakeTaskReward;
        GameMsg           msg  = new GameMsg
        {
            cmd = (int)CMD.RspTakeTaskReward,
        };
        PlayerData     pd    = CacheSvc.Instance.GetPlayerDataBySession(pack.session);
        TaskRewardCfg  trcfg = CfgSvc.Instance.GetTaskRewardCfg(data.rid);
        TaskRewardData trd   = GetTaskRewardData(pd, data.rid);

        if (trd.prgs == trcfg.count && !trd.taked)
        {
            pd.coin += trcfg.coin;
            PECommon.CalcExp(pd, trcfg.exp);
            trd.taked = true;
            CalcTaskArr(pd, trd);

            if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, pack.session))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspTakeTaskReward = new RspTakeTaskReward
                {
                    coin    = pd.coin,
                    exp     = pd.exp,
                    lv      = pd.lv,
                    taskArr = pd.taskArr,
                };
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
        pack.session.SendMsg(msg);
    }
Ejemplo n.º 29
0
    public TaskRewardData CalcTaskRewardData(PlayerData pd, int rid)
    {
        Google.Protobuf.Collections.RepeatedField <string> aabb;
        //Google.Protobuf.Collections.RepeatedField<string> aa = pd.TaskArr;

        TaskRewardData trd = null;

        for (int i = 0; i < pd.TaskArr.Count; i++)
        {
            var      a        = pd.TaskArr;
            string[] taskinfo = pd.TaskArr[i].Split('|');
            //1|0|0
            if (int.Parse(taskinfo[0]) == rid)
            {
                trd = new TaskRewardData {
                    ID    = int.Parse(taskinfo[0]),
                    prgs  = int.Parse(taskinfo[1]),
                    taked = taskinfo[2].Equals("1")
                };
                break;
            }
        }
        return(trd);
    }
Ejemplo n.º 30
0
    //刷新UI
    public void Refresh()
    {
        if (!GetWindowState())
        {
            return;
        }
        m_trdLst.Clear();
        for (int i = 0; i < scrollTrans.childCount; i++)
        {
            Destroy(scrollTrans.GetChild(i).gameObject);
        }

        List <TaskRewardData> todoLst = new List <TaskRewardData>();            //未完成任务
        List <TaskRewardData> doneLst = new List <TaskRewardData>();            //完成任务

        string[] taskArr = m_pd.taskArr;
        for (int i = 0; i < taskArr.Length; i++)
        {
            string[]       taskInfo = m_pd.taskArr[i].Split('|');
            TaskRewardData trd      = new TaskRewardData()
            {
                id    = int.Parse(taskInfo[0]),
                prgs  = int.Parse(taskInfo[1]),
                taked = taskInfo[2].Equals("1")                 //等于1就是完成的任务
            };
            //是否完成
            if (trd.taked)
            {
                doneLst.Add(trd);
            }
            else
            {
                todoLst.Add(trd);
            }
        }

        m_trdLst.AddRange(todoLst);
        m_trdLst.AddRange(doneLst);

        //实例化Prefab并更新它的UI
        for (int i = 0; i < m_trdLst.Count; i++)
        {
            GameObject go = resSvc.LoadPrefab(PathDefine.TaskItemPrefab);
            go.transform.SetParent(scrollTrans);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = Vector3.one;
            go.name = "taskItem_" + m_trdLst[i].id;

            TaskRewardData trd = m_trdLst[i];
            TaskRewardCfg  trc = resSvc.GetTaskrewardCfg(trd.id);

            SetText(GetTrans(go.transform, "txtName"), trc.taskName);
            SetText(GetTrans(go.transform, "txtPro"), trd.prgs + "/" + trc.count);
            SetText(GetTrans(go.transform, "txtExp"), "奖励:      经验" + trc.exp);
            SetText(GetTrans(go.transform, "txtCoin"), "金币" + trc.coin);

            Image imgPrg = GetTrans(go.transform, "prgBarBg/prgBar").GetComponent <Image>();
            float proVal = trd.prgs * 1.0f / trc.count;
            imgPrg.fillAmount = proVal;

            Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>();
            btnTake.onClick.AddListener(() => OnClickTakeBtn(go.name));

            Transform transComp = GetTrans(go.transform, "imgComp");
            if (trd.taked)
            {
                btnTake.interactable = false;
                SetActive(transComp);
            }
            else
            {
                SetActive(transComp, false);
                if (trd.prgs == trc.count)
                {
                    btnTake.interactable = true;
                }
                else
                {
                    btnTake.interactable = false;
                }
            }
        }
    }