コード例 #1
0
 /// <summary>
 /// 更新角色属性列表
 /// </summary>
 /// <param name="_rolfInfo"></param>
 public void UpdateRoleInfo(RoleInfoData _rolfInfo)
 {
     using (var session = NHibernateHelper.OpenSession())
     {
         using (var transaction = session.BeginTransaction())
         {
             session.Update(_rolfInfo);
             transaction.Commit();
         }
     }
 }
コード例 #2
0
        /// <summary>
        /// 绑定角色数据
        /// </summary>
        private void BindRoleData()
        {
            lstRoles.Items.Clear();

            DataTable dtRol = _rwm.GetRoleInfo(cbxDepartment.SelectedValue.ToString());

            foreach (DataRow dr in dtRol.Rows)
            {
                RoleInfoData rid = new RoleInfoData();
                rid.BindRowData(dr);

                ListViewItem lvi = lstRoles.Items.Add(rid.角色名称);
                lvi.Tag        = rid.角色ID;
                lvi.ImageIndex = 0;
            }
        }
コード例 #3
0
        /// <summary>
        /// 技能升级
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        /// <param name="peer"></param>
        /// <param name="sendParameters"></param>
        void UpdateSkill(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            Dictionary <byte, object> m_dic = request.Parameters;
            object value;

            response.ReturnCode = (short)ReturnCode.Fail;
            // 客户端传递过来的参数信息:skillid,lv
            if (m_dic.TryGetValue((byte)ParameterCode.SkillInfo, out value))
            {
                string strValue = value.ToString();
                Helper.Log("UpdateSkill:" + strValue);
                string[] pStr1 = strValue.Split(',');
                if (pStr1.Length == 2)
                {
                    int nSkillID           = Helper.IntParse(pStr1[0]);
                    List <SkillData> pList = m_skillMgr.GetSkillBySkillID(nSkillID);
                    if (pList != null && pList.Count > 0)
                    {
                        SkillData data = pList[0];
                        data.Lv = Helper.IntParse(pStr1[1]);
                        // 更新角色金币
                        int                 nNeedGold = data.Lv * 100;
                        RoleData            curRole   = peer.m_curRole;
                        List <RoleInfoData> p         = m_roleMgr.GetRoleData(curRole.Id);
                        if (p != null && p.Count > 0)
                        {
                            RoleInfoData curRoleData = p[0];
                            if (curRoleData.Gold >= nNeedGold && curRole.Lv > data.Lv)
                            {
                                // 客户端金币减少的时候会同步一次,这里不就用同步了
                                //m_roleMgr.UpdateRoleInfo(curRoleData);
                                data.Lv += 1;
                                m_skillMgr.UpdateSkill(data);

                                Helper.Log("UpdateSkill Success:" + data.SkillID);
                                response.ReturnCode = (short)ReturnCode.Success;
                            }
                        }
                    }
                }
            }
            return;
        }
コード例 #4
0
        /// <summary>
        /// 获取角色基础属性
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        /// <param name="peer"></param>
        /// <param name="sendParameters"></param>
        void GetRoleInfo(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            Helper.Log("RoleInfoHandler GetRoleInfo");
            response.ReturnCode = (short)ReturnCode.Fail;
            List <RoleInfoData> pRoleInfo = m_roleinfoMgr.GetRoleData(peer.m_curRole.Id);

            if (pRoleInfo != null && pRoleInfo.Count > 0)
            {
                RoleInfoData roleInfo = pRoleInfo[0];
                // exp,gold,gem,energy,toughen
                string str = "";
                str += roleInfo.Exp + "," + roleInfo.Gold + "," + roleInfo.Gem + "," + roleInfo.Energy + "," + roleInfo.Toughen;
                Dictionary <byte, object> dic = new Dictionary <byte, object>();
                dic.Add((byte)ParameterCode.RoleData, str);
                response.Parameters = dic;
                response.ReturnCode = (short)ReturnCode.Success;
                Helper.Log("GetRoleInfo Success:" + str);
            }
            return;
        }
