private static async Task <BaseResponseData> DestoryBuild() { DestoryBuildResult result = new DestoryBuildResult(); if (User.bytes == null) { result.Result = GameEnum.WsResult.ParamsError; return(result); } var data = await InitHelpers.GetPse().DeserializeAsync <DestoryBuildReq>(User.bytes); if (data == null) { result.Result = GameEnum.WsResult.ParamsError; return(result); } return(await BuildController.Instance.DestoryBuild(data.Id, result)); }
public async Task <BaseResponseData> DestoryBuild(string buildId, DestoryBuildResult result) { //检查店铺是否属于自己 var roleId = LogicServer.User.role.Id; //var roleBuildList = await BuildIdDataHelper.Instance.GetBuildIdListByRoleId(roleId); //if (roleBuildList != null) //{ // if (roleBuildList.Contains(buildId)) // { var build = await BuildDataHelper.Instance.GetBuildByBuildId(buildId); if (build != null) //拿到店铺 { if (build.RoleId.Equals(roleId.ToString())) { var config = AutoData.BuildingLevel.GetForId(build.Level); var goldType = config.DismantleCost.CurrencyID; var goldCount = config.DismantleCost.Count; var land = await LandController.Instance.GetLandCell(build.Pos); FinanceLogData log = new FinanceLogData() { Count = goldCount, MoneyType = goldType, Type = (int)GameEnum.FinanceLog.DestoryBuild, AorD = false }; FinanceLogData log1 = new FinanceLogData() { Count = build.CostGold, MoneyType = (int)GameEnum.Currency.Gold, Type = (int)GameEnum.FinanceLog.DestoryBuild }; using (var tx = LogicServer.Instance.StateManager.CreateTransaction()) { await BagDataHelper.Instance.DecGold(goldCount, goldType, tx); //扣除货币 await BagDataHelper.Instance.AddGold(build.CostGold, (int)GameEnum.Currency.Gold, tx); //返还消耗掉的金砖 await RoleController.Instance.AddIncome(roleId, build.Income, tx); //更新身价 { //销毁店铺 await BuildDataHelper.Instance.RemoveBuildByBuildId(buildId, tx); await BuildIdDataHelper.Instance.RemoveOneBuildIdByRoleId(roleId, buildId, tx); await BuildIdPosDataHelper.Instance.RemoveBuildIdByPos(build.Pos, tx); } { //更新土地状态 if (land != null) { land.ShopId = string.Empty; land.State = (int)GameEnum.MapStatus.Saled; } await LandController.Instance.UpdateLandCell(build.Pos, land, tx); } await FinanceLogController.Instance.UpdateFinanceLog(roleId, log, tx); await FinanceLogController.Instance.UpdateFinanceLog(roleId, log1, tx); await tx.CommitAsync(); } await MsgSender.Instance.UpdateIncome(); await MsgSender.Instance.UpdateGold(goldType); await MsgSender.Instance.UpdateGold((int)GameEnum.Currency.Gold); await MsgSender.Instance.FinanceLogUpdate(log); await MsgSender.Instance.FinanceLogUpdate(log1); result.LandInfo.BuildId = build.Id; result.LandInfo.PosX = land.PosX; result.LandInfo.PoxY = land.PoxY; result.LandInfo.RoleId = land.RoleId; result.LandInfo.State = land.State; build = null; return(result); } else { result.Result = GameEnum.WsResult.BuildIsNotExists; return(result); } } else { result.Result = GameEnum.WsResult.NoneBuilds; return(result); } // else // { // result.Result = GameEnum.WsResult.BuildIdNotOwnRole; // return result; // } //} }