1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // load network.js to get network/chain id
- document.body.appendChild(Object.assign(document.createElement("script"), { type: "text/javascript", src: "./network.js" }));
- // load web3modal to connect to wallet
- document.body.appendChild(Object.assign(document.createElement("script"), { type: "text/javascript", src: "./web3/lib/web3modal.js" }));
- // load web3js to create transactions
- document.body.appendChild(Object.assign(document.createElement("script"), { type: "text/javascript", src: "./web3/lib/web3.min.js" }));
- // uncomment to enable torus wallet
- // document.body.appendChild(Object.assign(document.createElement("script"), { type: "text/javascript", src: "https://unpkg.com/@toruslabs/torus-embed" }));
- // uncomment to enable walletconnect
- document.body.appendChild(Object.assign(document.createElement("script"), { type: "text/javascript", src: "https://unpkg.com/@walletconnect/web3-provider@1.2.1/dist/umd/index.min.js" }));
- // load web3gl to connect to unity
- window.web3gl = {
- networkId: 0,
- connect,
- connectAccount: "",
- clearResponse,
- sendAsync,
- sendAsyncResponse: "",
- sendAsyncError: "",
- };
- // will be defined after connect()
- let provider;
- let web3;
- /*
- paste this in inspector to connect to wallet:
- window.web3gl.connect()
- */
- async function connect() {
- // uncomment to enable torus
- const providerOptions = {
- // torus: {
- // package: Torus,
- // },
- };
-
- if (window.web3InfuraId !== undefined && window.web3InfuraId !== "" && window.web3InfuraId !== "00000000000000000000000000000000") {
- providerOptions.walletconnect = {
- package: window.WalletConnectProvider.default,
- options: {
- infuraId: window.web3InfuraId
- },
- }
- }
- const web3Modal = new window.Web3Modal.default({
- providerOptions,
- });
- web3Modal.clearCachedProvider();
- // set provider
- provider = await web3Modal.connect();
- web3 = new Web3(provider);
- // set current account
- // provider.selectedAddress works for metamask and torus
- // provider.accounts[0] works for walletconnect
- web3gl.connectAccount = provider.selectedAddress || provider.accounts[0];
- // refresh page if player changes account
- provider.on("accountsChanged", (accounts) => {
- window.location.reload();
- });
- // update if player changes network
- provider.on("chainChanged", (chainId) => {
- web3gl.networkId = parseInt(chainId);
- });
- }
- function clearResponse() {
- window.web3gl.sendAsyncResponse = "";
- window.web3gl.sendAsyncError = "";
- }
- async function sendAsync(method, params) {
- web3.currentProvider.sendAsync(
- {
- jsonrpc: "2.0",
- method: method,
- params: JSON.parse(params),
- id: new Date().getTime(),
- },
- async (error, result) => {
- if (error) {
- window.web3gl.sendAsyncError = JSON.stringify(error);
- } else {
- window.web3gl.sendAsyncResponse = JSON.stringify(result.result);
- }
- }
- );
- }
|