Allow each mod to have a default version

When a visitor arrives at the site for the first time, this will
ensure they have a certain set of mods on/off. Right now, that means
IC2-Classic is off by default, and everything else is on.
This commit is contained in:
Andrew Miner
2015-03-10 09:57:23 -07:00
parent b1cfe9221e
commit ee75415729
8 changed files with 29 additions and 187 deletions
+1 -1
View File
@@ -3,4 +3,4 @@
build build
dist dist
node_modules node_modules
src/scripts/views.js src/coffee/views.js
+1 -1
View File
@@ -26,7 +26,7 @@ urls = [
"#{base}/craft/" "#{base}/craft/"
] ]
for modSlug in DefaultMods for modSlug, modData of DefaultMods
modSlugs[modSlug] = modSlug modSlugs[modSlug] = modSlug
mod = new Mod slug:modSlug mod = new Mod slug:modSlug
+9 -10
View File
@@ -6,16 +6,15 @@ All rights reserved.
### ###
# Minecraft must be first # Minecraft must be first
exports.DefaultMods = [ exports.DefaultMods =
'minecraft', minecraft: { defaultVersion: '1.7.10' }
'applied_energistics_2', applied_energistics_2: { defaultVersion: 'rv1-stable-1' }
'buildcraft', buildcraft: { defaultVersion: '6.2.6' }
'enderio', enderio: { defaultVersion: '2.2.7.235' }
'ic2_classic', ic2_classic: { defaultVersion: 'none' }
'industrial_craft_2', industrial_craft_2: { defaultVersion: '2.2.663' }
'railcraft', railcraft: { defaultVersion: '9.5.0' }
'thermal_expansion', thermal_expansion: { defaultVersion: '4.0.0B6-23' }
]
exports.Duration = Duration = {} exports.Duration = Duration = {}
Duration.snap = 200 Duration.snap = 200
@@ -113,8 +113,6 @@ module.exports = class ItemPageController extends PageController
@$byline.fadeOut duration:Duration.fast @$byline.fadeOut duration:Duration.fast
_refreshDescription: -> _refreshDescription: ->
logger.debug "refreshing description"
logger.debug "item.description: #{@model?.item?.description}"
description = @model.compileDescription() description = @model.compileDescription()
if description? if description?
@$descriptionPanel.html description @$descriptionPanel.html description
@@ -189,6 +187,4 @@ module.exports = class ItemPageController extends PageController
@model.item = item @model.item = item
item.fetch() item.fetch()
item.on Event.sync, => item.on Event.sync, => @refresh()
logger.debug "item loaded"
@refresh()
@@ -6,7 +6,6 @@ All rights reserved.
### ###
BaseController = require './base_controller' BaseController = require './base_controller'
{DefaultMods} = require '../constants'
{Duration} = require '../constants' {Duration} = require '../constants'
Mod = require '../models/mod' Mod = require '../models/mod'
ModSelectorController = require './mod_selector_controller' ModSelectorController = require './mod_selector_controller'
+2 -2
View File
@@ -49,10 +49,10 @@ module.exports = class CraftingGuideRouter extends Backbone.Router
makeResponder = (m)-> return -> makeResponder = (m)-> return ->
m.activeModVersion.fetch() if m.activeModVersion? m.activeModVersion.fetch() if m.activeModVersion?
for modSlug in DefaultMods for modSlug, modData of DefaultMods
mod = new Mod slug:modSlug mod = new Mod slug:modSlug
mod.on Event.change + ':activeModVersion', makeResponder mod mod.on Event.change + ':activeModVersion', makeResponder mod
@storage.register "mod:#{mod.slug}", mod, 'activeVersion' @storage.register "mod:#{mod.slug}", mod, 'activeVersion', modData.defaultVersion
mod.fetch() mod.fetch()
@modPack.addMod mod @modPack.addMod mod
+13 -8
View File
@@ -26,16 +26,15 @@ module.exports = class Storage
@storage.setItem key, value @storage.setItem key, value
logger.verbose -> "stored #{value} into #{key}" logger.verbose -> "stored #{value} into #{key}"
register: (key, model, properties...)-> register: (key, model, property, defaultValue=null)->
modelData = @_models[key] modelData = @_models[key]
if not modelData? then modelData = @_models[key] = model:model, properties:{} if not modelData? then modelData = @_models[key] = model:model, properties:{}
makeStoreMethod = (k, m, p)=> return => @_storeProperty(k, m, p) makeStoreMethod = (k, m, p)=> return => @_storeProperty(k, m, p)
for property in properties return if modelData.properties[property]?
continue if modelData.properties[property]?
modelData.properties[property] = property modelData.properties[property] = property
@_loadProperty key, model, property @_loadProperty key, model, property, defaultValue
model.on "change:#{property}", makeStoreMethod(key, model, property) model.on "change:#{property}", makeStoreMethod(key, model, property)
unregister: (key, property)-> unregister: (key, property)->
@@ -45,13 +44,19 @@ module.exports = class Storage
# Private Methods ############################################################################## # Private Methods ##############################################################################
_loadProperty: (key, model, property)-> _loadProperty: (key, model, property, defaultValue=null)->
value = @load "#{key}:#{property}" loadedValue = @load "#{key}:#{property}"
value = JSON.parse(value) if value? if value?
return unless value? value = JSON.parse loadedValue
else
value = defaultValue
return unless value?
model[property] = value model[property] = value
if value? and not loadedValue?
@_storeProperty key, model, property
_storeProperty: (key, model, property)-> _storeProperty: (key, model, property)->
value = JSON.stringify model[property] value = JSON.stringify model[property]
@store "#{key}:#{property}", value @store "#{key}:#{property}", value
-157
View File
File diff suppressed because one or more lines are too long