コード例 #5
0
        /// <summary>
        /// 更新角色基础属性
        /// </summary>
        /// <param name="request"></param>
        /// <param name="response"></param>
        /// <param name="peer"></param>
        /// <param name="sendParameters"></param>
        void UpdateRoleInfo(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            Dictionary <byte, object> m_dic = request.Parameters;
            object value;

            response.ReturnCode = (short)ReturnCode.Fail;
            // 客户端传递过来的参数信息:exp,gold,gem,energy,toughen,name,lv
            if (m_dic.TryGetValue((byte)ParameterCode.RoleData, out value))
            {
                string strValue = value.ToString();
                Helper.Log("UpdateRoleInfo:" + strValue);
                string[] pStr1 = strValue.Split(',');
                if (pStr1.Length == 7)
                {
                    List <RoleInfoData> pList = m_roleinfoMgr.GetRoleData(peer.m_curRole.Id);
                    if (pList != null && pList.Count > 0)
                    {
                        RoleInfoData data = pList[0];
                        data.Exp     = Helper.IntParse(pStr1[0]);
                        data.Gold    = Helper.IntParse(pStr1[1]);
                        data.Gem     = Helper.IntParse(pStr1[2]);
                        data.Energy  = Helper.IntParse(pStr1[3]);
                        data.Toughen = Helper.IntParse(pStr1[4]);
                        m_roleinfoMgr.UpdateRoleInfo(data);

                        // 更新角色名称和等级
                        RoleData curRole = peer.m_curRole;
                        curRole.Name = pStr1[5];
                        curRole.Lv   = Helper.IntParse(pStr1[6]);

                        m_roleMgr.UpdateUser(curRole);

                        Helper.Log("Update RoleInfo:" + data);
                        response.ReturnCode = (short)ReturnCode.Success;
                    }
                }
            }
            return;
        }
コード例 #6
0
        private void NewView(RoleInfoData roleInfoData)
        {
            string groupName = (string.IsNullOrEmpty(roleInfoData.分组标记)) ? "未分组" : roleInfoData.分组标记;

            ListViewGroup lvgCur = GetCurGroup(groupName);

            if (lvgCur == null)
            {
                lvgCur = new ListViewGroup(groupName);
                listView1.Groups.Add(lvgCur);
            }

            ListViewItem itemNew = new ListViewItem(new string[] { roleInfoData.角色名称, groupName }, 0, lvgCur);

            //添加Name属性赋值,否则listView1.Items.Find无法查找
            itemNew.Name = roleInfoData.角色ID;
            itemNew.Tag  = roleInfoData;

            listView1.Items.Add(itemNew);

            listView1.View = View.Details;
        }
コード例 #7
0
        private void butNew_Click(object sender, EventArgs e)
        {
            try
            {
                if (Verify() == false)
                {
                    return;
                }

                RoleInfoData roleData = new RoleInfoData();

                roleData.科室ID = cbxDepartment.SelectedValue.ToString();
                roleData.角色ID = SqlHelper.GetCmpUID();
                roleData.角色名称 = txtRoleName.Text;
                roleData.分组标记 = cbxRoleGroup.Text;

                roleData.角色信息.角色描述 = rtbRoleDescription.Text;
                roleData.角色信息.是否停用 = chkStopUse.Checked;
                roleData.角色信息.创建日期 = DateTime.Now;

                roleData.角色信息.CopyBasePro(roleData);

                _rm.NewRole(roleData);

                NewView(roleData);

                UpdateRoleGroup();

                ButtonHint.Start(sender as Button, "OK");

                //添加成功后,需要定位到添加 的角色
                listView1.Items.Find(roleData.角色ID, false)[0].Selected = true;
            }
            catch (Exception ex)
            {
                MsgBox.ShowException(ex, this);
            }
        }
