mirror of
https://gitlab.com/Mr_Goldberg/goldberg_emulator.git
synced 2024-11-27 14:08:39 +01:00
Use already defined functions to invite user to game.
This commit is contained in:
parent
884f147e1b
commit
a08c8102a9
1 changed files with 24 additions and 201 deletions
|
@ -314,215 +314,38 @@ void Steam_Overlay::RunCallbacks()
|
||||||
overlay_state_changed = false;
|
overlay_state_changed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Steam_Friends* steamFriends = get_steam_client()->steam_friends;
|
||||||
|
Steam_Matchmaking* steamMatchmaking = get_steam_client()->steam_matchmaking;
|
||||||
|
|
||||||
if (friend_action & friend_action_invite)
|
if (friend_action & friend_action_invite)
|
||||||
{
|
{
|
||||||
Common_Message msg;
|
std::string connect = steamFriends->GetFriendRichPresence(settings->get_local_steam_id(), "connect");
|
||||||
Friend_Messages* friend_messages = new Friend_Messages();
|
if (connect.length() > 0)
|
||||||
friend_messages->set_type(Friend_Messages::LOBBY_INVITE);
|
steamFriends->InviteUserToGame(friend_to_action, connect.c_str());
|
||||||
friend_messages->set_lobby_id(settings->get_lobby().ConvertToUint64());
|
else if(settings->get_lobby().IsValid())
|
||||||
msg.set_allocated_friend_messages(friend_messages);
|
steamMatchmaking->InviteUserToLobby(settings->get_lobby(), friend_to_action);
|
||||||
msg.set_source_id(settings->get_local_steam_id().ConvertToUint64());
|
|
||||||
msg.set_dest_id(friend_to_action);
|
|
||||||
network->sendTo(&msg, true);
|
|
||||||
|
|
||||||
friend_action &= ~friend_action_invite;
|
friend_action &= ~friend_action_invite;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (friend_action & friend_action_join)
|
if (friend_action & friend_action_join)
|
||||||
{
|
{
|
||||||
FriendGameInfo_t friend_info = {};
|
std::string connect = steamFriends->GetFriendRichPresence(friend_to_action, "connect");
|
||||||
Steam_Friends* steamFriends = get_steam_client()->steam_friends;
|
if (connect.length() > 0)
|
||||||
steamFriends->GetFriendGamePlayed(friend_to_action, &friend_info);
|
{
|
||||||
//get_steam_client()->steam_matchmaking->JoinLobby(friend_info.m_steamIDLobby);
|
GameRichPresenceJoinRequested_t data = {};
|
||||||
|
data.m_steamIDFriend.SetFromUint64(friend_to_action);
|
||||||
|
strncpy(data.m_rgchConnect, connect.c_str(), k_cchMaxRichPresenceValueLength - 1);
|
||||||
|
callbacks->addCBResult(data.k_iCallback, &data, sizeof(data));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FriendGameInfo_t friend_info = {};
|
||||||
|
steamFriends->GetFriendGamePlayed(friend_to_action, &friend_info);
|
||||||
|
if(friend_info.m_steamIDLobby.IsValid())
|
||||||
|
steamMatchmaking->JoinLobby(friend_info.m_steamIDLobby);
|
||||||
|
}
|
||||||
|
|
||||||
const char* connect = steamFriends->GetFriendRichPresence(friend_to_action, "connect");
|
|
||||||
GameRichPresenceJoinRequested_t data = {};
|
|
||||||
data.m_steamIDFriend.SetFromUint64(friend_to_action);
|
|
||||||
strncpy(data.m_rgchConnect, connect, k_cchMaxRichPresenceValueLength - 1);
|
|
||||||
callbacks->addCBResult(data.k_iCallback, &data, sizeof(data));
|
|
||||||
|
|
||||||
|
|
||||||
friend_action &= ~friend_action_join;
|
friend_action &= ~friend_action_join;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
switchstr(args[0])
|
|
||||||
{
|
|
||||||
casestr("get"):
|
|
||||||
sstr << "Steam ID: " << _this->_client->settings_client->get_local_steam_id().ConvertToUint64() << std::endl;
|
|
||||||
sstr << "Steam Server ID: " << _this->_client->settings_server->get_local_steam_id().ConvertToUint64() << std::endl;
|
|
||||||
sstr << "Your lobby: " << _this->_client->settings_client->get_lobby().ConvertToUint64() << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("get_id") :
|
|
||||||
sstr << _this->_client->settings_client->get_local_steam_id().ConvertToUint64() << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("get_server_id") :
|
|
||||||
sstr << _this->_client->settings_server->get_local_steam_id().ConvertToUint64() << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("get_lobby") :
|
|
||||||
sstr << "Your lobby: " << _this->_client->settings_client->get_lobby().ConvertToUint64() << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("list_friends") :
|
|
||||||
{
|
|
||||||
ovlay.write(str + "\n");
|
|
||||||
|
|
||||||
int cnt = steamFriends->GetFriendCount(0);
|
|
||||||
for (int i = 0; i < cnt; ++i)
|
|
||||||
{
|
|
||||||
CSteamID id = steamFriends->GetFriendByIndex(i, 0);
|
|
||||||
const char* name = steamFriends->GetFriendPersonaName(id);
|
|
||||||
|
|
||||||
FriendGameInfo_t friend_info = {};
|
|
||||||
steamFriends->GetFriendGamePlayed(id, &friend_info);
|
|
||||||
sstr << id.ConvertToUint64() << '(' << name << ") is playing: " << friend_info.m_gameID.AppID() << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
casestr("list_games") :
|
|
||||||
{
|
|
||||||
ovlay.write(str + "\n");
|
|
||||||
|
|
||||||
int cnt = steamFriends->GetFriendCount(0);
|
|
||||||
for (int i = 0; i < cnt; ++i)
|
|
||||||
{
|
|
||||||
CSteamID id = steamFriends->GetFriendByIndex(i, 0);
|
|
||||||
const char* name = steamFriends->GetFriendPersonaName(id);
|
|
||||||
|
|
||||||
std::string connect = steamFriends->GetFriendRichPresence(id, "connect");
|
|
||||||
FriendGameInfo_t friend_info = {};
|
|
||||||
steamFriends->GetFriendGamePlayed(id, &friend_info);
|
|
||||||
|
|
||||||
if (connect.length() > 0)
|
|
||||||
{
|
|
||||||
sstr << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
}
|
|
||||||
else if (friend_info.m_steamIDLobby != k_steamIDNil)
|
|
||||||
{
|
|
||||||
connect = "+connect_lobby " + std::to_string(friend_info.m_steamIDLobby.ConvertToUint64());
|
|
||||||
sstr << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
}
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("invite_user") :
|
|
||||||
{
|
|
||||||
ovlay.write(str + "\n");
|
|
||||||
|
|
||||||
if (_this->lobbyID.IsValid())
|
|
||||||
{
|
|
||||||
if (args.size() == 2)
|
|
||||||
{
|
|
||||||
std::string& friendName = args[1];
|
|
||||||
int cnt = steamFriends->GetFriendCount(0);
|
|
||||||
for (int i = 0; i < cnt; ++i)
|
|
||||||
{
|
|
||||||
CSteamID id = steamFriends->GetFriendByIndex(i, 0);
|
|
||||||
const char* name = steamFriends->GetFriendPersonaName(id);
|
|
||||||
|
|
||||||
if (friendName == name)
|
|
||||||
{
|
|
||||||
Common_Message msg;
|
|
||||||
Friend_Messages* friend_messages = new Friend_Messages();
|
|
||||||
friend_messages->set_type(Friend_Messages::LOBBY_INVITE);
|
|
||||||
friend_messages->set_lobby_id(_this->lobbyID.ConvertToUint64());
|
|
||||||
msg.set_allocated_friend_messages(friend_messages);
|
|
||||||
msg.set_source_id(_this->_client->settings_client->get_local_steam_id().ConvertToUint64());
|
|
||||||
msg.set_dest_id(id.ConvertToUint64());
|
|
||||||
_this->_client->network->sendTo(&msg, true);
|
|
||||||
|
|
||||||
sstr << "Invite sent" << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sstr << "'invite_user' needs only 1 parameter: friendname" << std::endl;
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("join_game") :
|
|
||||||
if (args.size() == 2)
|
|
||||||
{
|
|
||||||
ovlay.write(str + "\n");
|
|
||||||
int cnt = steamFriends->GetFriendCount(0);
|
|
||||||
for (int i = 0; i < cnt; ++i)
|
|
||||||
{
|
|
||||||
CSteamID id = steamFriends->GetFriendByIndex(i, 0);
|
|
||||||
const char* name = steamFriends->GetFriendPersonaName(id);
|
|
||||||
|
|
||||||
std::string connect = steamFriends->GetFriendRichPresence(id, "connect");
|
|
||||||
FriendGameInfo_t friend_info = {};
|
|
||||||
steamFriends->GetFriendGamePlayed(id, &friend_info);
|
|
||||||
|
|
||||||
if (connect.length() > 0)
|
|
||||||
{
|
|
||||||
sstr << "1: " << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
}
|
|
||||||
else if (std::to_string(friend_info.m_steamIDLobby.ConvertToUint64()) == args[1])
|
|
||||||
{
|
|
||||||
connect = "connect " + std::to_string(friend_info.m_steamIDLobby.ConvertToUint64());
|
|
||||||
sstr << "2: " << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
matchMaking->JoinLobby(friend_info.m_steamIDLobby);
|
|
||||||
}
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
casestr("join_user") :
|
|
||||||
if (args.size() == 2)
|
|
||||||
{
|
|
||||||
ovlay.write(str + "\n");
|
|
||||||
int cnt = steamFriends->GetFriendCount(0);
|
|
||||||
for (int i = 0; i < cnt; ++i)
|
|
||||||
{
|
|
||||||
CSteamID id = steamFriends->GetFriendByIndex(i, 0);
|
|
||||||
const char* name = steamFriends->GetFriendPersonaName(id);
|
|
||||||
|
|
||||||
std::string connect = steamFriends->GetFriendRichPresence(id, "connect");
|
|
||||||
FriendGameInfo_t friend_info = {};
|
|
||||||
steamFriends->GetFriendGamePlayed(id, &friend_info);
|
|
||||||
|
|
||||||
if (connect.length() > 0)
|
|
||||||
{
|
|
||||||
sstr << "1: " << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
}
|
|
||||||
else if (args[1] == name )
|
|
||||||
{
|
|
||||||
connect = "connect " + std::to_string(friend_info.m_steamIDLobby.ConvertToUint64());
|
|
||||||
sstr << "2: " << friend_info.m_gameID.AppID() << "\t" << name << "\t" << connect << std::endl;
|
|
||||||
matchMaking->JoinLobby(friend_info.m_steamIDLobby);
|
|
||||||
}
|
|
||||||
ovlay.write(sstr.str());
|
|
||||||
sstr.str("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
Loading…
Reference in a new issue