From 2a824f5d90be0e116a739875599ba76e45d509d4 Mon Sep 17 00:00:00 2001 From: Kevin Dungs Date: Sat, 2 Aug 2014 20:19:35 +0200 Subject: [PATCH] Implement upgrades. --- assets/beer.png | Bin 0 -> 4378 bytes index.html | 41 ++++++++++++++++---------------- js/game.js | 58 ++++++++++++++++++++++++++++++++++++++++++--- json/upgrades.json | 9 +++---- 4 files changed, 81 insertions(+), 27 deletions(-) create mode 100644 assets/beer.png diff --git a/assets/beer.png b/assets/beer.png new file mode 100644 index 0000000000000000000000000000000000000000..304ce9fd20c570ad9c8fb4231f8fee1998cf4a92 GIT binary patch literal 4378 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 v6W=y=_1vST(RGEL;L7Q!9PC - - - - - +
-
+
Your detector. Click on it to generate events. @@ -69,6 +60,16 @@
+
+ +
+

Upgrades

+
+ + {{ u.name }} + +
+
diff --git a/js/game.js b/js/game.js index bb80e05..c0856ae 100644 --- a/js/game.js +++ b/js/game.js @@ -12,9 +12,11 @@ return res; } - var lab = { name: 'My Awesome Lab', + detector: { + rate: 1 + }, data: 0, reputation: 0, money: 0, @@ -84,6 +86,53 @@ }; }); + var upgrades = loadJsonFile('json/upgrades.json'); + upgrades.map(function (upgrade) { + upgrade.getReceiver = function() { + if (this.type === "detector") { + return lab.detector; + } else { + var context; + if (this.type === "research") { context = research; } + else if (this.type === "hr") { context = workers; } + else { return null; } + for (var i = 0; i < context.length; i++) { + if (context[i].name === this.receiver) { + return context[i]; + } + } + return null; + } + }; + upgrade.hasReceiver = function () { + if (this.type === "detector") { + return true; + } + var rec = this.getReceiver(); + if (this.type === "research") { + return rec.level > 0; + } else if (this.type === "hr") { + return rec.hired > 0; + } + return false; + }; + upgrade.is_visible = function () { + return !this.used && this.hasReceiver() && lab.money >= this.cost * .9; + }; + upgrade.is_available = function () { + return !this.used && this.hasReceiver() && lab.money >= this.cost; + }; + upgrade.buy = function () { + if (!this.used && lab.buy(this.cost)) { + this.used = true; + var rec = this.getReceiver(); + if (rec) { + rec[this.property] = rec[this.property] * this.factor + this.constant; + } + } + }; + }); + var app = angular.module('particleClicker', []); @@ -97,8 +146,7 @@ app.controller('DetectorController', function () { this.click = function () { - lab.acquire(1); - + lab.acquire(lab.detector.rate); detector.addEvent(); }; }); @@ -122,6 +170,10 @@ app.controller('HRController', function () { this.workers = workers; }); + + app.controller('UpgradesController', function () { + this.upgrades = upgrades; + }); })(); diff --git a/json/upgrades.json b/json/upgrades.json index d21cd1e..5efdea1 100644 --- a/json/upgrades.json +++ b/json/upgrades.json @@ -2,12 +2,13 @@ { "name": "Free beer", "description": "The work is easier when the worker is happy.", - "type": "hr", // "hr" || "detector" || "research" - "reciever": "PhD Students", // name of the object "cost": 100, "used": false, + "type": "hr", + "receiver": "PhD Students", + "property": "rate", "factor": 1.2, "constant": 0, - //"image": + "image": "assets/beer.png" } -} +]