Use already defined functions to invite user to game.
parent
884f147e1b
commit
a08c8102a9
|
@ -314,215 +314,38 @@ void Steam_Overlay::RunCallbacks()
|
|||
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)
|
||||
{
|
||||
Common_Message msg;
|
||||
Friend_Messages* friend_messages = new Friend_Messages();
|
||||
friend_messages->set_type(Friend_Messages::LOBBY_INVITE);
|
||||
friend_messages->set_lobby_id(settings->get_lobby().ConvertToUint64());
|
||||
msg.set_allocated_friend_messages(friend_messages);
|
||||
msg.set_source_id(settings->get_local_steam_id().ConvertToUint64());
|
||||
msg.set_dest_id(friend_to_action);
|
||||
network->sendTo(&msg, true);
|
||||
std::string connect = steamFriends->GetFriendRichPresence(settings->get_local_steam_id(), "connect");
|
||||
if (connect.length() > 0)
|
||||
steamFriends->InviteUserToGame(friend_to_action, connect.c_str());
|
||||
else if(settings->get_lobby().IsValid())
|
||||
steamMatchmaking->InviteUserToLobby(settings->get_lobby(), friend_to_action);
|
||||
|
||||
friend_action &= ~friend_action_invite;
|
||||
}
|
||||
|
||||
if (friend_action & friend_action_join)
|
||||
{
|
||||
FriendGameInfo_t friend_info = {};
|
||||
Steam_Friends* steamFriends = get_steam_client()->steam_friends;
|
||||
steamFriends->GetFriendGamePlayed(friend_to_action, &friend_info);
|
||||
//get_steam_client()->steam_matchmaking->JoinLobby(friend_info.m_steamIDLobby);
|
||||
std::string connect = steamFriends->GetFriendRichPresence(friend_to_action, "connect");
|
||||
if (connect.length() > 0)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
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 New Issue