const GameHelper = require('./helpers/cg-gh.js') (function() { var isOpen = $.getSetIniDbBoolean('cgstatus', 'isOpen', false), seed = {}, guesses = { '1':[ {user:'Alpha',location:'0,0',distance:5,score:2,streak:0}, {user:'Beta',location:'5,0',distance:100,score:3,streak:0}, {user:'Charlie',location:'6,6',distance:1000,score:0,streak:0}, {user:'Delta',location:'42,6',distance:1,score:5,streak:1} ], '2':[ ], }; function dbSetSeed(id) { $.inidb.SetBoolean("chatguessr", "isOpen", "", open); isOpen = open; } function dbSetOpen(open) { $.inidb.SetBoolean("chatguessr", "isOpen", "", open); isOpen = open; sendData('status',open); } function dbClearGuesses() { guesses = {}; $.inidb.SetString("chatguessr", "guesses", JSON.stringify(guesses)); sendData('guesses',guesses); } function dbAddGuess(user,position) { if(guesses[user] && guesses[user].length > 0){ }else if(isCoordinates(position)){ guesses[user] = position; $.inidb.SetString("chatguessr", "guesses", JSON.stringify(guesses)); sendData('guesses',JSON.stringify(guesses)); } } function sendData(tpe, data) { $.panelsocketserver.sendJSONToAll(JSON.stringify({ 'eventFamily': 'chatguessr', 'eventType': tpe, 'data': data })); } function isCoordinates(coordinates) { const regex = /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/g; return regex.test(coordinates); }; $.bind('command', function(event) { const sender = "" + event.getSender().toLowerCase(), command = event.getCommand(), args = event.getArgs(), action = args[0]; if (command.equalsIgnoreCase('g')) { if(isOpen) DBAddG(sender,args); }else if (command.equalsIgnoreCase('cg')) { //send url //$.say($.whisperPrefix(sender) + $.lang.get('chatguessr.help', ' Use "!cg [open | close | ...]" to open/close the feature.')); }else if(command.equalsIgnoreCase('cga')){ if(action.equalsIgnoreCase('open')){ isOpen = true; $.getSetIniDbBoolean('cgstatus', 'isOpen', true); }else if(action.equalsIgnoreCase('close')){ isOpen = false; $.getSetIniDbBoolean('cgstatus', 'isOpen', false) }else if(action.equalsIgnoreCase('start')){ seed = GameHelper.fetchSeed(args[1]); }else if(action.equalsIgnoreCase('end')){ isOpen = false; $.getSetIniDbBoolean('cgstatus', 'isOpen', false) }else if(action.equalsIgnoreCase('refresh')){ let newseed = GameHelper.fetchSeed(args[1]); }else if(action.equalsIgnoreCase('gg')){ sendData('guesses',JSON.stringify(guesses)); } } }); $.bind('initReady', function() { $.registerChatCommand('./custom/custom/chatguessr.js', 'cg',7); $.registerChatCommand('./custom/custom/chatguessr.js', 'g',7); $.registerChatCommand('./custom/custom/chatguessr.js', 'cga'); $.registerChatSubcommand('cga', 'open', 2); $.registerChatSubcommand('cga', 'close', 2); $.registerChatSubcommand('cga', 'start', 2); $.registerChatSubcommand('cga', 'end', 2); $.registerChatSubcommand('cga', 'refresh', 2); }); })();