コード例 #8
0
        private void SyncSelRowData()
        {
            try
            {
                ClearData();

                if (listView1.SelectedItems.Count <= 0)
                {
                    return;
                }

                RoleInfoData roleData = listView1.SelectedItems[0].Tag as RoleInfoData;
                if (roleData == null)
                {
                    MessageBox.Show("未获取到对应的角色信息。", "提示");
                    return;
                }



                txtRoleName.Text = roleData.角色名称;
                txtRoleName.Tag  = roleData.角色ID;

                cbxRoleGroup.Text = roleData.分组标记;

                if (roleData.角色信息 != null)
                {
                    rtbRoleDescription.Text = roleData.角色信息.角色描述;
                    chkStopUse.Checked      = roleData.角色信息.是否停用;
                }
            }
            catch (Exception ex)
            {
                MsgBox.ShowException(ex, this);
            }
        }
コード例 #9
0
        private void BindRoleData()
        {
            //点击刷新,重复加载list列表情况,先清空数据,列名
            listView1.Items.Clear();
            listView1.Columns.Clear();
            DataTable dtBodypart = _rm.GetRoleInfo(cbxDepartment.SelectedValue.ToString());

            foreach (DataColumn dc in dtBodypart.Columns)
            {
                if (("角色名称").IndexOf(dc.Caption) >= 0)
                {
                    ColumnHeader columnHeader = new ColumnHeader();
                    columnHeader.Text  = dc.Caption;
                    columnHeader.Name  = dc.Caption;
                    columnHeader.Width = 200;
                    listView1.Columns.Add(columnHeader);
                }
                //分组标记列宽度设为0,隐藏
                if (("分组标记").IndexOf(dc.Caption) >= 0)
                {
                    ColumnHeader columnHeader = new ColumnHeader();
                    columnHeader.Text  = dc.Caption;
                    columnHeader.Name  = dc.Caption;
                    columnHeader.Width = 0;
                    listView1.Columns.Add(columnHeader);
                }
            }


            DataTable dtGroup = _rm.GetRoleGroups(cbxDepartment.SelectedValue.ToString());

            foreach (DataRow dr in dtGroup.Rows)
            {
                string groupTag  = dr["分组标记"].ToString();
                string groupName = (string.IsNullOrEmpty(groupTag)) ? "未分组" : groupTag;

                ListViewGroup lvg = new ListViewGroup(groupName);
                listView1.Groups.Add(lvg);


                if (cbxRoleGroup.Items.IndexOf(groupTag) < 0)
                {
                    cbxRoleGroup.Items.Add(groupTag);
                }
            }


            foreach (DataRow drItem in dtBodypart.Rows)
            {
                RoleInfoData roleData = new RoleInfoData();
                roleData.BindRowData(drItem);

                string gn = (string.IsNullOrEmpty(roleData.分组标记)) ? "未分组" : roleData.分组标记;

                ListViewGroup lvgCur = GetCurGroup(gn);


                ListViewItem itemNew = new ListViewItem(new string[] { roleData.角色名称, gn }, 0, lvgCur);
                //添加Name属性赋值,否则listView1.Items.Find无法查找
                itemNew.Name = roleData.角色ID;
                itemNew.Tag  = roleData;

                listView1.Items.Add(itemNew);
            }

            listView1.View = View.Details;
        }
