/// <summary>
        /// Entity转Model
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        private V_xy_sp_userspirit  EntityToModel(xy_sp_userspirit entity)
        {
            if (entity != null)
            {
                V_xy_sp_userspirit model = new V_xy_sp_userspirit()
                {
                    UserSpiritID       = entity.UserSpiritID,
                    UserId             = entity.UserId,
                    SpiritID           = entity.SpiritID,
                    SpiritName         = entity.SpiritName,
                    SpiritLifeMax      = entity.SpiritLifeMax,
                    SpiritMagicMax     = entity.SpiritMagicMax,
                    SpiritLife         = entity.SpiritLife,
                    SpiritMagic        = entity.SpiritMagic,
                    PhysicalResistance = entity.PhysicalResistance,
                    MagicResistance    = entity.MagicResistance,
                    SpiritLevel        = entity.SpiritLevel,
                    SpiritExperience   = entity.SpiritExperience,
                    SpiritMoney        = entity.SpiritMoney,
                    PhysicalHarm       = entity.PhysicalHarm,
                    MagicHarm          = entity.MagicHarm,
                    Spiritspeed        = entity.Spiritspeed,
                    CurrentTaskID      = entity.CurrentTaskID,
                    Maxpackage         = entity.Maxpackage
                };

                return(model);
            }

            return(null);
        }
        /// <summary>
        /// Model转Entity
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private xy_sp_userspirit ModelToEntity(V_xy_sp_userspirit model)
        {
            if (model != null)
            {
                xy_sp_userspirit entity = new xy_sp_userspirit()
                {
                    UserSpiritID       = model.UserSpiritID,
                    UserId             = model.UserId,
                    SpiritID           = model.SpiritID,
                    SpiritName         = model.SpiritName,
                    SpiritLifeMax      = model.SpiritLifeMax,
                    SpiritMagicMax     = model.SpiritMagicMax,
                    SpiritLife         = model.SpiritLife,
                    SpiritMagic        = model.SpiritMagic,
                    PhysicalResistance = model.PhysicalResistance,
                    MagicResistance    = model.MagicResistance,
                    SpiritLevel        = model.SpiritLevel,
                    SpiritExperience   = model.SpiritExperience,
                    SpiritMoney        = model.SpiritMoney,
                    PhysicalHarm       = model.PhysicalHarm,
                    MagicHarm          = model.MagicHarm,
                    Spiritspeed        = model.Spiritspeed,
                    CurrentTaskID      = model.CurrentTaskID,
                    Maxpackage         = model.Maxpackage
                };

                return(entity);
            }
            return(null);
        }
