Exemplo n.º 1
0
        public static void Initialize()
        {
            if (!Steamworks.Load())
            {
                throw new SteamException("Unable to load steamclient library.");
            }

            try
            {
                ClientEngine = Steamworks.CreateInterface <IClientEngine>("CLIENTENGINE_INTERFACE_VERSION002");
            }
            catch (Exception ex)
            {
                throw new SteamException("Unable to get IClientEngine interface.", ex);
            }

            try
            {
                SteamClient = Steamworks.CreateInterface <ISteamClient009>("SteamClient009");
            }
            catch (Exception ex)
            {
                throw new SteamException("Unable to get ISteamClient interface.", ex);
            }

            if (ClientEngine == null)
            {
                throw new SteamException("Unable to get IClientEngine interface.");
            }

            Pipe = ClientEngine.CreateSteamPipe();

            if (Pipe == 0)
            {
                throw new SteamException("Unable to aquire steam pipe.");
            }

            User = ClientEngine.ConnectToGlobalUser(Pipe);

            if (User == 0)
            {
                throw new SteamException("Unable to connect to global user.");
            }


            ClientFriends = GetInterface <IClientFriends>(
                () => { return(ClientEngine.GetIClientFriends(User, Pipe, "CLIENTFRIENDS_INTERFACE_VERSION001")); },
                "Unable to get IClientFriends interface."
                );

            SteamUser = GetInterface <ISteamUser014>(
                () => { return(SteamClient.GetISteamUser(User, Pipe, "SteamUser014")); },
                "Unable to get ISteamUser interface."
                );

            SteamUtils = GetInterface <ISteamUtils005>(
                () => { return(SteamClient.GetISteamUtils(Pipe, "SteamUtils005")); },
                "Unable to get ISteamUtils interface."
                );

            OnStateChange = new Callback <PersonaStateChange_t>(PersonaStateChange_t.k_iCallback);
        }