コード例 #10
0
        private void butModify_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtRoleName.Tag == null)
                {
                    MessageBox.Show("请选择需要修改的角色信息。", "提示");
                    return;
                }


                RoleInfoData roleData = GetSelectRoleData();
                if (roleData == null)
                {
                    MessageBox.Show("未获取到有效的角色信息。", "提示");
                    return;
                }

                if (Verify(true) == false)
                {
                    return;
                }


                bool isNewGroup = false;
                if (cbxRoleGroup.Text.Equals(roleData.分组标记) == false)
                {
                    isNewGroup = true;
                }

                roleData.角色名称      = txtRoleName.Text;
                roleData.分组标记      = cbxRoleGroup.Text;
                roleData.角色信息.角色描述 = rtbRoleDescription.Text;
                roleData.角色信息.是否停用 = chkStopUse.Checked;

                roleData.角色信息.CopyBasePro(roleData);

                _rm.UpdateRoleInfo(roleData);

                if (isNewGroup)
                {
                    listView1.Items.Remove(listView1.SelectedItems[0]);
                    NewView(roleData);
                }
                else
                {
                    listView1.SelectedItems[0].SubItems[0].Text = txtRoleName.Text;
                    listView1.SelectedItems[0].SubItems[1].Text = (string.IsNullOrEmpty(cbxRoleGroup.Text)) ? "未分组" : cbxRoleGroup.Text;
                }



                UpdateRoleGroup();

                ButtonHint.Start(sender as Button, "OK");
            }
            catch (Exception ex)
            {
                MsgBox.ShowException(ex, this);
            }
        }