Beispiel #3
0
        /// <summary>
        /// 战斗并返回所有怪物状态
        /// </summary>
        /// <param name="FighterFrom">用户精灵</param>
        /// <param name="skill">技能</param>
        /// <param name="FighterToList"></param>
        /// <returns></returns>
        public V_xy_sp_userView UserStartFight(V_xy_sp_userView userView, string skillName, ref string batmsgAll)
        {
            V_xy_sp_userspirit    FighterFrom   = userView.Spirit;
            V_xy_sp_skill         skill         = userView.Spirit.spSkillList[0].skill;
            List <V_xy_sp_spirit> FighterToList = userView.Task.SpiritsList;

            List <V_xy_sp_spirit> FighterToResult = new List <V_xy_sp_spirit>();

            FighterFrom.SpiritMagic = FighterFrom.SpiritMagic - skill.ExpendValue;

            int maxInjuryCount = 0;

            foreach (V_xy_sp_spirit spirit in FighterToList)
            {
                if (spirit.SpiritLife <= 0)
                {
                    continue;   //生命值低于0跳过
                }
                if (skill.isGroupinjury == 1 && maxInjuryCount == FighterToList.Count)
                {
                    //如果是群攻并且攻击次数已到最大次数,不攻击
                    FighterToResult.Add(spirit);
                    continue;
                }
                else if (maxInjuryCount == 1)
                {
                    //如果非群攻,不攻击
                    FighterToResult.Add(spirit);
                    continue;
                }
                string batmsg = string.Empty;
                SkillInjury(FighterFrom, skill, spirit, ref batmsg);
                batmsgAll = batmsgAll + System.Environment.NewLine + batmsg;
                maxInjuryCount++;
                FighterToResult.Add(spirit);
                //所有怪物已阵亡
                if (spirit == FighterToList.LastOrDefault())
                {
                    if (spirit.SpiritLife <= 0)
                    {
                        xy_sp_taskBLL tkBll      = new xy_sp_taskBLL();
                        string        NextTaskID = tkBll.GetNextTaskIDByTaskID(FighterFrom.CurrentTaskID);

                        userView.Task.IsClear = "1";
                        userView.NextTask     = tkBll.getTaskContext(NextTaskID);
                    }
                }
            }


            userView.Task.SpiritsList = FighterToResult;

            return(userView);
        }
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool Edit(V_xy_sp_userspirit model)
        {
            if (model == null)
            {
                return(false);
            }
            using (xy_sp_userspiritDAL dal = new xy_sp_userspiritDAL()){
                xy_sp_userspirit entitys = ModelToEntity(model);

                return(dal.Edit(entitys));
            }
        }
        void ws_NewMessageReceived(WebSocketSession session, string value)
        {
            string SpiritJsonData = string.Empty;

            try
            {
                string           tokenValue = session.Path.Split('=')[1];
                V_xy_sp_userView userView   = CacheServer.GetUserViewFromCache(tokenValue);
                switch (value)
                {
                case "skill1":
                    string batmsgAll = string.Empty;
                    fighter = new FightHelper_User();
                    //List<V_xy_sp_spirit> Enemys
                    V_xy_sp_userView userViewResult = fighter.UserStartFight(userView, "skill1", ref batmsgAll);

                    //更新缓存的敌人信息
                    //userView.Task.SpiritsList.Clear();
                    //userView.Task.SpiritsList.AddRange(Enemys);
                    CacheServer.UpdatetUserViewCache(tokenValue, userView);

                    ResponseObj <V_xy_sp_userView> resBat = new ResponseObj <V_xy_sp_userView>()
                    {
                        DataType    = "batinfo",
                        ObjType     = "obj",
                        IsSuccess   = "1",
                        Data        = userViewResult,
                        MessageInfo = batmsgAll
                    };
                    SpiritJsonData = JsonConvert.SerializeObject(resBat);
                    break;

                default:
                    V_xy_sp_userspirit   spirit = userView.Spirit;
                    ResponseObj <string> resMsg = new ResponseObj <string>()
                    {
                        DataType  = "msginfo",
                        ObjType   = "obj",
                        IsSuccess = "1",
                        Data      = spirit.SpiritName + " 说:" + value
                    };
                    SpiritJsonData = JsonConvert.SerializeObject(resMsg);
                    break;
                }
                SendToAll(session, SpiritJsonData);
            }catch (Exception ex)
            {
                Tracer.Debug(ex.ToString());
            }
        }
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public string Add(V_xy_sp_userspirit model)
        {
            if (model == null)
            {
                return(string.Empty);
            }

            using (xy_sp_userspiritDAL dal = new xy_sp_userspiritDAL()){
                xy_sp_userspirit entity = ModelToEntity(model);
                entity.UserSpiritID = string.IsNullOrEmpty(model.UserSpiritID) ? Guid.NewGuid().ToString("N") : model.UserSpiritID;

                return(dal.Add(entity));
            }
        }
        public IHttpActionResult Post([FromBody] Request <V_xy_sp_userspirit> request)
        {
            V_xy_sp_userspirit model = request.Data as V_xy_sp_userspirit;

            if (string.IsNullOrEmpty(model.UserSpiritID))
            {
                bll.Add(model);
            }
            else
            {
                bll.Edit(model);
            }

            return(Ok("ok"));
        }
        private V_xy_sp_spirit SkillInjury(V_xy_sp_userspirit FighterFrom, V_xy_sp_skill skill, V_xy_sp_spirit FighterTo, ref string batmsg)
        {
            V_xy_sp_spirit Fightersult = new V_xy_sp_spirit();

            switch (skill.SkillType)
            {
            case "1":  //物理伤害
                       //我方增加经验
                updateEnemy(FighterFrom, FighterTo, skill, ref batmsg);
                break;

            default:
                updateEnemy(FighterFrom, FighterTo, skill, ref batmsg);
                break;
            }
            Fightersult = FighterTo;
            return(Fightersult);
        }
        /// <summary>
        /// 我方对怪物的伤害杀死的情况
        /// </summary>
        /// <param name="FighterFrom"></param>
        /// <param name="FighterTo"></param>
        private void updateEnemy(V_xy_sp_userspirit FighterFrom, V_xy_sp_spirit FighterTo, V_xy_sp_skill skill, ref string batmsg)
        {
            var LifeLeftValue = FighterTo.SpiritLife - skill.SkillGainValue;

            if (LifeLeftValue <= 0)//敌人已死亡
            {
                batmsg = "\"" + FighterFrom.SpiritName + "\"使用\"" + skill.SkillName + "\"杀死了\"" + FighterTo.SpiritName;
                //更新等级和经验
                xy_sp_userspiritBLL uspBll     = new xy_sp_userspiritBLL();
                decimal             Experience = FighterTo.SpiritExperience.Value;
                batmsg += " 获得" + Experience + "点经验 ";
                FighterFrom.SpiritExperience += Experience;
                //等级
                if (FighterFrom.SpiritExperience > LevelExperience(FighterFrom.SpiritLevel.Value))
                {
                    FighterFrom.SpiritLevel = FighterFrom.SpiritLevel + 1;
                    batmsg += System.Environment.NewLine + " 恭喜你升到" + FighterFrom.SpiritLevel + "级";
                    FighterFrom.SpiritExperience = FighterFrom.SpiritExperience - LevelExperience(FighterFrom.SpiritLevel.Value);
                }
                uspBll.Edit(FighterFrom);
                //我方获取敌方装备
                xy_sp_userspiritpackageBLL spBll = new xy_sp_userspiritpackageBLL();
                foreach (var item in FighterTo.spiritEquipmentList)
                {
                    V_xy_sp_userspiritpackage packageItem = new V_xy_sp_userspiritpackage();
                    packageItem.UserSpiritID = FighterFrom.UserSpiritID;
                    packageItem.EquipmentID  = item.EquipmentID;
                    spBll.Add(packageItem);
                    batmsg += System.Environment.NewLine + " 本次战斗意外获得:" + item.EquipmentName;
                }
            }
            else
            {
                batmsg = "\"" + FighterFrom.SpiritName + "\"使用\"" + skill.SkillName + "\"攻击\"" + FighterTo.SpiritName + "\"造成\"" + skill.SkillGainValue + "\"点物理伤害";
            }
            //更新怪物生命值
            FighterTo.SpiritLife = LifeLeftValue;
        }
        public IHttpActionResult Get(string ID)
        {
            V_xy_sp_userspirit model = bll.Get(p => p.UserSpiritID == ID);

            return(Ok(model));
        }
        public IHttpActionResult GetByUserID(string UserID)
        {
            V_xy_sp_userspirit model = bll.Get(p => p.UserId == UserID);

            return(Ok(model));
        }