コード例 #1
0
    private void RefreshUI()
    {
        PlayerData pd = GameRoot.Instance.PlayerData;

        SetText(txtInfo, $"{pd.name} LV.{pd.lv}");
        SetText(txtExp, $"{pd.exp}/{PECommon.GetExpUpValByLv(pd.lv)}");
        imgExpPrg.fillAmount = pd.exp * 1.0f / PECommon.GetExpUpValByLv(pd.lv);
        SetText(txtPower, $"{pd.power}/{PECommon.GetPowerLimit(pd.lv)}");
        imgPowerPrg.fillAmount = pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv);

        SetText(txtJob, $" 职业   暗夜刺客");
        SetText(txtFight, $" 战力   {PECommon.GetFightByProps(pd)}");
        SetText(txtHP, $" 血量   {pd.hp}");
        SetText(txtHurt, $" 伤害   {pd.ad + pd.ap}");
        SetText(txtDef, $" 防御   {pd.addef + pd.apdef}");

        // detail TODO
        SetText(dtxhp, pd.hp);
        SetText(dtxad, pd.ad);
        SetText(dtxap, pd.ap);
        SetText(dtxaddef, pd.addef);
        SetText(dtxapdef, pd.apdef);
        SetText(dtxdodge, pd.dodge + "%");
        SetText(dtxpierce, pd.pierce + "%");
        SetText(dtxcritical, pd.critical + "%");
    }
コード例 #2
0
    private void RefreshUI()
    {
        PlayerData pd = GameRoot.instance.Playerdata;

        SetText(txtCharactor, pd.name + " LV" + pd.lv);
        SetText(txtExp, pd.exp + "/" + PECommon.GetExpUpValByLv(pd.lv));
        imgExp.fillAmount = (pd.exp * 1.0f / PECommon.GetExpUpValByLv(pd.lv));
        SetText(txtPower, pd.power);
        imgPower.fillAmount = (pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv));
        SetText(txtJob, " 职业  暗夜刺客");
        SetText(txtFight, " 战力  " + PECommon.GetFightByPlayerData(pd));
        SetText(txtHP, " 生命  " + pd.hp);
        SetText(txtDamage, " 伤害  " + (pd.ad + pd.ap));
        SetText(txtDefend, " 防御  " + (pd.addef + pd.apdef));

        //detail
        SetText(hpValue, pd.hp);
        SetText(addValue, pd.ad);
        SetText(apValue, pd.ap);
        SetText(addValue, pd.addef);
        SetText(apdValue, pd.apdef);
        SetText(dodgeValue, pd.dodge);
        SetText(pierceValue, pd.pierce);
        SetText(criticalValue, pd.critical);
    }
コード例 #3
0
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.msg.reqLogin;

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

        //如果账号已经登入
        if (cacheSvc.IsAcctOnline(data.acct))
        {
            msg.err = (int)ErrorCode.AcctIsOnline;
        }
        else
        {
            PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass);
            if (pd == null)
            {
                //存在,密码错误
                msg.err = (int)ErrorCode.WrongPass;
            }
            else
            {
                //登入成功

                //计算体力最大值
                int power    = pd.power;
                int powerMax = PECommon.GetPowerLimit(pd.lv);
                if (pd.power < powerMax)
                {
                    long nowTime           = timerSvc.GetNowTime();
                    long millisecendsCount = nowTime - pd.time;
                    //计算玩家离线时间回复体力值
                    int addPower = (int)(millisecendsCount / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount;
                    if (addPower > 0)
                    {
                        pd.power += addPower;
                        if (pd.power > powerMax)
                        {
                            pd.power = powerMax;
                        }
                    }
                }

                if (pd.power != power)
                {
                    cacheSvc.UpdataPlayerData(pd.id, pd);
                }

                msg.rspLogin = new RspLogin()
                {
                    playerData = pd
                };
                cacheSvc.AcctOnline(data.acct, pack.session, pd);
            }
        }

        pack.session.SendMsg(msg);
    }