コード例 #11
0
        void CreateRole(OperationRequest request, OperationResponse response, ClientPeer peer, SendParameters sendParameters)
        {
            Dictionary <byte, object> m_dic = request.Parameters;
            object value;

            response.ReturnCode = (short)ReturnCode.Fail;
            if (m_dic.TryGetValue((byte)ParameterCode.RoleInfo, out value))
            {
                //只需要传送:名称 + 性别 + 用户ID + 服务器ID
                Helper.Log("RoleHandler Create Role:" + value.ToString());
                string[] p = value.ToString().Split(',');
                if (p.Length == 4)
                {
                    RoleData newRole = new RoleData();
                    newRole.Name = p[0];
                    newRole.Lv   = 1;
                    bool   bMan     = true;
                    string strOccup = "Man";
                    if (p[1].Equals("0"))
                    {
                        bMan     = false;
                        strOccup = "Girl";
                    }
                    newRole.IsMan = bMan;
                    newRole.Occup = strOccup;

                    Helper.Log("当前服务器ID:" + p[3]);
                    int nServerId = Helper.IntParse(p[3]);
                    List <ServerProperty> pServer = m_serverMgr.GetServerByID(Helper.IntParse(p[3]));
                    if (pServer == null || pServer.Count < 1)
                    {
                        Helper.Log("获取服务器失败!");
                        response.ReturnCode = (short)ReturnCode.Fail;
                        return;
                    }

                    newRole.Server = pServer[0];

                    List <UserLoginData> pUser = m_userMgr.GetUserByID(Helper.IntParse(p[2]));
                    Helper.Log("当前用户ID:" + p[2]);
                    if (pUser == null || pUser.Count < 1)
                    {
                        Helper.Log("获取用户失败!");
                        response.ReturnCode = (short)ReturnCode.Fail;
                        return;
                    }

                    // 同一服务器一个名称只能存在一个角色
                    List <RoleData> pRoleData = m_mgr.GetServerRole(nServerId);
                    if (pRoleData != null)
                    {
                        for (int i = 0; i < pRoleData.Count; ++i)
                        {
                            RoleData curRole = pRoleData[i];
                            if (curRole.Name == newRole.Name)
                            {
                                Helper.Log("获取用户失败!");
                                response.ReturnCode   = (short)ReturnCode.Fail;
                                response.DebugMessage = "用户名已经存在,请重新输入!";
                                return;
                            }
                        }
                    }

                    newRole.User = pUser[0];
                    m_mgr.SaveRole(newRole);

                    // 为新角色创建:roleinfo,goodslist、task、skill表
                    RoleInfoData newInforData = new RoleInfoData();
                    newInforData.Role    = newRole;
                    newInforData.Exp     = 0;
                    newInforData.Gold    = 100;
                    newInforData.Gem     = 100;
                    newInforData.Energy  = 80;
                    newInforData.Toughen = 40;
                    m_roleinfoMgr.AddRoleInfo(newInforData);

                    GoodsData newGoodsList = new GoodsData();
                    newGoodsList.Role    = newRole;
                    newGoodsList.GoodsID = 1018;
                    newGoodsList.Num     = 10;
                    newGoodsList.Lv      = 1;
                    newGoodsList.Drs     = 0;
                    m_goodsListMgr.AddGoodsList(newGoodsList);

                    // 任务表读XML配置把
                    string          strBinaryPath = MyGameApplication.MyInstance.m_strBinaryPath;
                    string          strTaskPath   = (Path.Combine(strBinaryPath, "TaskConfig.xml"));
                    TaskConfigData  taskdata      = Helper.LoadXML <TaskConfigData>(strTaskPath);
                    List <TaskItem> m_pTask;
                    if (taskdata != null)
                    {
                        m_pTask = taskdata.m_task.m_pTaskList;
                        for (int i = 0; i < m_pTask.Count; ++i)
                        {
                            TaskData newTask = new TaskData();
                            newTask.TaskID         = m_pTask[i].ID;
                            newTask.TaskPro        = 0;
                            newTask.TaskType       = m_pTask[i].Type;
                            newTask.Role           = newRole;
                            newTask.LastupdateTime = DateTime.Now.ToShortDateString();
                            m_taskMgr.AddTask(newTask);
                        }
                    }

                    // 技能配置
                    strTaskPath = (Path.Combine(strBinaryPath, "SkillConfig.xml"));
                    SkillConfigData  data = Helper.LoadXML <SkillConfigData>(strTaskPath);
                    List <RoleSkill> pSkillData;
                    if (data != null)
                    {
                        pSkillData = data.m_pSkillList;
                        RoleSkill skill = null;
                        for (int i = 0; i < pSkillData.Count; ++i)
                        {
                            if (pSkillData[i].Sex == 1 && newRole.IsMan)
                            {
                                skill = pSkillData[i];
                                break;
                            }
                            else if (pSkillData[i].Sex == 0 && !newRole.IsMan)
                            {
                                skill = pSkillData[i];
                                break;
                            }
                        }
                        List <int> m_pSkillID = new List <int>();
                        m_pSkillID.Add(skill.SkillBase);
                        m_pSkillID.Add(skill.SkillOne);
                        m_pSkillID.Add(skill.SkillTwo);
                        m_pSkillID.Add(skill.SkillThere);
                        for (int i = 0; i < 4; ++i)
                        {
                            SkillData newSkill = new SkillData();
                            newSkill.Lv  = 1;
                            newSkill.Pos = i;

                            newSkill.SkillID = m_pSkillID[i];
                            newSkill.Role    = newRole;
                            m_skillMgr.AddSkill(newSkill);
                        }
                    }

                    // 保存当前选择的角色
                    List <RoleData> pChooseRole = m_mgr.GetRoleByName(newRole.Name, newRole.Server.ID);
                    if (pChooseRole != null && pChooseRole.Count == 1)
                    {
                        peer.m_curRole = pChooseRole[0];
                        Helper.Log("当前选择角色:" + peer.m_curRole.Name);
                    }

                    // 返回角色列表
                    List <RoleData> pData = m_mgr.GetUserRole(newRole.User.Id, newRole.Server.ID);
                    // 获取角色列表时候,第一个角色就是默认角色
                    string strRes = "";
                    for (int i = 0; i < pData.Count; ++i)
                    {
                        RoleData curRole = pData[i];
                        strRes += curRole.Id + "," + curRole.Name + "," + curRole.Lv + "," + curRole.IsMan + "," + curRole.Occup + "," + curRole.User.Id + "," + curRole.Server.ID + "|";
                    }
                    Dictionary <byte, object> dic = new Dictionary <byte, object>();
                    dic.Add((byte)ParameterCode.RoleInfo, strRes);
                    response.Parameters = dic;

                    response.ReturnCode = (short)ReturnCode.Success;
                    Helper.Log("RoleHandler Create Role Success");
                    return;
                }
            }
            response.ReturnCode = (short)ReturnCode.Fail;
            return;
        }