From df415da4e67d518d8e9281cd048e8f5c002edba3 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 3 May 2025 15:53:41 +0300 Subject: minor code cleaning --- protocols/Steam/src/steam_menus.cpp | 47 +++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 13 deletions(-) (limited to 'protocols/Steam/src/steam_menus.cpp') diff --git a/protocols/Steam/src/steam_menus.cpp b/protocols/Steam/src/steam_menus.cpp index 110cb8f10a..a1b5df2edc 100644 --- a/protocols/Steam/src/steam_menus.cpp +++ b/protocols/Steam/src/steam_menus.cpp @@ -26,7 +26,7 @@ INT_PTR CSteamProto::UnblockCommand(WPARAM hContact, LPARAM) return 0; } -INT_PTR CSteamProto::JoinToGameCommand(WPARAM hContact, LPARAM) +INT_PTR CSteamProto::JoinGameCommand(WPARAM hContact, LPARAM) { char url[MAX_PATH]; uint32_t gameId = getDword(hContact, "GameID", 0); @@ -35,6 +35,15 @@ INT_PTR CSteamProto::JoinToGameCommand(WPARAM hContact, LPARAM) return 0; } +INT_PTR CSteamProto::JoinChatCommand(WPARAM hContact, LPARAM) +{ + CChatRoomJoinChatRoomGroupRequest request; + request.chat_group_id = GetId(hContact, DBKEY_STEAM_ID); request.has_chat_group_id = true; + request.chat_id = getDword(hContact, DBKEY_CHAT_ID); request.has_chat_id = true; + WSSendService(JoinChatRoomGroup, request); + return 0; +} + INT_PTR CSteamProto::OpenBlockListCommand(WPARAM, LPARAM) { // SendRequest(new GetFriendListRequest(m_szAccessToken, m_iSteamId, "ignoredfriend"), &CSteamProto::OnGotBlockList); @@ -52,17 +61,21 @@ int CSteamProto::OnPrebuildContactMenu(WPARAM hContact, LPARAM) bool ctrlPressed = (GetKeyState(VK_CONTROL) & 0x8000) != 0; if (!Contact::IsGroupChat(hContact)) { - bool authNeeded = getBool(hContact, "Auth", 0); + bool authNeeded = getBool(hContact, "Auth"); Menu_ShowItem(GetMenuItem(PROTO_MENU_REQ_AUTH), authNeeded || ctrlPressed); Menu_ShowItem(GetMenuItem(PROTO_MENU_REVOKE_AUTH), !authNeeded || ctrlPressed); } - bool isBlocked = getBool(hContact, "Block", 0); + bool isBlocked = getBool(hContact, "Block"); Menu_ShowItem(contactMenuItems[CMI_BLOCK], !isBlocked || ctrlPressed); Menu_ShowItem(contactMenuItems[CMI_UNBLOCK], isBlocked || ctrlPressed); - uint32_t gameId = getDword(hContact, "GameID", 0); + uint32_t gameId = getDword(hContact, "GameID"); Menu_ShowItem(contactMenuItems[CMI_JOIN_GAME], gameId || ctrlPressed); + + int chatType = getByte(hContact, "ChatRoom"); + int64_t chatId = GetId(hContact, DBKEY_CHAT_ID); + Menu_ShowItem(contactMenuItems[CMI_JOIN_CHAT], chatId && chatType == GCW_SERVER); return 0; } @@ -92,21 +105,20 @@ void CSteamProto::OnInitStatusMenu() void CSteamProto::InitMenus() { CMenuItem mi(&g_plugin); - mi.flags = CMIF_UNICODE; - // "Block" + // Block SET_UID(mi, 0xc6169b8f, 0x53ab, 0x4242, 0xbe, 0x90, 0xe2, 0x4a, 0xa5, 0x73, 0x88, 0x32); mi.pszService = MODULENAME "/Block"; - mi.name.w = LPGENW("Block"); + mi.name.a = LPGEN("Block"); mi.position = -201001001 + CMI_BLOCK; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_OFF); contactMenuItems[CMI_BLOCK] = Menu_AddContactMenuItem(&mi); CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::BlockCommand>); - // "Unblock" + // Unblock SET_UID(mi, 0xc6169b8f, 0x53ab, 0x4242, 0xbe, 0x90, 0xe2, 0x4a, 0xa5, 0x73, 0x88, 0x32); mi.pszService = MODULENAME "/Unblock"; - mi.name.w = LPGENW("Unblock"); + mi.name.a = LPGEN("Unblock"); mi.position = -201001001 + CMI_UNBLOCK; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_ON); contactMenuItems[CMI_UNBLOCK] = Menu_AddContactMenuItem(&mi); @@ -114,14 +126,23 @@ void CSteamProto::InitMenus() mi.flags |= CMIF_NOTOFFLINE; - // "Join to game" + // Join to game SET_UID(mi, 0x1a6aaab7, 0xba31, 0x4b47, 0x8e, 0xce, 0xf8, 0x8e, 0xf4, 0x62, 0x4f, 0xd7); - mi.pszService = MODULENAME "/JoinToGame"; - mi.name.w = LPGENW("Join to game"); + mi.pszService = MODULENAME "/JoinGame"; + mi.name.a = LPGEN("Join the game"); mi.position = -200001000 + CMI_JOIN_GAME; mi.hIcolibItem = nullptr; contactMenuItems[CMI_JOIN_GAME] = Menu_AddContactMenuItem(&mi); - CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::JoinToGameCommand>); + CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::JoinGameCommand>); + + // Join clan's chat + SET_UID(mi, 0x4da0c3d3, 0x6fca, 0x42ba, 0xac, 0x72, 0x5c, 0xc9, 0x42, 0x5a, 0x70, 0x4e); + mi.pszService = MODULENAME "/JoinChat"; + mi.name.a = LPGEN("Join group chat"); + mi.position = -200001002 + CMI_JOIN_GAME; + mi.hIcolibItem = Skin_GetIconHandle(SKINICON_CHAT_JOIN); + contactMenuItems[CMI_JOIN_CHAT] = Menu_AddContactMenuItem(&mi); + CreateServiceFunction(mi.pszService, GlobalService<&CSteamProto::JoinChatCommand>); HookEvent(ME_CLIST_PREBUILDCONTACTMENU, &CSteamProto::PrebuildContactMenu); } -- cgit v1.2.3