コード例 #4
0
    private void RefreshUI()
    {
        PlayerData pd = PECommon.PlayerData;

        SetText(txtInfo, pd.Name + " LV." + pd.Lv);
        SetText(txtExp, pd.Exp + "/" + PECommon.GetExpUpValByLv(pd.Lv));
        imgExpPrg.fillAmount = pd.Exp * 1.0F / PECommon.GetExpUpValByLv(pd.Lv);
        SetText(txtPower, pd.Power + "/" + PECommon.GetPowerLimit(pd.Lv));
        imgPowerPrg.fillAmount = pd.Power * 1.0F / PECommon.GetPowerLimit(pd.Lv);

        SetText(txtJob, " 职业   暗夜刺客");
        SetText(txtFight, " 战力   " + PECommon.GetFightByProps(pd));
        SetText(txtHP, " 血量   " + pd.Hp);
        SetText(txtHurt, " 伤害   " + (pd.Ad + pd.Ap));
        SetText(txtDef, " 防御   " + (pd.Addef + pd.Apdef));

        //detail TODO
        SetText(dtxhp, pd.Hp);
        SetText(dtxad, pd.Ad);
        SetText(dtxap, pd.Ap);
        SetText(dtxaddef, pd.Addef);
        SetText(dtxapdef, pd.Apdef);
        SetText(dtxdodge, pd.Dodge + "%");
        SetText(dtxpierce, pd.Pierce + "%");
        SetText(dtxcritical, pd.Critical + "%");
    }
コード例 #5
0
ファイル: InfoWnd.cs プロジェクト: yoyo-sincerely/DarkGod
    private void RefreshUI()
    {
        PlayerData pd = GameRoot.Instance.PlayerData;

        SetText(txtInfo, pd.name + " LV." + pd.lv);
        SetText(txtExp, pd.exp + "/" + PECommon.GetExpUpValByLv(pd.lv));
        imgExpPrg.fillAmount = pd.exp * 1.0F / PECommon.GetExpUpValByLv(pd.lv);
        SetText(txtPower, pd.power + "/" + PECommon.GetPowerLimit(pd.lv));
        imgPowerPrg.fillAmount = pd.power * 1.0F / PECommon.GetPowerLimit(pd.lv);

        SetText(txtJob, " 暗夜刺客");
        SetText(txtFight, PECommon.GetFightByProps(pd));
        SetText(txtHP, pd.hp);
        SetText(txtHurt, (pd.ad + pd.ap));
        SetText(txtDef, (pd.addef + pd.apdef));

        // 详细信息
        SetText(txtDHp, pd.hp);
        SetText(txtDAd, pd.ad);
        SetText(txtDAp, pd.ap);
        SetText(txtDAdDef, pd.addef);
        SetText(txtDApDef, pd.apdef);
        SetText(txtDDodge, pd.dodge + "%");
        SetText(txtDPierce, pd.pierce + "%");
        SetText(txtDCritical, pd.critical + "%");
    }
コード例 #6
0
ファイル: InfoWind.cs プロジェクト: wangzeping1998/-
    //刷新(更新)UI信息
    private void RefreshUI()
    {
        PlayerData playerData = GameRoot.instance.playerData;

        SetText(txtInfo, playerData.name + "LV." + playerData.lv);
        SetText(txtExp, playerData.exp + "/" + PECommon.GetExpUpValByLv(playerData.lv));
        imgExpPrg.fillAmount = playerData.exp * 1.0f / PECommon.GetExpUpValByLv(playerData.lv);
        SetText(txtPower, playerData.power + "/" + PECommon.GetPowerLimit(playerData.lv));
        imgPowerPrg.fillAmount = playerData.power * 1.0f / PECommon.GetPowerLimit(playerData.lv);
        SetText(txtJob, "职业      暗夜刺客");
        SetText(txtFight, "战力    " + PECommon.GetFightProps(playerData));
        SetText(txtHP, "血量    " + playerData.hp);
        SetText(txtHurt, "伤害    " + playerData.ad + playerData.ap);
        SetText(txtDefense, "防御    " + playerData.addef + playerData.apdef);

        //详细信息面板
        SetText(txtDtHP, playerData.hp);
        SetText(txtDtAd, playerData.ad);
        SetText(txtDtAp, playerData.ap);
        SetText(txtDtAdDef, playerData.addef);
        SetText(txtDtApDef, playerData.apdef);
        SetText(txtDtDodge, playerData.dodge + "%");
        SetText(txtDtPierce, playerData.pierce + "%");
        SetText(txtDtCritical, playerData.critical + "%");
    }
