msg.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package msg
  2. import (
  3. "fmt"
  4. "os"
  5. "reflect"
  6. "strings"
  7. "github.com/name5566/leaf/log"
  8. "github.com/name5566/leaf/network/protobuf"
  9. )
  10. var Processor = protobuf.NewProcessor()
  11. type MsgInfo struct {
  12. ID uint16
  13. Name string
  14. }
  15. var msgList []MsgInfo
  16. func init() {
  17. Processor.Register(&Hello{})
  18. Processor.Register(&ReqLogin{})
  19. Processor.Register(&ResLogin{})
  20. Processor.Register(&EnterHall{})
  21. Processor.Register(&LeaveHall{})
  22. Processor.Register(&ResJoinRoom{})
  23. Processor.Register(&ReqJoinRoom{})
  24. Processor.Register(&PlayList{})
  25. Processor.Register(&Shop{})
  26. Processor.Register(&ReqGameInfo{})
  27. Processor.Register(&ResGameInfo{})
  28. Processor.Register(&TeenPattiRoomList{})
  29. Processor.Register(&TeenPattiRoom{})
  30. Processor.Register(&ReqDealCard{})
  31. Processor.Register(&ReqPlayerAction{})
  32. Processor.Register(&ResPlayerOptAction{})
  33. // Processor.Register(&PlayerOptType{})
  34. // Processor.Register(&PlayerOpt{})
  35. Processor.Register(&ReqRound{})
  36. Processor.Register(&ReqBet{})
  37. // Processor.Register(&MsgError{})
  38. Processor.Register(&ReqPlayerList{})
  39. Processor.Register(&ReqResult{})
  40. Processor.Register(&ReqRoomTipsMessage{})
  41. Processor.Range(func(id uint16, t reflect.Type) {
  42. log.Debug("消息ID: %d, 消息类型: %s\n", id, t.Elem().Name())
  43. msgList = append(msgList, MsgInfo{
  44. ID: id,
  45. Name: t.Elem().Name(),
  46. })
  47. // fmt.Printf("消息ID: %d, 消息类型: %s\n", id, t.Elem().Name())
  48. })
  49. generateTSCode()
  50. }
  51. func generateTSCode() {
  52. var tsCode strings.Builder
  53. tsCode.WriteString("// 自动生成的消息ID映射\n")
  54. tsCode.WriteString("export enum MsgID {\n")
  55. for _, msg := range msgList {
  56. tsCode.WriteString(fmt.Sprintf(" %s = %d,\n", msg.Name, msg.ID))
  57. }
  58. tsCode.WriteString("}\n")
  59. // 写入文件
  60. err := os.WriteFile("/home/zjh/teen_patti/bin/client_msg/msg.ts", []byte(tsCode.String()), 0644)
  61. if err != nil {
  62. log.Error("生成 TypeScript 代码失败: %v", err)
  63. }
  64. }