/// <summary> /// 添加道具进背包 /// </summary> /// <param name="sm"></param> /// <param name="roleId"></param> /// <param name="itemId"></param> /// <param name="count"></param> /// <returns></returns> public async Task <AddItemResult> AddItemToRoleBag(int itemId, long count) { var item = GetItemById(itemId); if (item == null) { return(null); } AddItemResult result = new AddItemResult(); if (!CheckBagSpace(itemId, count)) { result.Result = GameEnum.WsResult.NotEnoughBagSpace; return(result); } var itemCount = new Dictionary <int, long>(); itemCount.Add(itemId, count); result = await AddItemToRoleBag(itemCount); var data = await InitHelpers.GetPse().SerializeAsync(result); await MsgMaker.SendMessage(WSResponseMsgID.AddItemResult, 1, data); //写入队列 return(result); }
/// <summary> /// /// </summary> /// <param name="id">道具集合</param> /// <param name="oldAvatar">key=部位 value=道具id</param> /// <returns></returns> private async Task UpdateAvaterAsync(int[] id, Dictionary <int, int> oldAvatar) { var role = LogicServer.User.role; UpdateAvatarResult result = new UpdateAvatarResult(); foreach (var i in oldAvatar) { foreach (var j in id) { var tmp = GetItemById(j); if (tmp.Parts.Contains(i.Key)) { role.Avatar.Remove(i.Value); if (!role.Avatar.Contains(j)) { role.Avatar.Add(j); result.Id.Add(j); } } } } await RoleDataHelper.Instance.UpdateRoleByRoleIdAsync(role.Id, role); var data = await InitHelpers.GetPse().SerializeAsync(result); await MsgMaker.SendMessage(WSResponseMsgID.UpdateAvatarResult, 1, data); }
/// <summary> /// 房间改变 /// </summary> /// <param name="newRoom"></param> private async Task <GameEnum.WsResult> ChangeRoom(Room currRoom, Room newRoom) { var user = LogicServer.User; var result = GameEnum.WsResult.Success; //同样的? if (newRoom.RoomId == currRoom.RoomId) { return(result); } //是否有足够的货币 var roominfo = AutoData.Room.GetForKey(newRoom.RoomId); var has = BagController.Instance.CheckMoney((long)roominfo.Cost.Count, roominfo.Cost.ItemId); if (!has) { result = GameEnum.WsResult.NotEnoughMoney; return(result); } //卖掉房间减少身价 var cost = -AutoData.Room.GetForKey(currRoom.RoomId).Status; //增长的身份 cost += roominfo.Status; ////-------------- //消耗货币,通知减少 if (roominfo.Cost.Count != 0) { await BagController.Instance.UseItemsAsync(SM, user.role.Id, roominfo.Cost.ItemId, (long)roominfo.Cost.Count);//db msg } //把当前的家具添加到背包中 foreach (var itemId in currRoom.Config.Values) { await BagController.Instance.AddItemToRoleBag(itemId, 1);//db } //获得新房间 await Data.Helper.RoomData.Instance.UpdateRoomData(newRoom);//db user.role.SocialStatus += cost; await MsgSender.Instance.UpdateIncome();//db ////--------------- //通知房间信息更新 var send = await GetRoom(user.role.Id); await MsgMaker.SendMessage(WSResponseMsgID.RoomResult, send);//msg return(result); }