コード例 #7
0
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.msg.reqLogin;
        // 当前账号是否已经上线
        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspLogin
        };

        if (cacheSvc.IsAcctOnLine(data.acct))
        {
            // 已上线:返回错误信息
            msg.err = (int)ErrorCode.AcctIsOnLine;
        }
        else
        {
            // 未上线:
            // 账号是否存在
            PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass);
            if (pd == null)
            {
                // 存在,密码错误
                msg.err = (int)ErrorCode.WrongPass;
            }
            else
            {
                // 计算离线体力增长
                int  power        = pd.power;
                long now          = timerSvc.GetNowTime();
                long milliseconds = now - pd.time;
                int  addPower     = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount;
                if (addPower > 0)
                {
                    int powerMax = PECommon.GetPowerLimit(pd.lv);
                    if (pd.power < powerMax)
                    {
                        pd.power += addPower;
                        if (pd.power > powerMax)
                        {
                            pd.power = powerMax;
                        }
                    }
                }

                if (power != pd.power)
                {
                    cacheSvc.UpdatePlayerData(pd.id, pd);
                }

                msg.rspLogin = new RspLogin
                {
                    playerData = pd
                };
                // 缓存账号数据
                cacheSvc.AcctOnLine(data.acct, pack.session, pd);
            }
        }
        // 回应客户端
        pack.session.SendMsg(msg);
    }
コード例 #8
0
    private void Refresh()
    {
        PlayerData pd = GameRoot.Instance.PlayerData;

        SetText(txtInfo, pd.name + " LV." + pd.lv);
        SetText(txtExp, pd.exp + "/" + PECommon.GetExpUpValByLv(pd.lv));
        imgExpPrg.fillAmount = pd.exp * 1.0f / PECommon.GetExpUpValByLv(pd.lv);
        SetText(txtPower, pd.power + "/" + PECommon.GetPowerLimit(pd.lv));
        imgPowerPrg.fillAmount = pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv);

        SetText(txtJob, " 职业   暗夜刺客");
        SetText(txtFight, " 战力   " + PECommon.GetFightByProps(pd));
        SetText(txtHP, " 血量   " + pd.hp);
        SetText(txtHurt, " 伤害   " + (pd.ad + pd.ap));
        SetText(txtDef, " 防御   " + (pd.addef + pd.apdef));

        //detail TODO
        SetText(dtxhp, pd.hp);
        SetText(dtxad, pd.ad);
        SetText(dtxap, pd.ap);
        SetText(dtxaddef, pd.addef);
        SetText(dtxapdef, pd.apdef);
        SetText(dtxdodge, pd.dodge + "%");
        SetText(dtxpierce, pd.pierce + "%");
        SetText(dtxcritical, pd.critical + "%");
    }
コード例 #9
0
    public void RefreshUI(object sender, GameEventArgs e)
    {
        OnRefreshUIFormEventArgs ne = e as OnRefreshUIFormEventArgs;

        if ((System.Object)sender != this && ne.formId != UIFormId.MainCityForm)
        {
            return;
        }
        PlayerData pd = PECommon.PlayerData;

        SetText(txtFight, PECommon.GetFightByProps(pd));
        SetText(txtPower, "体力:" + pd.Power + "/" + PECommon.GetPowerLimit(pd.Lv));
        imgPowerPrg.fillAmount = pd.Power * 1.0f / PECommon.GetPowerLimit(pd.Lv);
        SetText(txtLevel, pd.Lv);
        SetText(txtName, pd.Name);


        #region Expprg
        int expPrgVal = (int)(pd.Exp * 1.0f / PECommon.GetExpUpValByLv(pd.Lv) * 100);
        SetText(txtExpPrg, expPrgVal + "%");
        int index = expPrgVal / 10;

        GridLayoutGroup grid = expPrgTrans.GetComponent <GridLayoutGroup>();

        float globalRate  = 1.0F * Constants.ScreenStandardHeight / Screen.height;
        float screenWidth = Screen.width * globalRate;
        float width       = (screenWidth - 180) / 10;

        grid.cellSize = new Vector2(width, 7);

        for (int i = 0; i < expPrgTrans.childCount; i++)
        {
            Image img = expPrgTrans.GetChild(i).GetComponent <Image>();
            if (i < index)
            {
                img.fillAmount = 1;
            }
            else if (i == index)
            {
                img.fillAmount = expPrgVal % 10 * 1.0f / 10;
            }
            else
            {
                img.fillAmount = 0;
            }
        }
        #endregion

        //设置自动任务图标
        curtTaskData = GameEntry.Res.GetAutoGuideCfg(pd.Guideid);
        if (curtTaskData != null)
        {
            SetGuideBtnIcon(curtTaskData.npcID);
        }
        else
        {
            SetGuideBtnIcon(-1);
        }
    }
