/
basicClasses-compiled.js.map
1 lines (1 loc) · 16.9 KB
/
basicClasses-compiled.js.map
1
{"version":3,"sources":["basicClasses.js"],"names":[],"mappings":"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","file":"basicClasses-compiled.js","sourcesContent":["/**\n * Created by bede on 15/12/2016.\n */\n\n\nclass GameOption{\n constructor(buttonText, onClick, ...requirements) {\n this.buttonText = buttonText;\n this.onClick = onClick;\n this.requirements = requirements;\n }\n\n /**\n * Is an option valid, given the current state of the game?\n * @param o The option to check.\n * @returns {boolean}\n */\n isValid() {\n // Todo: option characteristics like location/items required.\n for (let requirement of this.requirements) {\n if (!requirement(g)) return false;\n }\n return true;\n }\n}\n\n\nclass Quality {\n constructor(name) {\n this.name = name;\n }\n}\n\n\nclass QualityContainer {\n constructor(qualities) {\n this.qualities = new Set(qualities || []);\n }\n\n hasQualityWithName(name) {\n for (let quality of this.qualities) {\n if (quality.name == name) return true\n }\n return false;\n }\n\n removeQualityWithName(name) {\n for (let quality of this.qualities) {\n if (quality.name == name) this.qualities.delete(quality);\n }\n }\n\n getQualityWithName(name) {\n for (let q of this.qualities)\n if (q.name == name) return q;\n console.error(`Couldn't find quality with name ${name}`);\n }\n\n addQuality(quality) {\n this.qualities.add(quality);\n }\n}\n\n\nclass Location extends QualityContainer{\n constructor(name, descA, descB, defaultOptions, defaultQualities, traders) {\n super(defaultQualities);\n this.name = name;\n this.descA = descA;\n this.descB = descB;\n this.defaultOptions = defaultOptions;\n this.traders = traders || [];\n }\n}\n\n\nclass Item {\n constructor(name, options, onAcquire, onRelinquish) {\n this.name = name;\n this.options = options || [];\n this.onAcquire = onAcquire || (() => {});\n this.onRelinquish = onRelinquish || (() => {});\n }\n}\n\n\nclass ItemStack {\n constructor(numberItems, item) {\n this.numberItems = numberItems;\n this.item = item;\n }\n\n toString() {\n return `${this.numberItems} x ${this.item.name}`\n }\n}\n\n\n/**\n * A Scheduler is a thin wrapper around setInterval.\n * It allows for setting and cancelling jobs with arbitrary labels.\n */\nclass Scheduler {\n constructor() {\n this._scheduleMap = new Map();\n }\n\n every(secs, label, fn) {\n let id = setInterval(fn, secs);\n this._scheduleMap.set(label, id);\n };\n\n after(secs, label, fn) {\n let id = setTimeout(fn, secs*1000);\n this._scheduleMap.set(label, id);\n }\n\n cancel(label) {\n let id = this._scheduleMap.get(label);\n if (id) {\n clearInterval(id);\n clearTimeout(id);\n }\n }\n}\n\n\n/**\n * A Player holds information about what the current player can do.\n */\nclass Player extends QualityContainer {\n constructor(name, location, money, hints) {\n super();\n this.name = name;\n this.itemStacks = new Set();\n this.location = location;\n this.money = money;\n this.hints = new Set(hints);\n }\n\n /**\n * Work out (and return!) all the possible options our\n * human player can take at this point.\n * @returns {Set} The set of all possible actions.\n */\n getOptions(){\n let location = this.location, options = new Set();\n location.defaultOptions.forEach(o => {\n if (o.isValid())\n options.add(o);\n });\n this.itemStacks.forEach(stack => {\n if (stack.numberItems == 0) return 0;\n stack.item.options.forEach(option => {\n if (option.isValid())\n options.add(option);\n })\n });\n let tradersVisible = false;\n for (let trader of this.location.traders) {\n if (trader.isVisible()) {\n tradersVisible = true;\n break;\n }\n }\n if (tradersVisible) {\n options.add(\n new GameOption(\"Enter Trading\", enterTrading)\n )\n }\n return options;\n }\n\n /**\n * Add a single item to our inventory.\n * @param i The Item we're adding.\n * @param muteOnAcquire Should we avoid firing the item's onAcquire callback?\n */\n addItem(i, muteOnAcquire) {\n if (!muteOnAcquire) i.onAcquire(new ItemStack(1, i));\n let stackFound = false;\n for (let stack of this.itemStacks) {\n if (stack.item.name === i.name) {\n stack.numberItems++;\n stackFound = true;\n break;\n }\n }\n if (!stackFound) {\n let stack = new ItemStack(1, i);\n this.itemStacks.add(stack);\n } else {\n // Todo: pulse the right one.\n }\n }\n\n hasItemWithName(productName, productAmount) {\n for (let elem of this.itemStacks) {\n if (elem.item.name === productName) {\n return elem.numberItems >= productAmount;\n }\n }\n return false;\n }\n\n hasItemStack(stack) {\n return this.hasItemWithName(stack.item.name, stack.numberItems);\n }\n\n hasMoney(amount) {\n return this.money >= amount;\n }\n\n removeMoney(amount) {\n $(\".money\").fadeOut(500, () => {\n this.money -= amount;\n g.inventory.updateAllNoAnimate();\n $(\".money\").fadeIn(500);\n });\n }\n\n addMoney(amount) {\n this.removeMoney(-amount);\n }\n\n /**\n * Add an ItemStack to our inventory, making sure that at all\n * times there is only one stack for any given item.\n * @param stack\n */\n addItemStack(stack) {\n let num = stack.numberItems;\n let item = stack.item;\n\n item.onAcquire(stack);\n for (let i=0; i<num; i++) {\n this.addItem(item, false);\n }\n }\n\n /**\n * Remove an ItemStack from our inventory.\n * @param stack The item and number to remove.\n */\n removeItemStack(stack) {\n let name = stack.item.name;\n let number = stack.numberItems;\n let found = false;\n for (let s of this.itemStacks) {\n if (s.item.name === name) {\n s.numberItems -= number;\n found = true;\n break;\n }\n }\n if (!found) {\n console.error(`error: couldn't find itemstack:`);\n console.error(stack);\n console.error(`in current stacks:`);\n console.error(this.itemStacks);\n }\n }\n\n removeItemWithName(itemName) {\n this.removeItemStack(\n new ItemStack(1, new Item(itemName))\n )\n }\n\n removeItem(item) {\n this.removeItemStack(\n new ItemStack(1, item)\n );\n }\n\n /**\n * Wrapper method to move location and update the screen.\n * @param location The new location we're moving to.\n */\n moveLocation(location) {\n this.location = location;\n updateDisplay();\n }\n}\n\n\nclass LedgerInterface {\n constructor() {\n this.ledger = LedgerInterface._findLedger();\n }\n\n static _findLedger() {\n return $(\"#ledger-items\")\n }\n\n add(actionTaken, noAnimate) {\n if (!noAnimate) {\n let element = $(`<li style=\"display: none;\">${actionTaken}</li>`);\n this.ledger.append(element);\n element.fadeIn(1000);\n } else {\n let element = $(`<li>${actionTaken}</li>`);\n this.ledger.append(element);\n }\n }\n\n write(action) {\n this.add(action);\n }\n}\n\n\nclass InventoryInterface {\n constructor() {\n this.inventory = InventoryInterface._findInventory();\n }\n\n static _findInventory() {\n return $(\"#inventory-items\");\n }\n\n updateAllNoAnimate() {\n $(\".money\").text(g.player.money/100);\n currentInventoryItems().forEach(i => i.remove());\n g.player.itemStacks.forEach(i => {\n if (i.numberItems > 0) this.add(i)\n });\n }\n\n updateAll(animate) {\n if (animate) {\n $(\"#inventory-items\").fadeOut(500, () => {\n this.updateAllNoAnimate();\n $(\"#inventory-items\").fadeIn(500);\n });\n } else {\n this.updateAllNoAnimate();\n }\n }\n\n add(itemStack, animate) {\n if (animate) {\n let elem = $(`<li style=\"display:none;\" class=\"inventory-item\">${itemStack.toString()}</li>`);\n this.inventory.append(elem);\n elem.fadeIn(500);\n } else {\n this.inventory.append(\n $(`<li class=\"inventory-item\">${itemStack.toString()}</li>`)\n );\n }\n }\n\n\n}\n\n\nclass Trader extends QualityContainer {\n constructor(name, title, description, willSell, willBuy, willTrade, ...requirements) {\n super();\n this.name = name;\n this.title = title;\n this.description = description;\n this.willSell = willSell;\n this.willBuy = willBuy;\n this.willTrade = willTrade;\n this.requirements = requirements;\n }\n\n isVisible() {\n for (let require of this.requirements) {\n if (!require(g)) return false;\n }\n return true;\n }\n}\n"]}