msg.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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(&MsgError{})
  37. Processor.Range(func(id uint16, t reflect.Type) {
  38. log.Debug("消息ID: %d, 消息类型: %s\n", id, t.Elem().Name())
  39. msgList = append(msgList, MsgInfo{
  40. ID: id,
  41. Name: t.Elem().Name(),
  42. })
  43. // fmt.Printf("消息ID: %d, 消息类型: %s\n", id, t.Elem().Name())
  44. })
  45. generateTSCode()
  46. }
  47. func generateTSCode() {
  48. var tsCode strings.Builder
  49. tsCode.WriteString("// 自动生成的消息ID映射\n")
  50. tsCode.WriteString("export enum MsgID {\n")
  51. for _, msg := range msgList {
  52. tsCode.WriteString(fmt.Sprintf(" %s = %d,\n", msg.Name, msg.ID))
  53. }
  54. tsCode.WriteString("}\n")
  55. // 写入文件
  56. err := os.WriteFile("/home/zjh/teen_patti/bin/client_msg/msg.ts", []byte(tsCode.String()), 0644)
  57. if err != nil {
  58. log.Error("生成 TypeScript 代码失败: %v", err)
  59. }
  60. }