コード例 #10
0
ファイル: LoginSys.cs プロジェクト: BINPAN2/ARPG_Server
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.msg.reqLogin;
        //当前账号是否已经上线
        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspLogin,
        };

        if (CacheSvc.Instance.IsAcctOnline(data.acct))
        {
            //已上线:返回错误信息
            msg.err = (int)ErrorCode.AcctIsOnLine;
        }
        else
        {
            //未上线:
            PlayerData pd = CacheSvc.Instance.GetPlayerData(data.acct, data.pass);
            if (pd == null)
            {
                //存在:密码错误
                msg.err = (int)ErrorCode.WrongPass;
            }
            else
            {
                int  power     = pd.power;
                long nowtime   = TimeSvc.Instance.GetNowTime();
                long deltatime = nowtime - pd.time;
                int  addPower  = (int)(deltatime / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount;
                if (addPower > 0)
                {
                    int powerMax = PECommon.GetPowerLimit(pd.lv);
                    if (pd.power < powerMax)
                    {
                        pd.power += addPower;
                        if (pd.power > powerMax)
                        {
                            pd.power = powerMax;
                        }
                    }
                }

                msg.rspLogin = new RspLogin
                {
                    playerData = pd
                };

                CacheSvc.Instance.AcctOnline(data.acct, pack.session, pd);
                CacheSvc.Instance.UpdatePlayerData(pd.id, pd, pack.session);
            }
        }


        //回应客户端

        pack.session.SendMsg(msg);
    }
コード例 #11
0
ファイル: LoginSys.cs プロジェクト: yoyo-sincerely/DarkGod
    /// <summary>
    /// 响应登录的请求
    /// </summary>
    /// <param name="pack">消息包</param>
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.msg.reqLogin;
        // 回应客户端
        GameMsg msg = new GameMsg {
            cmd = (int)CMD.RspLogin // 操作码
        };

        // 判断是否在线,并做相应的处理
        if (cacheSvc.IsAcctOnLine(data.acct))   // 已在线,返回错误信息
        {
            msg.err = (int)ErrorCode.AcctIsOnLine;
        }
        else                                                             // 不在线,尝试登录
        {
            PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pwd); // 获取玩家数据
            if (pd == null)                                              // 账号和密码不匹配
            {
                msg.err = (int)ErrorCode.WrongPwd;
            }
            else   // 登录成功
                   // 计算离线体力增长
            {
                int  power        = pd.power;                                                                            // 当前体力
                long now          = timerSvc.GetNowTime();
                long milliseconds = now - pd.time;                                                                       // 距离上一次下线的时间间隔
                int  addPower     = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; // 需要增加的体力值
                if (addPower > 0)
                {
                    int powerMax = PECommon.GetPowerLimit(pd.lv);
                    if (pd.power < powerMax)
                    {
                        pd.power += addPower;
                        if (pd.power > powerMax)
                        {
                            pd.power = powerMax;
                        }
                    }
                }

                if (power != pd.power)
                {
                    cacheSvc.UpdatePlayerData(pd.id, pd);
                }
                // 响应客户端的数据
                msg.rspLogin = new RspLogin {
                    playerData = pd // 返回玩家数据
                };
                // 缓存账号数据
                cacheSvc.AcctOnLine(data.acct, pack.session, pd);
            }
        }
        // 回应客户端
        pack.session.SendMsg(msg);
    }
