private void CalcStaminaGrow(int timeID) { //计算体力增长 PECommon.Log("All Onlion Player Calc Power Increase...."); GameMsg msg = new GameMsg { cmd = (int)CMD.PshStamina }; msg.pshStamina = new PshStamina(); //更新在线玩家体力 Dictionary <ServerSession, PlayerData> onLineSessionDic = cacheSvc.GetOnlineSessionDic(); foreach (ServerSession session in onLineSessionDic.Keys) { PlayerData playerData = onLineSessionDic[session]; int maxStamina = PECommon.GetStaminaLimitByLv(playerData.lv); if (playerData != null) { if (playerData.stamina < maxStamina) { playerData.stamina += PECommon.StaminaAddCount; playerData.time = TimerSvc.Instance.GetNowTime(); if (playerData.stamina > maxStamina) { playerData.stamina = maxStamina; } } if (!cacheSvc.UpdatePlayerData(playerData.id, playerData)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.pshStamina.stamina = playerData.stamina; session.SendMsg(msg); } } else { msg.err = (int)ErrorCode.ServerDataError; } } //更新离线玩家体力 }
/// <summary> /// 更新UI /// </summary> public void RefreshUI() { PlayerData playerData = GameRoot.Instance.PlayerData; //计算战斗力并更新 int fight = PECommon.GetFightByProps(playerData); SetText(txtFight, fight); //更新体力UI int staminaLimit = PECommon.GetStaminaLimitByLv(playerData.lv); SetText(txtStamina, "体力:" + playerData.stamina + "/" + staminaLimit); sliderStamina.fillAmount = playerData.stamina * 1.0f / staminaLimit; //更新等级UI SetText(txtLevel, playerData.lv); //更新名字 SetText(txtName, playerData.name); //更新进度条UI int expLimit = PECommon.GetExpLimitByLv(playerData.lv); SetText(txtExp, Mathf.Round((playerData.exp * 1.0f / expLimit) * 100.0f).ToString() + "%"); SetExpProgressBar(playerData.exp); AdaptProgressBar(); #region TaskIconRefresh curTaskCfg = resSvc.GetTaskCfg(playerData.taskid); if (curTaskCfg != null) { SetAutoTaskIcon(curTaskCfg.npcID); } //如果当前没有任务,显示默认图片 else { SetAutoTaskIcon(-1); } #endregion //TODO }
public void RefreshUI() { PlayerData playerData = GameRoot.Instance.PlayerData; SetText(txtNameLv, playerData.name + " LV" + playerData.lv); int staminaLimit = PECommon.GetStaminaLimitByLv(playerData.lv); SetText(txtStamina, playerData.stamina + "/" + staminaLimit); float percentStamina = playerData.stamina * 1.0f / staminaLimit; staminaFill.fillAmount = percentStamina; int expLimit = PECommon.GetExpLimitByLv(playerData.lv); SetText(txtExp, playerData.exp + "/" + expLimit); float percentExp = playerData.exp * 1.0f / expLimit; expFill.fillAmount = percentExp; SetText(txtProfession, "职业 暗夜刺客"); int fight = PECommon.GetFightByProps(playerData); SetText(txtFight, "战力 " + fight); SetText(txtHp, "生命 " + playerData.hp); SetText(txtHurt, "伤害 " + (playerData.ad + playerData.ap).ToString()); SetText(txtDefence, "防御 " + (playerData.addef + playerData.apdef).ToString()); SetText(txthp, playerData.hp); SetText(txtad, playerData.ad); SetText(txtap, playerData.ap); SetText(txtaddef, playerData.addef); SetText(txtapdef, playerData.apdef); SetText(txtdodge, playerData.dodge + "%"); SetText(txtpierce, playerData.pierce + "%"); SetText(txtcritical, playerData.critical + "%"); }
public void ReqLogin(PackMsg pack) { ReqLogin data = pack.msg.reqLogin; ServerSession session = pack.session; //判断当前账号是否上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; //已上线,返回错误信息 if (cacheSvc.IsAcctOnLine(data.acct)) { msg.err = (int)ErrorCode.AcctIsOnLine; } else { //未上线: //账号是否存在 PlayerData _playerData = cacheSvc.GetPlayerDate(data.acct, data.pwd); if (_playerData == null) { //账号存在 但密码错误 msg.err = (int)ErrorCode.WrongPwd; } //存在 返回账号数据 else { //计算离线增加体力 int stamina = _playerData.stamina; long now = timeSvc.GetNowTime(); long milliSecondsSpan = now - _playerData.time; int growStamina = (int)(milliSecondsSpan / (1000 * 60 * PECommon.StaminaAddSpace)) * PECommon.StaminaAddCount; //PECommon.Log(milliSecondsSpan / 60000+ " " + milliSecondsSpan.ToString() + " " + growStamina.ToString()); if (growStamina > 0) { int maxStamina = PECommon.GetStaminaLimitByLv(_playerData.lv); if (_playerData.stamina < maxStamina) { _playerData.stamina += growStamina; if (_playerData.stamina > maxStamina) { _playerData.stamina = maxStamina; } } } if (stamina != _playerData.stamina) { cacheSvc.UpdatePlayerData(_playerData.id, _playerData); } msg.rspLogin = new RspLogin { //将账号数据存到回应包里 playerData = _playerData }; //将账号数据存储进缓存层 cacheSvc.StoreIdOnline(data.acct, session, _playerData); } } //回应客户端 pack.session.SendMsg(msg); }