123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- --[[
- Descripttion:房间管理
- version:
- Author: Neo,Huang
- Date: 2023-11-16 22:19:05
- LastEditors: Neo,Huang
- LastEditTime: 2023-11-16 23:19:50
- --]]
- local code = require("code")
- local baseService = require("baseService")
- local util_match = require("utils.util_match")
- local util_user = require("utils.util_user")
- local nodeMgr = require("nodeMgr")
- local gameConst = require("const.gameConst")
- local battleData = require("data.battle")
- local bagData = require("data.bag")
- local root = {}
- -- 坐下
- function root.seat_down(uid, roomId, seatId)
- if is_empty(roomId) or is_empty(seatId) then
- return code.PARAMTER_ERROR
- end
- -- 房间是否存在
- if not util_match:is_room_exist(roomId) then
- -- 房间不存在
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_ROOM_NOT_EXIST})
- return
- end
- local seatUid = util_match:get_seat_player(roomId, seatId)
- if not is_empty(seatUid) then
- -- 座位已占用
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_PLAYER_EXIST})
- return
- end
- local status = util_match:get_room_status(roomId)
- if status ~= 0 then
- -- 房间状态错误
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_BATTLE_START})
- return
- end
- -- 进入房间
- local _roomId = battleData:get_room_id()
- if not is_empty(_roomId) then
- local roomPlayerInfo = util_match:get_room_player_info(_roomId, uid)
- -- 同一个房间
- if roomId == _roomId then
- -- 相同位置
- if roomPlayerInfo.seatId == seatId then
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_SAME_PLACE})
- return
- end
- if not util_match:seat_down(uid, roomId, seatId) then
- -- 房间/座位不存在
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_NOT_ENTER_ROOM})
- return
- end
- -- 未坐下
- if is_empty(roomPlayerInfo.seatId) then
- -- 消耗道具
- local price = util_match:get_room_price(_roomId)
- local ok, costItems = bagData:is_enough(uid, {{id = gameConst.ITEM_ID.DIAMOND, count = price}})
- if not ok then
- util_user:user_proto_notify("on_room_seat_down", {code = code.BAG.ITEM_NOT_ENOUGH})
- return
- end
- -- 玩家绑定房间信息 - 且消耗道具
- util_match:band_room(uid, roomId, costItems)
- end
- util_user:user_proto_notify("on_room_seat_down", {code = code.OK})
- return
- end
- -- 不同房间 - 离开原来房间
- -- 房间状态
- local status = util_match:get_room_status(_roomId)
- if status > 0 then
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_BATTLE_START})
- return
- end
- if not is_empty(roomPlayerInfo.seatId) then
- -- 玩家解绑房间信息 - 且返还房费
- util_match:unband_room(uid, "seat")
- end
- -- 通知在线玩家 - 离开房间
- local pack = {
- type = 101,
- roomId = _roomId,
- changeRoomPlayer = {util_match:pack_room_player_info(_roomId, uid)}
- }
- nodeMgr.broadcast_proto_notify("on_room_player_change", pack)
- util_match:leave(uid, _roomId)
- end
- -- 消耗道具
- local price = util_match:get_room_price(roomId)
- local ok, costItems = bagData:is_enough(uid, {{id = gameConst.ITEM_ID.DIAMOND, count = price}})
- if not ok then
- util_user:user_proto_notify("on_room_seat_down", {code = code.BAG.ITEM_NOT_ENOUGH})
- return
- end
- if not util_match:seat_down(uid, roomId, seatId) then
- -- 房间/座位不存在
- util_user:user_proto_notify("on_room_seat_down", {code = code.BATTLE.SEAT_NOT_ENTER_ROOM})
- return
- end
- -- 玩家绑定房间信息 - 且消耗道具
- util_match:band_room(uid, roomId, costItems)
- -- 通知在线玩家 - 坐下
- local pack = {
- type = 102,
- roomId = roomId,
- changeRoomPlayer = {util_match:pack_room_player_info(roomId, uid)}
- }
- nodeMgr.broadcast_proto_notify("on_room_player_change", pack)
- -- 是否开始战斗
- if util_match:is_room_start_battle(roomId) then
- util_match:start_battle(roomId)
- end
- end
- function root.onStart()
- end
- function root.onStop()
- end
- baseService.start(root, ".srvRoom", true)
|