コード例 #12
0
    public void RefreshUI()
    {
        PlayerData pd = GameRoot.Instance.PlayerData;

        SetText(txtFight, PECommon.GetFightByProps(pd));
        SetText(txtPower, "体力:" + pd.power + "/" + PECommon.GetPowerLimit(pd.lv));
        imgPowerPrg.fillAmount = pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv);
        SetText(txtLevel, pd.lv);
        SetText(txtName, pd.name);


        #region Expprg
        int expPrgVal = (int)(pd.exp * 1.0f / PECommon.GetExpUpValByLv(pd.lv) * 100);
        SetText(txtExpPrg, expPrgVal + "%");
        int index = expPrgVal / 10;

        GridLayoutGroup grid = expPrgTrans.GetComponent <GridLayoutGroup>();

        float globalRate  = 1.0F * Constants.ScreenStandardHeight / Screen.height;
        float screenWidth = Screen.width * globalRate;
        float width       = (screenWidth - 180) / 10;

        grid.cellSize = new Vector2(width, 7);

        for (int i = 0; i < expPrgTrans.childCount; i++)
        {
            Image img = expPrgTrans.GetChild(i).GetComponent <Image>();
            if (i < index)
            {
                img.fillAmount = 1;
            }
            else if (i == index)
            {
                img.fillAmount = expPrgVal % 10 * 1.0f / 10;
            }
            else
            {
                img.fillAmount = 0;
            }
        }
        #endregion

        //设置自动任务图标
        curtTaskData = resSvc.GetAutoGuideCfg(pd.guideid);
        if (curtTaskData != null)
        {
            SetGuideBtnIcon(curtTaskData.npcID);
        }
        else
        {
            SetGuideBtnIcon(-1);
        }
    }
コード例 #13
0
    /// <summary>
    /// 处理登录注册请求
    /// </summary>
    /// <param name="msg"></param>
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.msg.reqLogin;
        //给客户端的回应消息
        GameMsg rspMsg = new GameMsg()
        {
            cmd      = (int)CMD.RspLogin,
            rspLogin = new RspLogin()
            {
            },
        };

        //当前账号已上线 产生错误码
        if (cacheSvc.IsAcctOnLine(data.acct))
        {
            rspMsg.err = (int)ErrorCode.AcctIsOnline;
        }
        //当前账号未上线
        else
        {
            PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass);
            if (pd != null)//账密匹配 产生玩家数据(这里包含了创建账号)
            {
                //更新玩家体力值
                int  power = pd.power;
                long time  = pd.time;
                long now   = TimerSvc.Instance.GetNowTime();
                pd.time = now;
                long millSeconds = now - time;
                int  addPower    = (int)(millSeconds / (1000 * 1 * PECommon.PowerAddMinute) * PECommon.PowerAddCount);
                if (addPower > 0)
                {
                    int powerMax = PECommon.GetPowerLimit(pd);
                    pd.power = power + addPower > powerMax ? powerMax : power + addPower;
                }
                if (pd.power > power)
                {
                    cacheSvc.UpdatePlayerData(pd.id, pd);
                }
                //将此账号添加到字典中
                cacheSvc.AddAcctOnline(data.acct, pack.session, pd);
                rspMsg.rspLogin.playerData = pd;
            }
            else//账密不匹配 产生错误码
            {
                rspMsg.err = (int)ErrorCode.ErrorPass;
            }
        }

        //回应客户端
        pack.session.SendMsg(rspMsg);
    }
