string GetFriendInfo(SteamFriendsData data)
    {
        string info  = data._PlayerName;
        int    state = (int)data._PlayerState;

        if (data._PlayedGameName != null && data._PlayedGameName.Length > 0)
        {
            info += "[00ff00][Playing][-]" + "[ff9900]" + data._PlayedGameName + "[-]";
        }
        else
        {
            switch (state)
            {
            case 0:
                info += "[Off-line]";
                break;

            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                info += "[00ff00][Online][-]";
                break;

            default:
                break;
            }
        }
        return(info);
    }
    void OnPersonaStateChange(PersonaStateChange_t pCallback)
    {
        SteamFriendsData data = SteamGetFriendsProcess.Instance.GetFriendInfo(new CSteamID(pCallback.m_ulSteamID));

        if (_funPersonStateChange != null && data != null)
        {
            foreach (var iter in _FriendsList)
            {
                if (iter.Value._SteamID == data._SteamID)
                {
                    _FriendsList[iter.Key] = data;
                    _funPersonStateChange(iter.Key);
                    break;
                }
            }
        }

        //Debug.Log("[" + PersonaStateChange_t.k_iCallback + " - PersonaStateChange] - " + pCallback.m_ulSteamID + " -- " + pCallback.m_nChangeFlags);
    }
    public void Init(Transform tsTopLeftAnthor, Transform tsCenterAnthor, Camera uiCamera)
    {
        InitUIFriendWnd(tsTopLeftAnthor);
        SteamFriendPrcMgr.Instance.Init(CallBackGetFriends, CallBackRecvMsg, CallBackPersonStateChange);
        mFriendWnd.e_OnShow         += ReflashFriendWnd;
        mFriendWnd.e_TabChange      += ReflashFriendWnd;
        RoomGui_N.Instance.e_OnShow += ReflashFriendWnd;
        mFriendWnd.e_ShowFriendMenu += ShowMenu;
        mFriendWnd.InitOptionMenu(tsCenterAnthor, uiCamera);
        mFriendWnd.InitInviteBox(tsTopLeftAnthor);
        GetFriends();

        mBaseNetWorkList = BaseNetwork.GetBaseNetworkList();
        mMyData          = SteamFriendPrcMgr.Instance.GetMyInfo();
        if (mMyData != null)
        {
            mFriendWnd.SetMyInfo(mMyData._PlayerName, mMyData._avatar);
        }
        else
        {
            mFriendWnd.SetMyInfo("", null);
        }
    }
Example #4
0
    internal SteamFriendsData GetFriendInfo(CSteamID ID)
    {
        SteamFriendsData data = new SteamFriendsData();

        data._SteamID = ID;
        var fgi = new FriendGameInfo_t();
        //get playing game name
        bool ret = SteamFriends.GetFriendGamePlayed(data._SteamID, out fgi);

        if (ret)
        {
            if (fgi.m_gameID.AppID() == SteamUtils.GetAppID())
            {
                data._PlayedGameName = "Planet Explorers";
            }
            else
            {
                data._PlayedGameName = "Another game";
            }

            //SteamAppList.GetAppName(fgi.m_gameID.AppID(), out data._PlayedGameName, 256);
        }
        else
        {
            data._PlayedGameName = "";
        }
        //get player state
        data._PlayerState = SteamFriends.GetFriendPersonaState(data._SteamID);
        //get player name
        data._PlayerName = SteamFriends.GetFriendPersonaName(data._SteamID);

        //get avatar
        int  FriendAvatar = SteamFriends.GetSmallFriendAvatar(data._SteamID);
        uint ImageWidth;
        uint ImageHeight;

        ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight);
        if (ret && ImageWidth > 0 && ImageHeight > 0)
        {
            ret = SteamUtils.GetImageRGBA(FriendAvatar, _imageData, SteamFriendsData._imageHeight * SteamFriendsData._imageWidth * 4);

            for (int n = 0; n < _imageData.Length; n += 4)
            {
                int x   = (n / 4) % SteamFriendsData._imageWidth;
                int y   = (n / 4) / SteamFriendsData._imageHeight;
                int tag = (SteamFriendsData._imageWidth * (SteamFriendsData._imageHeight - y - 1) + x) * 4;

                _imageTurnData[n]     = _imageData[tag];
                _imageTurnData[n + 1] = _imageData[tag + 1];
                _imageTurnData[n + 2] = _imageData[tag + 2];
                _imageTurnData[n + 3] = _imageData[tag + 3];
            }

            data._avatar.LoadRawTextureData(_imageTurnData);
            data._avatar.Apply();
        }
        else
        {
            return(null);
        }
        return(data);
    }
Example #5
0
    internal IEnumerator GetFriends()
    {
        if (_funGetFriends == null)
        {
            yield break;
        }
        _FriendsList.Clear();
        AppId_t[] appList;
        appList = new AppId_t[1];
        SteamAppList.GetInstalledApps(appList, 1);
        SteamAppList.GetNumInstalledApps();
        _FriendsCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate | EFriendFlags.k_EFriendFlagIgnoredFriend);
        for (int i = 0; i < _FriendsCount; i++)
        {
            try
            {
                SteamFriendsData data = new SteamFriendsData();
                //get steamid
                data._SteamID = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate | EFriendFlags.k_EFriendFlagIgnoredFriend);
                var fgi = new FriendGameInfo_t();
                //get playing game name
                bool ret = SteamFriends.GetFriendGamePlayed(data._SteamID, out fgi);
                if (ret)
                {
                    if (fgi.m_gameID.AppID() == SteamUtils.GetAppID())
                    {
                        data._PlayedGameName = "Planet Explorers";
                    }
                    else
                    {
                        data._PlayedGameName = "Another game";
                    }
                    //SteamAppList.GetAppName(fgi.m_gameID.AppID(), out data._PlayedGameName, 256);
                }
                //get player state
                data._PlayerState = SteamFriends.GetFriendPersonaState(data._SteamID);
                //get player name
                data._PlayerName = SteamFriends.GetFriendPersonaName(data._SteamID);
                //get avatar
                int  FriendAvatar = SteamFriends.GetSmallFriendAvatar(data._SteamID);
                uint ImageWidth;
                uint ImageHeight;
                ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight);

                if (ret && ImageWidth > 0 && ImageHeight > 0)
                {
                    ret = SteamUtils.GetImageRGBA(FriendAvatar, _imageData, SteamFriendsData._imageHeight * SteamFriendsData._imageWidth * 4);

                    for (int n = 0; n < _imageData.Length; n += 4)
                    {
                        int x   = (n / 4) % SteamFriendsData._imageWidth;
                        int y   = (n / 4) / SteamFriendsData._imageHeight;
                        int tag = (SteamFriendsData._imageWidth * (SteamFriendsData._imageHeight - y - 1) + x) * 4;

                        _imageTurnData[n]     = _imageData[tag];
                        _imageTurnData[n + 1] = _imageData[tag + 1];
                        _imageTurnData[n + 2] = _imageData[tag + 2];
                        _imageTurnData[n + 3] = _imageData[tag + 3];
                    }

                    data._avatar.LoadRawTextureData(_imageTurnData);
                    data._avatar.Apply();
                }
                _FriendsList[i] = data;
            }
            catch (Exception e)
            {
                Debug.Log("SteamGetFriendsProcess GetFriends " + e.ToString());
                _funGetFriends(null, false);
            }
            yield return(0);
        }
        _funGetFriends(_FriendsList, true);
    }