const Colors = { Eggplant: "#26011C", Purple: "#59024B", Sky: "#05F2DB", DarkGreen: "#038C33", LightGreen: "#84D930", }; //////////// // COMMON // Initialize Network related variables let socket; let roomId = null; let id = null; // Process URL // Used to process the room ID. In order to specify a room ID, // include ?=uniqueName, where uniqueName is replaced with the // desired unique room ID. function _processUrl() { const parameters = location.search.substring(1).split("&"); const temp = parameters[0].split("="); roomId = unescape(temp[1]); console.log("id: " + roomId); } // Send data from client to host via server function sendData(datatype, data) { data.type = datatype; data.roomId = roomId; socket.emit('sendData', data); } // Displays a message while attempting connection function _displayWaiting() { push(); fill(200); textAlign(CENTER, CENTER); textSize(20); text("Attempting connection...", width/2, height/2-10); pop(); } //////////// // HOST // Initialize Network related variables let hostConnected = false; function setupHost() { _processUrl(); let addr = serverIp; if (local) { addr = serverIp + ':' + serverPort; } socket = io.connect(addr); socket.emit('join', {name: 'host', roomId: roomId}); socket.on('id', function(data) { id = data; console.log("id: " + id); }); socket.on('hostConnect', onHostConnect); socket.on('clientConnect', onClientConnect); socket.on('clientDisconnect', onClientDisconnect); socket.on('receiveData', onReceiveData); } function isHostConnected(display=false) { if (!hostConnected) { if (display) { _displayWaiting(); } return false; } return true; } function onHostConnect (data) { console.log("Host connected to server."); hostConnected = true; if (roomId === null || roomId === 'undefined') { roomId = data.roomId; } } // Displays server address in lower left of screen function displayAddress() { push(); fill(Colors.Eggplant); noStroke(); textSize(50); text(serverIp+"/?="+roomId, 10, 50); pop(); } //////////// // CLIENT // Initialize Network related variables let waiting = true; let connected = false; function setupClient() { _processUrl(); // Socket.io - open a connection to the web server on specified port let addr = serverIp; if (local) { addr = serverIp + ':' + serverPort; } socket = io.connect(addr); socket.emit('join', {name: 'client', roomId: roomId}); socket.on('id', function(data) { id = data; console.log("id: " + id); }); socket.on('found', function(data) { connected = data.status; waiting = false; console.log("connected: " + connected); }) socket.emit('clientConnect', { roomId: roomId }); socket.on('receiveData', onReceiveData); } function isClientConnected(display=false) { if (waiting) { if (display) { _displayWaiting(); } return false; } else if (!connected) { if (display) { _displayInstructions(); } return false; } return true; } // Displays a message instructing player to look at host screen // for correct link. function _displayInstructions() { push(); fill(200); textAlign(CENTER, CENTER); textSize(20); text("Please enter the link at the", width/2, height/2-10); text("bottom of the host screen.", width/2, height/2+10); pop(); }