コード例 #14
0
ファイル: MainCityWnd.cs プロジェクト: IamnotblackCat/DarkGod
    public void RefreshUI()
    {
        PlayerData pd = GameRoot.instance.Playerdata;

        SetText(txtFight, PECommon.GetFightByPlayerData(pd));
        SetText(txtLV, pd.lv);
        SetText(txtPower, "体力:" + pd.power + "/" + PECommon.GetPowerLimit(pd.lv));
        //需要限制不要超出范围吗?
        imgPowerPrg.fillAmount = pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv);
        SetText(txtName, pd.name);

        #region ExpProgress
        int expValPercent = (int)(pd.exp * 1.0f / PECommon.GetExpUpValByLv(pd.lv) * 100);
        SetText(txtExpPrg, expValPercent + "%");
        int             index = expValPercent / 10;
        GridLayoutGroup grid  = expProgramTrans.GetComponent <GridLayoutGroup>();
        //得到 标准高度和当前高度的比例,然后乘以当前宽度得到真实宽度,然后减掉间隙计算经验条宽度
        float screenRate  = 1.0f * Constants.screenStandardHeight / Screen.height;
        float screenWidth = Screen.width * screenRate;
        float width       = (screenWidth - 180) / 10;

        grid.cellSize = new Vector2(width, 7);

        for (int i = 0; i < expProgramTrans.childCount; i++)
        {
            Image expImageValue = expProgramTrans.GetChild(i).GetComponent <Image>();
            if (i < index)
            {
                expImageValue.fillAmount = 1;
            }
            else if (i == index)
            {
                expImageValue.fillAmount = expValPercent * 1.0f % 10 / 10;
            }
            else
            {
                expImageValue.fillAmount = 0;
            }
        }
        #endregion

        //设置自动任务图标
        currentTaskData = resSvc.GetGuideCfgData(pd.guideid);
        if (currentTaskData != null)
        {
            SetGuideBtnIcon(currentTaskData.npcID);
        }
        else
        {//没任务就显示默认图标
            SetGuideBtnIcon(-1);
        }
    }
コード例 #15
0
    /// <summary>
    /// 在线玩家计算体力增长与消息推送
    /// </summary>
    /// <param name="tid"></param>
    public void CalcPowerAdd(int tid)
    {
        //计算体力增长
        PECommon.Log("All Online Player Calc Power Incress....");
        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.PshPower
        };

        msg.pshPower = new PshPower();

        //所有在线玩家获得实时的体力增长推送数据
        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd       = item.Value;
            ServerSession session  = item.Key;
            int           power    = pd.power;
            int           powerMax = PECommon.GetPowerLimit(pd);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += PECommon.PowerAddCount;
                pd.time   = timerSvc.GetNowTime();
                if (pd.power > powerMax)
                {
                    pd.power = powerMax;
                }
            }
            if (pd.power != power)
            {
                pd.time = timerSvc.GetNowTime();
                if (!cacheSvc.UpdatePlayerData(pd.id, pd))
                {
                    msg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    msg.pshPower.power = pd.power;
                    session.SendMsg(msg);//推送给在线玩家
                }
            }
        }
    }
コード例 #16
0
    private void CalcPowerAdd(int tId)
    {
        //计算体力增长

        GameMsg msg = new GameMsg
        {
            cmd      = (int)CMD.PshPower,
            pshPower = new PshPower()
        };

        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd      = item.Value;
            ServerSession session = item.Key;

            int powerMax = PECommon.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                //不回复体力
                continue;
            }
            else
            {
                //回复体力
                pd.power += PECommon.PowerAddCount;
                if (pd.power > powerMax)
                {
                    //限定回复,防止溢出体力最大值
                    pd.power = powerMax;
                    pd.time  = timeSvc.GetNowTime();
                }


                if (!cacheSvc.UpdataPlayerData(pd.id, pd))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    msg.pshPower.power = pd.power;
                    session.SendMsg(msg);
                }
            }
        }
    }
コード例 #17
0
ファイル: PowerSys.cs プロジェクト: yoyo-sincerely/DarkGod
    /// <summary>
    /// 增加体力
    /// </summary>
    private void CalcPowerAdd(int tid)
    {
        // 计算体力增长
        PECommon.Log("所有在线玩家的体力增长计算....");
        GameMsg msg = new GameMsg {
            cmd = (int)CMD.PshPower
        };

        msg.pshPower = new PshPower();

        // 所有在线玩家获得实时的体力增长,推送数据
        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd      = item.Value;
            ServerSession session = item.Key;
            // 体力增长上限
            int powerMax = PECommon.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += PECommon.PowerAddCount;
                pd.time   = timerSvc.GetNowTime(); // 更新玩家在线时间
                if (pd.power > powerMax)           // 上限
                {
                    pd.power = powerMax;
                }
            }
            // 将更新后的数据,更新到缓存
            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.pshPower.power = pd.power;
                session.SendMsg(msg);
            }
        }
    }
