xy 1 долоо хоног өмнө
parent
commit
d24b184a2a

+ 0 - 3
src/server/game/ludo/battle.go

@@ -2,7 +2,6 @@ package ludo
 
 import (
 	"server/game"
-	"server/game/internal"
 	"server/msg"
 	"time"
 )
@@ -12,9 +11,7 @@ type RoomInfoWrapper struct {
 }
 
 func init() {
-	internal.Handler(&msg.SendColorSz{}, RecvPlayerSzNumber)
 
-	internal.Handler(&msg.SendRoleMove{}, RecvPlayerRoleMove)
 }
 
 // 清理解散的房间

+ 18 - 16
src/server/game/ludo/event.go

@@ -1,30 +1,32 @@
 package ludo
 
 import (
-	"log"
-	"server/events"
 	"server/game/internal"
 	"server/msg"
 )
 
 func handleEvents() {
-	for event := range events.EventChan {
-		switch event.Type {
-		case events.EventLudoMatch:
-			userId := internal.GetUserIDByAgent(event.Agent)
-			if userId != "" {
-				if matchData, ok := event.Data.(*msg.MatchLudo); ok {
-					matchRoom(matchData, userId, event.Agent)
-				} else {
-					// Handle type assertion error
-					log.Printf("invalid match data type: %T", event.Data)
-				}
-			}
+	// for event := range events.EventChan {
+	// 	switch event.Type {
+	// 	case events.EventLudoMatch:
+	// 		userId := internal.GetUserIDByAgent(event.Agent)
+	// 		if userId != "" {
+	// 			if matchData, ok := event.Data.(*msg.MatchLudo); ok {
+	// 				matchRoom(matchData, userId, event.Agent)
+	// 			} else {
+	// 				// Handle type assertion error
+	// 				log.Printf("invalid match data type: %T", event.Data)
+	// 			}
+	// 		}
 
-		}
-	}
+	// 	}
+	// }
 }
 
 func init() {
+	internal.Handler(&msg.SendColorSz{}, RecvPlayerSzNumber)
 
+	internal.Handler(&msg.SendRoleMove{}, RecvPlayerRoleMove)
+
+	internal.Handler(&msg.MatchLudo{}, RecvMatchLudo)
 }

+ 24 - 0
src/server/game/ludo/match.go

@@ -6,6 +6,14 @@ import (
 	"github.com/name5566/leaf/gate"
 )
 
+func RecvMatchLudo(args []interface{}) {
+	m := args[0].(*msg.MatchLudo)
+	a := args[1].(gate.Agent)
+	ud := a.UserData()
+	user_id := ud.(*msg.UserInfo).UserId
+	go matchRoom(m, user_id, a)
+}
+
 //根据玩家要匹配的对局,给玩家寻找和的房间
 
 func matchRoom(matchInfo *msg.MatchLudo, userId string, user_agent gate.Agent) {
@@ -23,6 +31,7 @@ func matchRoom(matchInfo *msg.MatchLudo, userId string, user_agent gate.Agent) {
 		if err_info != nil {
 			if isFullPlayer {
 				startGame(roomList[0])
+				NotifyRoomPlayerMatch(roomList[0])
 			}
 		} else {
 			sendMatchErrorMsg(user_agent, 101, "not find player")
@@ -30,6 +39,21 @@ func matchRoom(matchInfo *msg.MatchLudo, userId string, user_agent gate.Agent) {
 	}
 }
 
+// 通知房间玩家匹配成功
+func NotifyRoomPlayerMatch(room_info *msg.RoomInfo) {
+	for i := range room_info.Colors {
+		user_id := room_info.Colors[i].MId
+		user_agent := getAgentByUserId(user_id)
+		if user_agent != nil {
+			user_agent.WriteMsg(&msg.ResMatchLudo{
+				Room:    room_info,
+				Success: true,
+				ErrMsg:  nil,
+			})
+		}
+	}
+}
+
 func sendMatchErrorMsg(user_agent gate.Agent, error_code int32, msg_str string) {
 	if user_agent != nil {
 		user_agent.WriteMsg(&msg.ResMatchLudo{

+ 1 - 1
src/server/gate/router.go

@@ -11,10 +11,10 @@ func init() {
 	msg.Processor.SetRouter(&msg.ReqLogin{}, login.ChanRPC)
 	msg.Processor.SetRouter(&msg.ReqRegister{}, login.ChanRPC)
 
-	msg.Processor.SetRouter(&msg.MatchLudo{}, hall.ChanRPC)
 	msg.Processor.SetRouter(&msg.EnterHall{}, hall.ChanRPC)
 	msg.Processor.SetRouter(&msg.ReqHeartBeat{}, game.ChanRPC)
 	msg.Processor.SetRouter(&msg.SendColorSz{}, game.ChanRPC)
 	msg.Processor.SetRouter(&msg.SendRoleMove{}, game.ChanRPC)
+	msg.Processor.SetRouter(&msg.MatchLudo{}, game.ChanRPC)
 
 }

+ 0 - 14
src/server/hall/internal/handler.go

@@ -3,7 +3,6 @@ package internal
 import (
 	"reflect"
 	redismgr "server/db/redis"
-	"server/events"
 	"server/msg"
 
 	"github.com/name5566/leaf/gate"
@@ -18,7 +17,6 @@ func handleMsg(m interface{}, h interface{}) {
 func init() {
 	handleMsg(&msg.EnterHall{}, enterHall)
 	handleMsg(&msg.LeaveHall{}, leaveHall)
-	handleMsg(&msg.MatchLudo{}, MatchLudo)
 }
 
 func enterHall(args []interface{}) {
@@ -53,15 +51,3 @@ func leaveHall(args []interface{}) {
 	a := args[1].(gate.Agent)
 	log.Debug("leaveHallHandler, msg: %v, agent: %v", m, a)
 }
-
-// ludo匹配
-func MatchLudo(args []interface{}) {
-	m := args[0].(*msg.MatchLudo)
-	a := args[1].(gate.Agent)
-	events.EventChan <- events.Event{
-		Type:  events.EventLudoMatch,
-		Data:  m,
-		Agent: a,
-	}
-	log.Debug("MatchLudo, msg: %v, agent: %v", m, a)
-}