Skip to content

Commit 0669240

Browse files
committed
fix: various generation errors fixed
1 parent 1e9e77b commit 0669240

File tree

5 files changed

+107
-96
lines changed

5 files changed

+107
-96
lines changed

apigen/api_generate.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func GenerateAPI(ctx context.Context, clientOutput, eventsOutput io.Writer) erro
3939

4040
// responseMsgs are messages that are known to be responses.
4141
responseMsgs := make(map[gcm.EDOTAGCMsg]struct{})
42-
// eventHandlers := make(map[gcm.EDOTAGCMsg]*generatedEventHandler)
42+
eventHandlers := make(map[gcm.EDOTAGCMsg]*generatedEventHandler)
4343

4444
for _, msgID := range msgIds {
4545
sender := GetMessageSender(msgID)
@@ -59,7 +59,7 @@ func GenerateAPI(ctx context.Context, clientOutput, eventsOutput io.Writer) erro
5959
}
6060

6161
requestFuncs = append(requestFuncs, genReqFunc)
62-
} /* else if sender == MsgSenderGC {
62+
} else if sender == MsgSenderGC {
6363
msgStr := msgID.String()
6464
if strings.HasSuffix(msgStr, "Response") {
6565
continue
@@ -71,7 +71,7 @@ func GenerateAPI(ctx context.Context, clientOutput, eventsOutput io.Writer) erro
7171
}
7272

7373
eventHandlers[msgID] = eventHandler
74-
}*/
74+
}
7575
}
7676

7777
sort.Slice(requestFuncs, func(i int, j int) bool {

apigen/api_generate_func.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/fatih/camelcase"
99
gcm "github.com/paralin/go-dota2/protocol/dota_gcmessages_msgid"
10+
"github.com/pkg/errors"
1011
)
1112

1213
// generatedRequestFunc is a auto-generated request.
@@ -53,11 +54,18 @@ func buildGeneratedRequestFunc(
5354

5455
genReqFunc.respType = respProtoType.Obj
5556
clientImports[respProtoType.Pak.Path()] = struct{}{}
57+
if genReqFunc.respType == genReqFunc.reqType {
58+
return nil, errors.Errorf("request type cannot be the same as response type: %s %s", msgID.String(), respProtoType.TypeStr)
59+
}
5660
}
5761

5862
if genReqFunc.respType == nil {
5963
genReqFunc.respMsgID = 0
6064
}
65+
66+
if genReqFunc.respMsgID != 0 && genReqFunc.respMsgID == msgID {
67+
return nil, errors.Errorf("request message cannot be the same as the response message: %s", msgID.String())
68+
}
6169
}
6270

6371
return genReqFunc, nil