コード例 #18
0
    private void RefreshUI()
    {
        PlayerData playerData = GameRoot.Instance.PlayerData;

        SetText(txtFight, PECommon.GetFightByProps(playerData));
        int powerLimit = PECommon.GetPowerLimit(playerData.lv);

        SetText(txtPower, "体力:" + playerData.power + "/" + powerLimit);
        imgPowerPrg.fillAmount = playerData.power * 1.0f / powerLimit;
        SetText(txtLevel, playerData.lv);
        SetText(txtName, playerData.name);

        //经验条自适应
        int expPrgVal = (int)(playerData.exp * 1.0f / PECommon.GetExpUpValByLv(playerData.lv) * 100);

        SetText(txtExpPrg, expPrgVal + "%");
        int index = expPrgVal / 10;

        GridLayoutGroup grid        = expPrgTrans.GetComponent <GridLayoutGroup>();
        float           globalRate  = 1.0f * Constants.ScreenStandardHeight / Screen.height;
        float           screenWidth = Screen.width * globalRate;
        float           width       = (screenWidth - 180) / 10;

        grid.cellSize = new Vector2(width, 7);
        for (int i = 0; i < expPrgTrans.childCount; i++)
        {
            Image img = expPrgTrans.GetChild(i).GetComponent <Image>();
            if (i < index)
            {
                img.fillAmount = 1;
            }
            else if (i == index)
            {
                img.fillAmount = expPrgVal % 10 * 1.0f / 10;
            }
            else
            {
                img.fillAmount = 0;
            }
        }
    }
コード例 #19
0
ファイル: MainCityWnd.cs プロジェクト: yoyo-sincerely/DarkGod
    /// <summary>
    /// 刷新界面 UI
    /// </summary>
    public void RefreshUI()
    {
        PlayerData pd = GameRoot.Instance.PlayerData;

        SetText(txtFight, PECommon.GetFightByProps(pd));
        SetText(txtPower, pd.power + "/" + PECommon.GetPowerLimit(pd.lv));
        imgPowerPrg.fillAmount = pd.power * 1.0f / PECommon.GetPowerLimit(pd.lv);
        SetText(txtLv, pd.lv);
        SetText(txtName, pd.name);
        ExpPrg(pd);

        // 设置自动任务图比
        curtTaskData = resSvc.GetAutoGuideCfg(pd.guideid);
        if (curtTaskData != null)
        {
            SetGuideBtnIcon(curtTaskData.npcID);
        }
        else
        {
            SetGuideBtnIcon(-1);
        }
    }
コード例 #20
0
ファイル: PowerSys.cs プロジェクト: BINPAN2/ARPG_Server
    public void CalcPowerAdd(int tid)
    {
        //计算体力增长 TODO
        PECommon.Log("All Online Player Calc Power Increase");
        GameMsg msg = new GameMsg {
            cmd      = (int)CMD.PshPower,
            pshPower = new PshPower(),
        };


        //所有在线玩家获得实时的体力增长推送数据
        Dictionary <ServerSession, PlayerData> onlineDic = CacheSvc.Instance.GetOnlineCache();

        List <ServerSession> serverlist = new List <ServerSession>(onlineDic.Keys);

        for (int i = 0; i < onlineDic.Count; i++)
        {
            PlayerData    pd      = onlineDic[serverlist[i]];
            ServerSession session = serverlist[i];

            int powerMax = PECommon.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += PECommon.PowerAddCount;
                pd.time   = TimeSvc.Instance.GetNowTime();
                if (pd.power > powerMax)
                {
                    pd.power = powerMax;
                }
            }
            if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, session))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.pshPower.power = pd.power;
            }
            session.SendMsg(msg);
        }

        //foreach (var item in onlineDic)
        //{
        //    PlayerData pd = item.Value;
        //    ServerSession session = item.Key;

        //    int powerMax = PECommon.GetPowerLimit(pd.lv);

        //    if (pd.power>=powerMax)
        //    {
        //        continue;
        //    }
        //    else
        //    {
        //        pd.power += PECommon.PowerAddCount;
        //        if (pd.power > powerMax)
        //        {
        //            pd.power = powerMax;
        //        }
        //    }
        //    if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, session))
        //    {
        //        msg.err = (int)ErrorCode.UpdateDBError;
        //    }
        //    else
        //    {
        //        msg.pshPower.power = pd.power;
        //    }
        //    session.SendMsg(msg);
        //}
    }
