From: Carl Worth Date: Sat, 24 Dec 2022 14:31:03 +0000 (-0800) Subject: Add an endgame to the hunt X-Git-Url: https://git.cworth.org/git?p=zombocom-ai;a=commitdiff_plain;h=07b6a82a9dc415426d3ce3e326812f52d9c6f7e2 Add an endgame to the hunt When the last target image is found, the following things will now happen (after a 10-second delay): 1. Coda will comment on all of the target images noting that Zombo is weak, (this will bring them to the top on the next refresh). 2. A new image will appear of Coda in a non-apocalyptic future 3. Coda will comment on that final image, wishing the boys luck. --- diff --git a/index.js b/index.js index 4ed6099..29f304b 100644 --- a/index.js +++ b/index.js @@ -570,13 +570,10 @@ io.on('connection', (socket) => { socket.emit('inform-name', socket.request.session.name); }); - // When any client comments, send that to all clients (including sender) - socket.on('comment', (comment) => { - const images = state.images; + function send_and_save_comment(comment) { + const images = state.images; - // Send comment to clients after adding commenter's name - comment.name = socket.request.session.name; - io.emit('comment', comment); + io.emit('comment', comment); const index = images.findIndex(image => image.id == comment.image_id); @@ -590,14 +587,52 @@ io.on('connection', (socket) => { image.comments.push(comment); images.splice(index, 1); images.push(image); + } + + // When any client comments, send that to all clients (including sender) + socket.on('comment', (comment) => { + // We have to add the sender's name befor we can send the comment + comment.name = socket.request.session.name; + + send_and_save_comment(comment); }); + function endgame() { + // Before revealing Coda's final image, have her comment on + // each of the weaknesses, in order to bring them to the top + // of the feed. + state.targets.forEach(target => { + const comment = { + name: "Coda", + text: "Zombo.com is weak!", + image_id: target.id + }; + send_and_save_comment(comment); + }); + + const image = { + id: state.images.length, + censored: false, + link: false, + code: 0, + prompt: "", + filename: "/images/coda-future-repaired.png", + comments: [{ + name: "Coda", + text: "I don't know how to thank you enough! You found all the weaknesses necessary for us to defeat Zombo.com, (as I've commented below as you'll see the next time you look). It's now been rendered harmless and inert throughout the entire timeline. I'm going to leave to get back to rebuilding our world. I hope you've found everything you were looking for along the way as well." + }] + }; + io.emit('image', image); + state.images.push(image); + } + // Generate an image when requested socket.on('generate', (request) => { console.log(`Generating image for ${socket.request.session.name} with code=${request['code']} and prompt=${request['prompt']}`); async function generate_image(code, prompt) { function emit_image(image, target) { - image.id = state.images.length; + image.id = state.next_image_id; + state.next_image_id = state.next_image_id + 1; image.censored = false; image.link = ""; if (target) { @@ -605,8 +640,16 @@ io.on('connection', (socket) => { "name": "ZomboCom", "text": target.response }]; - if (! state.targets.includes(target.short)) { - state.targets.push(target.short); + if (state.targets.filter(item => item.name === target.short).length === 0) { + state.targets.push({ + name: target.short, + id: image.id + }); + if (state.targets.length == 8) { + // When the final target has been achieved, trigger + // the endgame (in 10 seconds) + setTimeout(endgame, 10000); + } } } else { image.comments = [];