From acc3b8cf8996188004370563bad6111dcdf0a2ae Mon Sep 17 00:00:00 2001 From: Daniel Xie Date: Fri, 5 May 2017 11:52:48 -0500 Subject: [PATCH] Create Program refactoring, added a notification for it when it comes up --- css/menupages.css | 6 +++++ css/styles.css | 26 ++++++++++++++++++ index.html | 9 ++++--- src/CreateProgram.js | 63 +++++++++++++++++++++++++++++++------------- src/DarkWeb.js | 4 +-- src/Location.js | 2 +- src/engine.js | 42 +++++++++++++++++++++++++++++ 7 files changed, 127 insertions(+), 25 deletions(-) diff --git a/css/menupages.css b/css/menupages.css index ab4555611..294cf28ba 100644 --- a/css/menupages.css +++ b/css/menupages.css @@ -104,6 +104,12 @@ overflow-y: scroll; } +#active-scripts-text { + width: 80%; + margin: 6px; + padding: 4px; +} + .active-scripts-list > li { margin: 6px; width: 80%; diff --git a/css/styles.css b/css/styles.css index baffbab0e..720acbfbd 100644 --- a/css/styles.css +++ b/css/styles.css @@ -115,3 +115,29 @@ tr:focus { cursor: default; } + +/* Notification icon (for create program right now only) */ +.create-program-tab { + position:relative; +} +#create-program-notification { + font-size: 10px; + + position: absolute; /* Position the badge within the relatively positioned button */ + top: 0; + right: 0; +} + +.notification-on { + background-color: #fa3e3e; + color: white; + border-radius: 2px; + padding: 1px 3px; +} + +.notification-off { + background-color: #333; + color: #333; + border-radius: 0px; + padding: 0px; +} \ No newline at end of file diff --git a/index.html b/index.html index 1b2bd4c6d..0d3a402b8 100644 --- a/index.html +++ b/index.html @@ -9,8 +9,7 @@ - + @@ -53,6 +52,7 @@ + @@ -88,8 +88,9 @@
  • Create Program +
  • - +
  • Factions
  • @@ -145,6 +146,8 @@
    +

    This page displays a list of all scripts that are currently running across every machine. It also gives + information about their production

    diff --git a/src/CreateProgram.js b/src/CreateProgram.js index ee17fbf38..926e67774 100644 --- a/src/CreateProgram.js +++ b/src/CreateProgram.js @@ -30,53 +30,78 @@ function displayCreateProgramContent() { //PortHack.exe (in case you delete it lol) if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) { portHackALink.style.display = "block"; - portHackALink.addEventListener("click", function() { - createProgram(Programs.PortHackProgram, CONSTANTS.MillisecondsPerQuarterHour); - }); } //BruteSSH if (Player.getHomeComputer().programs.indexOf(Programs.BruteSSHProgram) == -1 && Player.hacking_skill >= 50) { - bruteSshALink.style.display = "block"; - bruteSshALink.addEventListener("click", function() { - Player.startCreateProgramWork(Programs.BruteSSHProgram, CONSTANTS.MillisecondsPerQuarterHour); - }); + bruteSshALink.style.display = "block"; } //FTPCrack if (Player.getHomeComputer().programs.indexOf(Programs.FTPCrackProgram) == -1 && Player.hacking_skill >= 100) { ftpCrackALink.style.display = "block"; - ftpCrackALink.addEventListener("click", function() { - Player.startCreateProgramWork(Programs.FTPCrackProgram, CONSTANTS.MillisecondsPerHalfHour); - }); } //relaySMTP if (Player.getHomeComputer().programs.indexOf(Programs.RelaySMTPProgram) == -1 && Player.hacking_skill >= 250) { relaySmtpALink.style.display = "block"; - relaySmtpAlink.addEventListener("click", function() { - Player.startCreateProgramWork(Programs.RelaySMTPProgram. CONSTANTS.MillisecondsPer2Hours); - }); + } //HTTPWorm if (Player.getHomeComputer().programs.indexOf(Programs.HTTPWormProgram) == -1 && Player.hacking_skill >= 500) { httpWormALink.style.display = "block"; - httpWormALink.addEventListener("click", function() { - Player.startCreateProgramWork(Programs.HTTPWormProgram, CONSTANTS.MillisecondsPer4Hours); - }); + } //SQLInject if (Player.getHomeComputer().programs.indexOf(Programs.SQLInjectProgram) == -1 && Player.hacking_skill >= 750) { sqlInjectALink.style.display = "block"; - sqlInjectALink.addEventListener("click", function() { - Player.startCreateProgramWork(Programs.SQLInjectProgram, CONSTANTS.MillisecondsPer8Hours); - }); } +} + +//Returns the number of programs that are currently available to be created +function getNumAvailableCreateProgram() { + var count = 0; + + //PortHack.exe (in case you delete it lol) + if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) { + ++count; + } + + //BruteSSH + if (Player.getHomeComputer().programs.indexOf(Programs.BruteSSHProgram) == -1 && + Player.hacking_skill >= 50) { + ++count; + } + + //FTPCrack + if (Player.getHomeComputer().programs.indexOf(Programs.FTPCrackProgram) == -1 && + Player.hacking_skill >= 100) { + ++count; + } + + //relaySMTP + if (Player.getHomeComputer().programs.indexOf(Programs.RelaySMTPProgram) == -1 && + Player.hacking_skill >= 250) { + ++count; + } + + //HTTPWorm + if (Player.getHomeComputer().programs.indexOf(Programs.HTTPWormProgram) == -1 && + Player.hacking_skill >= 500) { + ++count; + } + + //SQLInject + if (Player.getHomeComputer().programs.indexOf(Programs.SQLInjectProgram) == -1 && + Player.hacking_skill >= 750) { + ++count; + } + return count; } \ No newline at end of file diff --git a/src/DarkWeb.js b/src/DarkWeb.js index 0841c02cb..4ec680f3b 100644 --- a/src/DarkWeb.js +++ b/src/DarkWeb.js @@ -1,9 +1,9 @@ /* DarkWeb.js */ //Posts a "help" message if connected to DarkWeb -checkIfConnectedToDarkweb() { +checkIfConnectedToDarkweb = function() { if (SpecialServerIps.hasOwnProperty("Darkweb Server")) { var darkwebIp = SpecialServerIps["Darkweb Server"]; - if (!isValidIPAddress(darkwebIp) {return;} + if (!isValidIPAddress(darkwebIp)) {return;} if (darkwebIp == Player.getCurrentServer().ip) { post("You are now connected to the dark web. From the dark web you can purchase illegal items. " + "Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name] " + diff --git a/src/Location.js b/src/Location.js index 323295e3b..2275dd629 100644 --- a/src/Location.js +++ b/src/Location.js @@ -1496,7 +1496,7 @@ purchaseTorRouter = function() { dialogBoxCreate("You cannot afford to purchase the Tor router"); return; } - Player.money -= CONSTANTS.TorRouterCost; + Player.loseMoney(CONSTANTS.TorRouterCost); var darkweb = new Server(); darkweb.init(createRandomIp(), "darkweb", "", true, false, false, false, 1); diff --git a/src/engine.js b/src/engine.js index 5cec9d82b..dcfd366d6 100644 --- a/src/engine.js +++ b/src/engine.js @@ -557,6 +557,7 @@ var Engine = { autoSaveCounter: 300, //Autosave every minute updateSkillLevelsCounter: 10, //Only update skill levels every 2 seconds. Might improve performance updateDisplays: 3, //Update displays such as Active Scripts display and character display + createProgramNotifications: 10, //Checks whether any programs can be created and notifies serverGrowth: 450, //Process server growth every minute and a half checkFactionInvitations: 1500, //Check whether you qualify for any faction invitations every 5 minutes passiveFactionGrowth: 600, @@ -595,6 +596,19 @@ var Engine = { Engine.Counters.updateDisplays = 3; } + if (Engine.Counters.createProgramNotifications <= 0) { + var num = getNumAvailableCreateProgram(); + var elem = document.getElementById("create-program-notification"); + if (num > 0) { + elem.innerHTML = num; + elem.setAttribute("class", "notification-on"); + } else { + elem.innerHTML = ""; + elem.setAttribute("class", "notification-off"); + } + Engine.Counters.createProgramNotifications = 10; + } + if (Engine.Counters.serverGrowth <= 0) { var numCycles = Math.floor((450 - Engine.Counters.serverGrowth)); processServerGrowth(numCycles); @@ -718,6 +732,7 @@ var Engine = { //Active scripts list Engine.ActiveScriptsList = document.getElementById("active-scripts-list"); + //Save and Delete buttons Engine.Clickables.saveMainMenuButton = document.getElementById("save-game-link"); Engine.Clickables.saveMainMenuButton.addEventListener("click", function() { saveObject.saveGame(); @@ -818,6 +833,33 @@ var Engine = { //Character info Engine.Display.characterInfo = document.getElementById("character-info"); + //Create Program buttons + var portHackALink = document.getElementById("create-program-porthack"); + var bruteSshALink = document.getElementById("create-program-brutessh"); + var ftpCrackALink = document.getElementById("create-program-ftpcrack"); + var relaySmtpALink = document.getElementById("create-program-relaysmtp"); + var httpWormALink = document.getElementById("create-program-httpworm"); + var sqlInjectALink = document.getElementById("create-program-sqlinject"); + portHackALink.addEventListener("click", function() { + createProgram(Programs.PortHackProgram, CONSTANTS.MillisecondsPerQuarterHour); + }); + bruteSshALink.addEventListener("click", function() { + Player.startCreateProgramWork(Programs.BruteSSHProgram, CONSTANTS.MillisecondsPerQuarterHour); + }); + ftpCrackALink.addEventListener("click", function() { + Player.startCreateProgramWork(Programs.FTPCrackProgram, CONSTANTS.MillisecondsPerHalfHour); + }); + relaySmtpALink.addEventListener("click", function() { + Player.startCreateProgramWork(Programs.RelaySMTPProgram. CONSTANTS.MillisecondsPer2Hours); + }); + httpWormALink.addEventListener("click", function() { + Player.startCreateProgramWork(Programs.HTTPWormProgram, CONSTANTS.MillisecondsPer4Hours); + }); + sqlInjectALink.addEventListener("click", function() { + Player.startCreateProgramWork(Programs.SQLInjectProgram, CONSTANTS.MillisecondsPer8Hours); + }); + + //Location lists Engine.aevumLocationsList = document.getElementById("aevum-locations-list"); Engine.chongqingLocationsList = document.getElementById("chongqing-locations-list");