Recognize CraftingGuide 1.0 query parameters

This commit is contained in:
Andrew Miner
2014-12-27 19:15:20 -08:00
parent 03d8f84a0d
commit a3723dd667
6 changed files with 64 additions and 31 deletions
+2
View File
@@ -46,6 +46,8 @@ module.exports = (grunt)->
files: [expand:true, cwd:'./src/fonts', src:'**/*.ttf', dest:'./dist/fonts'] files: [expand:true, cwd:'./src/fonts', src:'**/*.ttf', dest:'./dist/fonts']
images: images:
files: [expand:true, cwd:'./src/images/', src:['**/*.png', '**/*.jpg'], dest:'./dist/images'] files: [expand:true, cwd:'./src/images/', src:['**/*.png', '**/*.jpg'], dest:'./dist/images']
jquery_ui_images:
files: [expand:true, cwd:'./lib/jquery-ui/images', src:['*.png'], dest:'./dist/css/images']
scripts: scripts:
files: files:
'./dist/js/backbone.js': ['./node_modules/backbone/backbone.js'] './dist/js/backbone.js': ['./node_modules/backbone/backbone.js']
+1 -3
View File
@@ -1,6 +1,4 @@
#!/bin/bash #!/bin/bash
pushd dist &>/dev/null http-server dist -p 8000 -c-1 --cors
python -m SimpleHTTPServer
popd &>/dev/null
+1 -1
View File
@@ -2,7 +2,7 @@
"version": 1, "version": 1,
"mod_name": "Minecraft", "mod_name": "Minecraft",
"mod_version": "1.6.4", "mod_version": "1.6.4",
"description": "Crafting recipes from vanilla Minecraft (in progress)", "description": "Crafting recipes from vanilla Minecraft",
"recipes": [ "recipes": [
{ {
"output": [[4, "Arrow"]], "output": [[4, "Arrow"]],
+18 -13
View File
@@ -5,16 +5,22 @@
# All rights reserved. # All rights reserved.
### ###
exports.DefaultBookUrls = DefaultBookUrls = [
'/data/vanilla.json'
'/data/applied_energetics.json'
'/data/buildcraft.json'
'/data/gravisuite.json'
'/data/industrial_craft.json'
'/data/more_blocks.json'
'/data/thermal_expansion.json'
]
exports.Duration = Duration = {} exports.Duration = Duration = {}
Duration.snap = 100 Duration.snap = 100
Duration.fast = Duration.snap * 2 Duration.fast = Duration.snap * 2
Duration.normal = Duration.fast * 2 Duration.normal = Duration.fast * 2
Duration.slow = Duration.normal * 2 Duration.slow = Duration.normal * 2
exports.Opacity = Opacity = {}
Opacity.hidden = 1e-6
Opacity.shown = 1
exports.Event = Event = {} exports.Event = Event = {}
Event.add = 'add' # collection, item... Event.add = 'add' # collection, item...
Event.change = 'change' # model Event.change = 'change' # model
@@ -25,12 +31,11 @@ Event.load.failed = 'load:failed' # controller, error message
Event.load.finished = 'load:finished' # controller Event.load.finished = 'load:finished' # controller
Event.remove = 'remove' # collection, item... Event.remove = 'remove' # collection, item...
exports.DefaultBookUrls = DefaultBookUrls = [ exports.Opacity = Opacity = {}
'/data/vanilla.json' Opacity.hidden = 1e-6
'/data/applied_energetics.json' Opacity.shown = 1
'/data/buildcraft.json'
'/data/gravisuite.json' exports.UrlParam = UrlParam = {}
'/data/industrial_craft.json' UrlParam.quantity = 'count'
'/data/more_blocks.json' UrlParam.recipe = 'recipeName'
'/data/thermal_expansion.json' UrlParam.includingTools = 'tools'
]
@@ -8,6 +8,8 @@
BaseController = require './base_controller' BaseController = require './base_controller'
{Event} = require '../constants' {Event} = require '../constants'
InventoryParser = require '../models/inventory_parser' InventoryParser = require '../models/inventory_parser'
url = require 'url'
{UrlParam} = require '../constants'
######################################################################################################################## ########################################################################################################################
@@ -27,23 +29,24 @@ module.exports = class CraftingTableController extends BaseController
onCatalogChanged: -> onCatalogChanged: ->
return unless @rendered return unless @rendered
@_updateNameAutocomplete() @_updateNameAutocomplete()
@_parseUrlParameters()
onHaveFieldChanged: -> onHaveFieldChanged: ->
return unless @rendered return unless @rendered
@model.have.clear() @model.have.clear()
@_parser.parse @$haveField.val(), @model.have @_parser.parse @$haveField.val(), @model.have
@model.craft() @_craft()
onIncludingToolsFieldChanged: -> onIncludingToolsFieldChanged: ->
return unless @rendered return unless @rendered
@model.includingTools = @$('input[name="including_tools"]:checked').length > 0 @model.includingTools = @$('input[name="including_tools"]:checked').length > 0
@model.craft() @_craft()
onNameFieldChanged: -> onNameFieldChanged: ->
return unless @rendered return unless @rendered
@model.name = @$nameField.val() @model.name = @$nameField.val()
@model.craft() @_craft()
onNameFieldFocused: -> onNameFieldFocused: ->
return unless @rendered return unless @rendered
@@ -52,7 +55,7 @@ module.exports = class CraftingTableController extends BaseController
onQuantityFieldChanged: -> onQuantityFieldChanged: ->
return unless @rendered return unless @rendered
@model.quantity = parseInt @$quantityField.find(":selected").val() @model.quantity = parseInt @$quantityField.find(":selected").val()
@model.craft() @_craft()
# BaseController Overrides ##################################################################### # BaseController Overrides #####################################################################
@@ -69,13 +72,7 @@ module.exports = class CraftingTableController extends BaseController
super super
@_updateNameAutocomplete() @_updateNameAutocomplete()
@_parseUrlParameters()
@onHaveFieldChanged()
@onIncludingToolsFieldChanged()
@onQuantityFieldChanged()
# do last so others are no-op until all is set
@onNameFieldChanged()
refresh: -> refresh: ->
@$needList.empty() @$needList.empty()
@@ -103,6 +100,37 @@ module.exports = class CraftingTableController extends BaseController
# Private Methods ############################################################################## # Private Methods ##############################################################################
_craft: ->
@model.craft()
_parseUrlParameters: ->
params = url.parse(window.location.href, true).query
if params[UrlParam.includingTools]?
param = params[UrlParam.includingTools]
if param in ['true', 'yes']
@$includingToolsField.attr 'checked', 'checked'
else if param in ['false', 'no']
@$includingToolsField.removeAttr 'checked'
else
console.log "invalid including tools value in URL param: #{params[UrlParam.includingTools]}"
@onIncludingToolsFieldChanged()
if params[UrlParam.quantity]?
@$quantityField.val parseInt params[UrlParam.quantity]
if @$quantityField.find(':selected').length is 0
console.log "invalid quantity in URL param: #{params[UrlParam.quantity]}"
@onQuantityFieldChanged()
# Do this check last to avoid recalculting the recipe multiple times
if params[UrlParam.recipe]?
recipeName = params[UrlParam.recipe]
if @model.catalog.findRecipes(recipeName).length > 0
@$nameField.val recipeName
else
console.log "invalid recipe name in URL param: #{params[UrlParam.recipe]}"
@onNameFieldChanged()
_updateNameAutocomplete: -> _updateNameAutocomplete: ->
onChanged = => @onNameFieldChanged() onChanged = => @onNameFieldChanged()
+3 -3
View File
@@ -5,9 +5,9 @@
# All rights reserved. # All rights reserved.
### ###
BaseModel = require './base_model' BaseModel = require './base_model'
{Event} = require '../constants' {Event} = require '../constants'
RecipeBookParser = require './recipe_book_parser' RecipeBookParser = require './recipe_book_parser'
######################################################################################################################## ########################################################################################################################