コード例 #21
0
ファイル: MainCityWind.cs プロジェクト: wangzeping1998/-
    //刷新UI信息
    public void RefreshUI()
    {
        if (GetWindowState() == false)
        {
            return;
        }

        PlayerData playerData = GameRoot.instance.playerData;
        int        fight      = PECommon.GetFightProps(playerData);
        int        power      = PECommon.GetPowerLimit(playerData.lv);

        //为UI赋值
        SetText(txtFight, fight);
        SetText(txtPower, new StringBuilder("体力:").Append(playerData.power).Append("/").Append(power).ToString());
        imgPowerPrg.fillAmount = playerData.power * 1.0f / power;
        SetText(txtLevel, playerData.lv);
        SetText(txtName, playerData.name);

        #region ExpPrg

        //经验值条自适应
        GridLayoutGroup grid        = expPrgTrans.GetComponent <GridLayoutGroup>();
        float           globalScale = 1.0f * Constants.ScreenStandardHeight / Screen.height;
        float           screenWidth = Screen.width * globalScale;
        float           width       = (screenWidth - 180) / 10;

        grid.cellSize = new Vector2(width, 7);

        //计算经验值百分比
        int expProVal = (int)(playerData.exp * 1.0f / PECommon.GetExpUpValByLv(playerData.lv) * 100);
        SetText(txtExpPrg, expProVal + "%");

        //填充经验值进度条
        int index = expProVal / 10;
        for (int i = 0; i < expPrgTrans.childCount; i++)
        {
            Image img = expPrgTrans.GetChild(i).GetComponent <Image>();
            if (i < index)
            {
                img.fillAmount = 1;
            }
            else if (i == index)
            {
                img.fillAmount = expProVal % 10 * 1.0f / 10;
            }
            else
            {
                img.fillAmount = 0;
            }
        }

        #endregion

        m_curTaskData = resSvc.GetGuideCfgData(playerData.guideId);
        if (m_curTaskData != null)
        {
            SetGuideBtnIcon(m_curTaskData.npcID);
        }
        else
        {
            SetGuideBtnIcon(-1);
        }
    }
コード例 #22
0
ファイル: LoginSys.cs プロジェクト: imgoul/DarkGodServer
    /// <summary>
    /// 响应登录请求
    /// </summary>
    /// <param name="msg"></param>
    public void ReqLogin(MsgPack pack)
    {
        ReqLogin data = pack.Msg.reqLogin;

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

        //当前账号是否上线
        if (cacheSvc.IsAcctOnLine(data.acct))
        {
            //已上线:返回错误信息
            msg.err = (int)ErrorCode.AcctIsOnLine;
        }
        else
        {
            //未上线:检测账号是否存在
            PlayerData _palyerData = cacheSvc.GetPlayerData(data.acct, data.pass);
            if (_palyerData == null) //账号存在,密码错误
            {
                msg.err = (int)ErrorCode.WrongPass;
            }
            else //账号密码正确
            {
                #region 计算离线体力增长

                //计算离线体力增长
                int  power        = _palyerData.power;
                long now          = timerSvc.GetNowTime();
                long milliseconds = now - _palyerData.time;
                int  addPower     = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount;
                if (addPower > 0)
                {
                    int powerMax = PECommon.GetPowerLimit(_palyerData.lv);
                    if (_palyerData.power < powerMax)
                    {
                        _palyerData.power += addPower;
                        if (_palyerData.power > powerMax)
                        {
                            _palyerData.power = powerMax;
                        }
                    }
                }

                if (power != _palyerData.power)
                {
                    cacheSvc.UpdatePlayerData(_palyerData.id, _palyerData);
                }
                #endregion


                msg.rspLogin = new RspLogin
                {
                    playerData = _palyerData
                };
            }

            //缓存账号数据
            cacheSvc.AcctOnline(data.acct, pack.Session, _palyerData);
        }

        //回应客户端
        pack.Session.SendMsg(msg);
    }