public void UpdateRoleInfo(Role role, int exp, int coin) { RoleEntity roleEntity = RoleDBModel.Instance.GetEntity(role.RoleId); int[] roleLevelExp = GetRoleLevel(roleEntity, exp); Console.WriteLine(roleLevelExp[0] + " " + roleLevelExp[1]); roleEntity.Level = roleLevelExp[0]; roleEntity.Exp = roleLevelExp[1]; roleEntity.Gold = coin; JobEntity jobEntity = JobDBModel.Instance.Get(roleEntity.JobId); JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(roleEntity.Level); roleEntity.Attack = (int)Math.Round(jobLevelEntity.Attack * (jobEntity.AttackCoefficient * 0.01f)); roleEntity.AttackAddition = 0; roleEntity.Defense = (int)Math.Round(jobLevelEntity.Defense * jobEntity.DefenseCoefficient * 0.01f); roleEntity.DefenseAddition = 0; roleEntity.Res = (int)Math.Round(jobEntity.ResCoefficient * jobLevelEntity.Res * 0.01f); roleEntity.ResAddition = 0; roleEntity.Hit = (int)Math.Round(jobEntity.HitCoefficient * jobLevelEntity.Hit * 0.01f); roleEntity.HitAddition = 0; roleEntity.Cri = (int)Math.Round(jobEntity.CriCoefficient * jobLevelEntity.Cri * 0.01f); roleEntity.CriAddition = 0; roleEntity.Dodge = (int)Math.Round(jobEntity.DodgeCoefficient * jobLevelEntity.Dodge * 0.01f); roleEntity.DodgeAddition = 0; roleEntity.CurrHP = roleEntity.MaxHP = jobLevelEntity.HP; roleEntity.CurrMP = roleEntity.MaxMP = jobLevelEntity.MP; roleEntity.Fighting = FightingUtil.GetRoleFighting(roleEntity.MaxHP, roleEntity.Attack, 0, roleEntity.Defense, 0, roleEntity.Res, 0, roleEntity.Hit, 0, roleEntity.Dodge, 0, roleEntity.Cri, 0); RoleDBModel.Instance.Update(roleEntity); OnRoleInfoResponse(role, roleEntity); }
private void CreateRoleProtoCallBack(Role role, byte[] content) { RoleOperation_CreateRoleProto proto = RoleOperation_CreateRoleProto.ToProto(content); //查询是否又相同昵称的 int count = RoleCacheModel.Instance.GetCount(string.Format("[NickName] = '{0}'", proto.NickName)); MFReturnValue <object> ret = null; if (count == 0) { //创建 RoleEntity entity = new RoleEntity(); entity.JobId = proto.JobID; entity.NickName = proto.NickName; entity.Sex = (byte)EnumSex.Female; entity.Status = EnumEntityStatus.Released; entity.Level = 1; entity.AccountId = role.AccountId; entity.CreateTime = DateTime.Now; entity.UpdateTime = DateTime.Now; entity.LastWorldMapSceneId = 1; //暂定 JobEntity jobEntity = JobDBModel.Instance.Get(proto.JobID); JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(entity.Level); entity.MaxHP = jobLevelEntity.HP; entity.CurrentHP = entity.MaxHP; entity.MaxMP = jobLevelEntity.MP; entity.CurrentMP = entity.MaxMP; entity.Attack = (int)Math.Round(jobEntity.Attack * jobLevelEntity.Attack * 0.01f); entity.Defense = (int)Math.Round(jobEntity.Defense * jobLevelEntity.Defense * 0.01f); entity.Hit = (int)Math.Round(jobEntity.Hit * jobLevelEntity.Hit * 0.01f); entity.Dodge = (int)Math.Round(jobEntity.Dodge * jobLevelEntity.Dodge * 0.01f); entity.Cri = (int)Math.Round(jobEntity.Cri * jobLevelEntity.Cri * 0.01f); entity.Res = (int)Math.Round(jobEntity.Res * jobLevelEntity.Res * 0.01f); entity.Gold = 0; entity.Money = 0; entity.Exp = 0; entity.Fighting = entity.Attack * 4 + entity.Defense * 4 + entity.Hit * 2 + entity.Dodge * 2 + entity.Res + entity.Cri; ret = RoleCacheModel.Instance.Create(entity); role.CurRoleId = (int)ret.OutputValues["Id"]; } else { ret = new MFReturnValue <object>(); ret.HasError = true; ret.ReturnCode = 1000; } SelectRoleInfoReturn(role); CreateRoleProtoReturn(ret, role); SelectSkillReturn(role); }
/// <summary> 客户端请求创建角色 </summary> /// <param name="role"></param> /// <param name="buffer"></param> private void OnRoleCreate(Role role, byte[] buffer) { RoleCreateRequestProto proto = RoleCreateRequestProto.GetProto(buffer); //查询昵称是否存在 int count = RoleCacheModel.Instance.GetCount(string.Format("[NickName]='{0}'", proto.RoleName)); MFReturnValue <object> retValue = null; if (count > 0) { //角色名已经存 retValue = new MFReturnValue <object>(); retValue.HasError = true; } else { RoleEntity entity = new RoleEntity(); entity.JobId = proto.JobId; entity.NickName = proto.RoleName; entity.Status = Mmcoy.Framework.AbstractBase.EnumEntityStatus.Released; entity.AccountId = role.AccountId; entity.CreateTime = DateTime.Now; entity.UpdateTime = DateTime.Now; entity.Level = 1; //给角色战斗相关的属性赋值(根据 职业 等级) JobEntity jobEntity = JobDBModel.Instance.Get(entity.JobId); JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(entity.Level); entity.Attack = (int)Math.Round(jobLevelEntity.Attack * (jobEntity.AttackCoefficient * 0.01f)); entity.AttackAddition = 0; entity.Defense = (int)Math.Round(jobLevelEntity.Defense * jobEntity.DefenseCoefficient * 0.01f); entity.DefenseAddition = 0; entity.Res = (int)Math.Round(jobEntity.ResCoefficient * jobLevelEntity.Res * 0.01f); entity.ResAddition = 0; entity.Hit = (int)Math.Round(jobEntity.HitCoefficient * jobLevelEntity.Hit * 0.01f); entity.HitAddition = 0; entity.Cri = (int)Math.Round(jobEntity.CriCoefficient * jobLevelEntity.Cri * 0.01f); entity.CriAddition = 0; entity.Dodge = (int)Math.Round(jobEntity.DodgeCoefficient * jobLevelEntity.Dodge * 0.01f); entity.DodgeAddition = 0; entity.CurrHP = entity.MaxHP = jobLevelEntity.HP; entity.CurrMP = entity.MaxMP = jobLevelEntity.MP; entity.Fighting = FightingUtil.GetRoleFighting(entity.MaxHP, entity.Attack, 0, entity.Defense, 0, entity.Res, 0, entity.Hit, 0, entity.Dodge, 0, entity.Cri, 0); entity.FightingAddition = 0; entity.LastInWorldMapId = 1; retValue = RoleCacheModel.Instance.Create(entity); Console.WriteLine(retValue.ReturnCode + " " + retValue.OutputValues["Id"] + " " + retValue.Message); } OnRoleCreateResponse(role, retValue); }
public JobHistoryDetailDTO DoSalaryIncreasing(long empId, int jobLevel) { var transaction = _humanManagerContext.Database.BeginTransaction(); try { DateTime today = System.DateTime.Today; EmployeeEntity employeeEntity = _humanManagerContext.Employees.Where(e => e.Id == empId) .Include(e => e.Job) .ThenInclude(j => j.JobLevel) .SingleOrDefault(); JobHistoryEntity jobHistoryEntity = _humanManagerContext.JobHistorys.Where(jh => jh.EmployeeId == employeeEntity.Id && jh.JobId == employeeEntity.JobId).SingleOrDefault(); // Kiểm tra việc tính lương. tính r ko đc nâng. bool haveCounted = _humanManagerContext.SalaryHistories.Where(sh => sh.EmployeeId == empId && sh.CountedDate.Month == today.Month && sh.CountedDate.Year == today.Year).Any(); if (haveCounted) { throw new Exception(SalaryMessageContant.SALARY_COUNTED); } // kiểm tra và thay đổi job level JobLevelEntity jobLevelEntity = employeeEntity.Job.JobLevel; if (JobUtil.IsLevelExit(jobLevelEntity, jobLevel)) { employeeEntity.JobLevel = jobLevel; } else { throw new Exception(SalaryMessageContant.JOB_LEVEL_NOT_EXITS); } // lưu level vào lịch sử _humanManagerContext.JobHistoryDetails.Add(new JobHistoryDetailEntity(jobLevel, today, jobHistoryEntity)); _humanManagerContext.SaveChanges(); transaction.Commit(); return(new JobHistoryDetailDTO(employeeEntity.Id, employeeEntity.Firstname + employeeEntity.Firstname, employeeEntity.JobId, employeeEntity.Job.JobTitle, jobLevel, System.DateTime.Today)); } catch (Exception ex) { transaction.Rollback(); throw ex; } }
public static double GetSalaryCoefficient(JobLevelEntity jobLevel, int level) { double salaryCoefficient = 0; var listOfFieldNames = typeof(JobLevelEntity)// .GetProperties().Select(f => f.Name).ToList(); foreach (string salaryLevelName in listOfFieldNames) { if (salaryLevelName.Equals(SystemContant.JOB_LEVEL_NAME_PREFIX + level)) { salaryCoefficient = (double)typeof(JobLevelEntity).GetProperty(salaryLevelName).GetValue(jobLevel); } } return(salaryCoefficient); }
public static bool IsLevelExit(JobLevelEntity jobLevelEntity, int level) { try { double jobLevel = (double)typeof(JobLevelEntity).GetProperty(SystemContant.JOB_LEVEL_NAME_PREFIX + level).GetValue(jobLevelEntity); if (jobLevel == 0) { return(false); } return(true); } catch { return(false); } }
/// <summary> /// 更新角色战斗力 /// </summary> /// <param name="roleEntity"></param> private void UpdateFighting(RoleEntity roleEntity) { //1.计算角色基础属性 和等级有关 //给角色战斗相关的属性赋值 //职业 等级 JobEntity jobEntity = JobDBModel.Instance.Get(roleEntity.JobId); //职业等级数据 JobLevelEntity jobLevelEntity = JobLevelDBModel.Instance.Get(roleEntity.Level); roleEntity.MaxHP = jobLevelEntity.HP; roleEntity.MaxMP = jobLevelEntity.MP; roleEntity.Attack = (int)Math.Round(jobEntity.Attack * jobLevelEntity.Attack * 0.01f); roleEntity.Defense = (int)Math.Round(jobEntity.Defense * jobLevelEntity.Defense * 0.01f); roleEntity.Hit = (int)Math.Round(jobEntity.Hit * jobLevelEntity.Hit * 0.01f); roleEntity.Dodge = (int)Math.Round(jobEntity.Dodge * jobLevelEntity.Dodge * 0.01f); roleEntity.Cri = (int)Math.Round(jobEntity.Cri * jobLevelEntity.Cri * 0.01f); roleEntity.Res = (int)Math.Round(jobEntity.Res * jobLevelEntity.Res * 0.01f); //2.计算角色装备增加的属性 List <Role_EquipEntity> lst = Role_EquipDBModel.Instance.GetList(condition: string.Format("[RoleId]={0} and [IsPutOn]=1", roleEntity.Id)); if (lst != null && lst.Count > 0) { for (int i = 0; i < lst.Count; i++) { Role_EquipEntity role_EquipEntity = lst[i]; //0=HP 1=MP 2=攻击 3=防御 4=命中 5=闪避 6=暴击 7=抗性 #region 基础属性1 switch (role_EquipEntity.BaseAttr1Type) { case 0: roleEntity.MaxHP += role_EquipEntity.BaseAttr1Value; break; case 1: roleEntity.MaxMP += role_EquipEntity.BaseAttr1Value; break; case 2: roleEntity.Attack += role_EquipEntity.BaseAttr1Value; break; case 3: roleEntity.Defense += role_EquipEntity.BaseAttr1Value; break; case 4: roleEntity.Hit += role_EquipEntity.BaseAttr1Value; break; case 5: roleEntity.Dodge += role_EquipEntity.BaseAttr1Value; break; case 6: roleEntity.Cri += role_EquipEntity.BaseAttr1Value; break; case 7: roleEntity.Res += role_EquipEntity.BaseAttr1Value; break; } #endregion #region 基础属性2 switch (role_EquipEntity.BaseAttr2Type) { case 0: roleEntity.MaxHP += role_EquipEntity.BaseAttr2Value; break; case 1: roleEntity.MaxMP += role_EquipEntity.BaseAttr2Value; break; case 2: roleEntity.Attack += role_EquipEntity.BaseAttr2Value; break; case 3: roleEntity.Defense += role_EquipEntity.BaseAttr2Value; break; case 4: roleEntity.Hit += role_EquipEntity.BaseAttr2Value; break; case 5: roleEntity.Dodge += role_EquipEntity.BaseAttr2Value; break; case 6: roleEntity.Cri += role_EquipEntity.BaseAttr2Value; break; case 7: roleEntity.Res += role_EquipEntity.BaseAttr2Value; break; } #endregion roleEntity.Attack += role_EquipEntity.Attack; roleEntity.Defense += role_EquipEntity.Defense; roleEntity.Hit += role_EquipEntity.Hit; roleEntity.Dodge += role_EquipEntity.Dodge; roleEntity.Cri += role_EquipEntity.Cri; roleEntity.Res += role_EquipEntity.Res; } } //3.计算综合战斗力 roleEntity.Fighting = roleEntity.Attack * 4 + roleEntity.Defense * 4 + roleEntity.Hit * 2 + roleEntity.Dodge * 2 + roleEntity.Cri + roleEntity.Res; RoleDBModel.Instance.Update(roleEntity); }