diff --git a/app.js b/app.js index 1a1ed1c..410380a 100644 --- a/app.js +++ b/app.js @@ -4,7 +4,6 @@ var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var sassMiddleware = require('node-sass-middleware'); -var socketApi = require('./socketApi') var indexRouter = require('./routes/index'); var animationStateRouter = require('./routes/animationState'); @@ -12,7 +11,6 @@ var animationStateData = {}; // Create instance of Express and Socket.io var app = express(); -io = socketApi.io; // view engine setup app.set('views', path.join(__dirname, 'views')); @@ -59,9 +57,10 @@ const animationStateUpdater = () => { animationStateData = data; console.log(animationStateData); animationStateRouter.setCurrentState(animationStateData); - io.emit('speech', animationStateData); } setTimeout(animationStateUpdater, 100); }; animationStateUpdater(); + + module.exports = app; diff --git a/includes/_tmiAPI.js b/includes/_tmiAPI.js index 761a0fe..28fdba2 100644 --- a/includes/_tmiAPI.js +++ b/includes/_tmiAPI.js @@ -12,11 +12,18 @@ const timeout = 1000 * 60 * 5; // Function to greet a user when the send the first message in the chat and start a timeout timer function greet (target, user) { + let newData = {}; + newData.sent = Date.now(); const username = user.username; logIt(`Greet Triggered with username: ${username}`); tmiAPI.say(target,`Greetings ${username}, welcome to the channel`); + newData.command = 'greet'; + newData.user = username; activeUser[username] = true; activeTimeout = setTimeout (timeoutFunc, timeout, username); + if (newData !== null) { + tmiData = newData; + } } // Function to reset the status of a user based on chat activity @@ -62,6 +69,7 @@ tmiAPI.on('message', (target, context, msg, self) => { if (speech.length > 0) { newData.command = "talk"; newData.speech = speech; + newData.user = username; } else { newData = null; } @@ -78,6 +86,10 @@ tmiAPI.on('message', (target, context, msg, self) => { newData = null; } break; + case (command.startsWith('!dance')): + console.log('dance'); + newData.command = 'dance'; + break; default: newData = null; } diff --git a/public/images/cuteslime.gif b/public/images/cuteslime.gif new file mode 100644 index 0000000..b1eea47 Binary files /dev/null and b/public/images/cuteslime.gif differ diff --git a/public/js/speech.js b/public/js/speech.js index 3756057..ba27555 100644 --- a/public/js/speech.js +++ b/public/js/speech.js @@ -1,8 +1,44 @@ // Connect to websocket var socket = io.connect('http://localhost:1337'); +socket.on('connect', () => { + console.log(socket.id, 'connected'); +}); + // Display content in speech bubble when websocket sends data -socket.on('speech', (data) => { +socket.on('talk', (data) => { + $(".bubble").text(data.user + ' says: ' + data.speech).show(150); + setTimeout(() => { + $(".bubble").text(''); + $(".bubble").hide(150); + }, 5000) + console.log(data); +}); + +socket.on('dice', (data) => { + + $(".bubble").text('You rolled a ' + data.result + ' on your D' + data.sides).show(150); + setTimeout(() => { + $(".bubble").text(''); + $(".bubble").hide(150); + }, 5000) + console.log(data); +}); + +socket.on('greet', (data) => { + $(".bubble").text('Welcome ' + data.user).show(150); + setTimeout(() => { + $(".bubble").text(''); + $(".bubble").hide(150); + }, 5000) + console.log(data); +}); + +socket.on('dance', (data) => { $(".bubble").hide(); - $(".bubble").text(data.speech).show(150); + $(".fett").css("background-image", "url(../images/cuteslime.gif)"); + setTimeout(() => { + $(".fett").css("background-image", "url(../images/boba-fett.gif)"); + }, 3500); + console.log(data); }); \ No newline at end of file diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index e773af1..7288a57 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -11,7 +11,7 @@ body { .app .fett { width: 150px; height: 150px; - background-image: url(../images/boba-fett.gif); + background: url(../images/boba-fett.gif); background-size: contain; background-repeat: no-repeat; position: absolute; diff --git a/public/stylesheets/style.css.map b/public/stylesheets/style.css.map index 3bd247d..9616870 100644 --- a/public/stylesheets/style.css.map +++ b/public/stylesheets/style.css.map @@ -5,5 +5,5 @@ "style.scss" ], "names": [], - "mappings": "AAYA,AAAA,IAAI,CAAE;EACJ,UAAU,EAAE,MAAM;EAClB,WAAW,EAPG,WAAW,EAAE,KAAK,EAAE,UAAU;EAQ5C,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI,GACd;;AAED,AAAA,IAAI,CAAC;EACD,KAAK,EAAE,KAAK;EAAE,MAAM,EAAE,KAAK;EAC3B,QAAQ,EAAE,QAAQ,GAsBrB;EAxBD,AAII,IAJA,CAIA,KAAK,CAAC;IACF,KAAK,EAAE,KAAK;IAAE,MAAM,EAAE,KAAK;IAC3B,gBAAgB,EAAE,4BAA4B;IAC9C,eAAe,EAAE,OAAO;IACxB,iBAAiB,EAAE,SAAS;IAC5B,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAAE,IAAI,EAAE,IAAI;IACxB,OAAO,EAAE,CAAC,GACb;EAZL,AAaI,IAbA,CAaA,OAAO,CAAC;IACJ,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,KAAK;IAAE,IAAI,EAAE,IAAI;IAAE,KAAK,EAAE,IAAI;IACtC,OAAO,EAAE,CAAC;IACV,UAAU,EAlCF,OAAO;IAmCf,aAAa,EA3BH,IAAI;IA4Bd,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,UAAU,GACzB" + "mappings": "AAYA,AAAA,IAAI,CAAE;EACJ,UAAU,EAAE,MAAM;EAClB,WAAW,EAPG,WAAW,EAAE,KAAK,EAAE,UAAU;EAQ5C,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,IAAI,GACd;;AAED,AAAA,IAAI,CAAC;EACD,KAAK,EAAE,KAAK;EAAE,MAAM,EAAE,KAAK;EAC3B,QAAQ,EAAE,QAAQ,GAsBrB;EAxBD,AAII,IAJA,CAIA,KAAK,CAAC;IACF,KAAK,EAAE,KAAK;IAAE,MAAM,EAAE,KAAK;IAC3B,UAAU,EAAE,4BAA4B;IACxC,eAAe,EAAE,OAAO;IACxB,iBAAiB,EAAE,SAAS;IAC5B,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAAE,IAAI,EAAE,IAAI;IACxB,OAAO,EAAE,CAAC,GACb;EAZL,AAaI,IAbA,CAaA,OAAO,CAAC;IACJ,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,KAAK;IAAE,IAAI,EAAE,IAAI;IAAE,KAAK,EAAE,IAAI;IACtC,OAAO,EAAE,CAAC;IACV,UAAU,EAlCF,OAAO;IAmCf,aAAa,EA3BH,IAAI;IA4Bd,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,UAAU,GACzB" } \ No newline at end of file diff --git a/public/stylesheets/style.scss b/public/stylesheets/style.scss index 0d57f28..0e2e28a 100644 --- a/public/stylesheets/style.scss +++ b/public/stylesheets/style.scss @@ -23,7 +23,7 @@ body { .fett { width: 150px; height: 150px; - background-image: url(../images/boba-fett.gif); + background: url(../images/boba-fett.gif); background-size: contain; background-repeat: no-repeat; position: absolute; diff --git a/socketApi.js b/socketApi.js index 29b8e8a..f0f50e7 100644 --- a/socketApi.js +++ b/socketApi.js @@ -4,8 +4,24 @@ var socketApi = {}; socketApi.io = io; +var animationStateData = {}; + +const tmi = require('./includes/_tmiAPI.js'); + io.on('connection', (socket) => { console.log('New connection with ID:', socket.id); + + const animationStateUpdater = () => { + let data = tmi.getCurrentState(); + if (data !== animationStateData) { + animationStateData = data; + console.log(animationStateData, 'on web socket', socket.id); + if (typeof animationStateData.command !== "undefined") { + io.emit(animationStateData.command, animationStateData); + } + } + setTimeout(animationStateUpdater, 100); + }; animationStateUpdater(); }); module.exports = socketApi; \ No newline at end of file