apigen/msg_overrides.go

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,27 @@ import (
1616
// msgSenderOverrides overrides the heuristic-generated sender parties for each message
1717
// Most of the MsgSenderNone messages are not GC<->Client messages.
1818
var msgSenderOverrides = map[dm.EDOTAGCMsg]MsgSender{
19-
dm.EDOTAGCMsg_k_EMsgGCLiveScoreboardUpdate: MsgSenderGC,
19+
dm.EDOTAGCMsg_k_EMsgGCLiveScoreboardUpdate: MsgSenderNone,
20+
dm.EDOTAGCMsg_k_EMsgGCPlayerReports: MsgSenderNone,
21+
dm.EDOTAGCMsg_k_EMsgGCPlayerFailedToConnect: MsgSenderNone,
22+
dm.EDOTAGCMsg_k_EMsgGCGCToLANServerRelayConnect: MsgSenderNone,
23+
dm.EDOTAGCMsg_k_EMsgGCGCToRelayConnect: MsgSenderNone,
24+
dm.EDOTAGCMsg_k_EMsgGCGCToRelayConnectresponse: MsgSenderNone,
25+
dm.EDOTAGCMsg_k_EMsgGCSuggestTeamMatchmaking: MsgSenderNone,
26+
dm.EDOTAGCMsg_k_EMsgGCUpdateClippy: MsgSenderNone,
27+
28+
dm.EDOTAGCMsg_k_EMsgGCConsumeFantasyTicket: MsgSenderNone,
29+
dm.EDOTAGCMsg_k_EMsgGCConsumeFantasyTicketFailure: MsgSenderNone,
30+
31+
dm.EDOTAGCMsg_k_EMsgGCPlayerHeroesFavoritesAdd: MsgSenderNone,
32+
dm.EDOTAGCMsg_k_EMsgGCPlayerHeroesFavoritesRemove: MsgSenderNone,
33+
34+
dm.EDOTAGCMsg_k_EMsgGCRewardDiretidePrizes: MsgSenderNone,
35+
dm.EDOTAGCMsg_k_EMsgGCRewardTutorialPrizes: MsgSenderNone,
36+
37+
dm.EDOTAGCMsg_k_EMsgGCRequestGuildData: MsgSenderNone,
38+
dm.EDOTAGCMsg_k_EMsgGCGuildData: MsgSenderNone,
39+
dm.EDOTAGCMsg_k_EMsgGCNotInGuildData: MsgSenderNone,
2040

2141
dm.EDOTAGCMsg_k_EMsgGCGeneralResponse: MsgSenderNone,
2242

@@ -121,6 +141,27 @@ var msgSenderOverrides = map[dm.EDOTAGCMsg]MsgSender{
121141
// Hand-written lobby code
122142
dm.EDOTAGCMsg_k_EMsgGCPracticeLobbySetTeamSlot: MsgSenderNone,
123143
dm.EDOTAGCMsg_k_EMsgGCPracticeLobbyCreate: MsgSenderNone,
144+
145+
dm.EDOTAGCMsg_k_EMsgGCFantasyLivePlayerStats: MsgSenderNone,
146+
147+
dm.EDOTAGCMsg_k_EMsgGCFantasyMatch: MsgSenderNone,
148+
dm.EDOTAGCMsg_k_EMsgGCPCBangTimedRewardMessage: MsgSenderNone,
149+
150+
dm.EDOTAGCMsg_k_EMsgCastMatchVoteResponse: MsgSenderNone,
151+
152+
dm.EDOTAGCMsg_k_EMsgClientToGCGetProfileCardStats: MsgSenderNone,
153+
dm.EDOTAGCMsg_k_EMsgClientToGCGetProfileCardStatsResponse: MsgSenderNone,
154+
155+
dm.EDOTAGCMsg_k_EMsgGCToClientProfileCardStatsUpdated: MsgSenderNone,
156+
157+
dm.EDOTAGCMsg_k_EMsgGCToClientAutomatedTournamentStateChange: MsgSenderNone,
158+
159+
// todo: determine who sends the CMsgWeekendTourneyOpts and what the response is
160+
dm.EDOTAGCMsg_k_EMsgClientToGCWeekendTourneyOpts: MsgSenderNone,
161+
dm.EDOTAGCMsg_k_EMsgClientToGCWeekendTourneyOptsResponse: MsgSenderNone,
162+
163+
dm.EDOTAGCMsg_k_EMsgGCToClientLobbyMVPNotifyRecipient: MsgSenderGC,
164+
dm.EDOTAGCMsg_k_EMsgGCToClientLobbyMVPAwarded: MsgSenderGC,
124165
}
125166

126167
// msgMethodNameOverrides overrides the generated client method names.
@@ -185,6 +226,7 @@ var msgProtoTypeOverrides = map[dm.EDOTAGCMsg]proto.Message{
185226
dm.EDOTAGCMsg_k_EMsgClientToGCMergePartyInvite: &dota_gcmessages_client_match_management.CMsgDOTAGroupMergeInvite{},
186227
dm.EDOTAGCMsg_k_EMsgClientToGCMergePartyResponse: &dota_gcmessages_client_match_management.CMsgDOTAGroupMergeResponse{},
187228
dm.EDOTAGCMsg_k_EMsgGCToClientMergePartyResponseReply: &dota_gcmessages_client_match_management.CMsgDOTAGroupMergeReply{},
229+
dm.EDOTAGCMsg_k_EMsgGCToClientMergeGroupInviteReply: &dota_gcmessages_client_match_management.CMsgDOTAGroupMergeReply{},
188230

189231
dm.EDOTAGCMsg_k_EMsgClientToGCPingData: &base_gcmessages.CMsgClientPingData{},
190232

@@ -198,6 +240,29 @@ var msgProtoTypeOverrides = map[dm.EDOTAGCMsg]proto.Message{
198240

199241
dm.EDOTAGCMsg_k_EMsgGCOtherJoinedChannel: &dota_gcmessages_client_chat.CMsgDOTAOtherJoinedChatChannel{},
200242
dm.EDOTAGCMsg_k_EMsgGCOtherLeftChannel: &dota_gcmessages_client_chat.CMsgDOTAOtherLeftChatChannel{},
243+
244+
dm.EDOTAGCMsg_k_EMsgGCCompendiumDataChanged: &dota_gcmessages_client.CMsgDOTACompendiumData{},
245+
246+
dm.EDOTAGCMsg_k_EMsgGCToClientProfileCardUpdated: &dota_gcmessages_common.CMsgDOTAProfileCard{},
247+
dm.EDOTAGCMsg_k_EMsgGCToClientNewNotificationAdded: &dota_gcmessages_client.CMsgGCNotificationsResponse_Notification{},
248+
249+
dm.EDOTAGCMsg_k_EMsgGCUpdateClientClippy: &dota_gcmessages_client.CMsgGCToClientUpdateClientClippy{},
250+
251+
dm.EDOTAGCMsg_k_EMsgRetrieveMatchVoteResponse: &dota_gcmessages_client.CMsgMatchVoteResponse{},
252+
253+
dm.EDOTAGCMsg_k_EMsgClientToGCGetProfileCardResponse: &dota_gcmessages_common.CMsgDOTAProfileCard{},
254+
255+
dm.EDOTAGCMsg_k_EMsgGCToClientChatRegionsEnabled: &dota_gcmessages_client_chat.CMsgDOTAChatRegionsEnabled{},
256+
257+
dm.EDOTAGCMsg_k_EMsgClientToGCGetProfileTicketsResponse: &dota_gcmessages_client.CMsgDOTAProfileTickets{},
258+
259+
// Experimental
260+
dm.EDOTAGCMsg_k_EMsgGCFantasyFinalPlayerStats: &dota_gcmessages_client_fantasy.CMsgDOTAFantasyPlayerHisoricalStatsResponse_PlayerStats{},
261+
262+
dm.EDOTAGCMsg_k_EMsgGCToClientTeamsInfo: &dota_gcmessages_client_team.CMsgDOTATeamsInfo{},
263+
264+
dm.EDOTAGCMsg_k_EMsgGCToClientLobbyMVPNotifyRecipient: &dota_gcmessages_client.CMsgDOTALobbyMVPNotifyRecipient{},
265+
dm.EDOTAGCMsg_k_EMsgGCToClientLobbyMVPAwarded: &dota_gcmessages_client.CMsgDOTALobbyMVPAwarded{},
201266
}
202267

203268
var msgArgAsParameterOverrides = map[dm.EDOTAGCMsg]bool{

apigen/msg_response.go

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -85,38 +85,23 @@ func LookupMessageProtoType(protoMap map[string]*ProtoType, msgID gcm.EDOTAGCMsg
8585
msgStr := msgID.String()
8686
msgStr = strings.TrimPrefix(msgStr, "k_EMsg")
8787

88-
withoutGC := strings.TrimPrefix(msgStr, "GC")
89-
withoutResponse := strings.TrimSuffix(msgStr, "Response")
90-
withoutGCOrResponse := strings.TrimPrefix(withoutResponse, "GC")
88+
msgStr = strings.TrimPrefix(msgStr, "GC")
9189
withoutDota := strings.Replace(msgStr, "DOTA", "", -1)
9290
withoutToFrom := strings.Replace(msgStr, "GCToClient", "", -1)
9391
withoutToFrom = strings.Replace(withoutToFrom, "ClientToGC", "", -1)
92+
responseToResult := strings.Replace(msgStr, "Response", "Result", -1)
9493
toAttempt := []string{
9594
msgStr,
95+
"GC" + msgStr,
96+
responseToResult,
97+
"GC" + responseToResult,
9698
withoutDota,
9799
withoutToFrom,
98-
"ClientToGC" + withoutDota,
99-
"ClientToGC" + withoutDota + "Response",
100-
"GCToClient" + withoutDota,
101-
withoutGCOrResponse,
102100
"DOTA" + msgStr,
103-
withoutGC,
104-
"DOTA" + withoutGC,
105-
withoutResponse,
106-
"DOTA" + withoutResponse,
107-
withoutResponse + "Result",
108-
"DOTA" + withoutResponse + "Result",
109-
withoutGC + "Result",
110-
"DOTA" + withoutGC + "Result",
111-
"DOTA" + withoutGC + "Response",
112-
withoutGC + "Response",
113-
"DOTA" + withoutGCOrResponse + "Result",
114-
"DOTA" + withoutGCOrResponse + "Response",
115-
withoutGCOrResponse + "Response",
116-
withoutGCOrResponse + "Result",
117101
}
118102

119103
for _, att := range toAttempt {
104+
fmt.Println(att)
120105
if pt, ok := protoMap["CMsg"+att]; ok {
121106
fmt.Printf("Request: %v matched to type: %v\n", msgID.String(), pt.TypeName)
122107
return pt, nil

0 commit comments

Comments
 (0)