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