Commit Graph
28 Commits
Author SHA1 Message Date
Andrew Miner e88821d449 Convert codebase to using ItemSlug
* Flesh out the formerly incomplete ItemSlug class
* Convert all uses of text item slugs to use ItemSlug
* Move the ItemSlug class under models where it properly belongs
* Avoid the use of `slug` as a local variable or item attribute
  wherever possible to avoid confusion between various kinds of slugs
* Merge the InventoryParser class into the Inventory class as it is
  unlikely to need to support multiple versions
* Simplify the ModPack/Mod/ModVersion interfaces by replacing the use
  of various "helper" methods with equivalent use of more generic
  methods
* Update the various methods of ModPack/Mod/ModVersion to be able to
  work with qualified or unqualified ItemSlugs
* Remove the unused BaseCollection class
* Add tests for ItemSlug and update all other tests to reflect
  all the other changes
2015-02-18 10:30:53 -08:00
Andrew Miner 8236d82ec8 wip 2015-02-16 11:03:59 -08:00
Andrew Miner 8804605d99 Make Recipe a child of ModVersion, not Item 2015-02-15 19:01:16 -08:00
Andrew Miner 380a78ef61 Qualify all item slugs to the mod which adds them #53
* Change default item URL to fall under /mod/<mod slug>/<item slug>
  but kept the old URL pattern around with the old behavior (i.e.,
  find the first item with that slug)
* Update Item to have a `qualifiedSlug` property which combines the
  item's own slug with its Mod's slug.  Updated a lot of code all
  over to use this in preference to the plain slug.
* Add a `localizeTo` method to Inventory to allow non-qualified slugs
  to be converted into qualified slugs within the inventory's stacks
* Update ModPack to work with either qualified or unqualified slugs
  for relevant methods
* Fix model state changes to happen before related events are
  triggered
* Add a debounce to the CraftingPlan object when triggering a recraft
  due to changes in related objects (esp. its inventories)
* Update the Inventory's sort to keep items sorted by mod before name
  with the Minecraft items sorted to the top
* Fix `ModPack.findItemByName` to actually recursively use the Mod's
  method instead of slugifying the given name and looking for the
  slug (since this won't necessarily work anymore).
* Ensure each Mod is assigned a reference to its containing ModPack
* Fix NameFinder to only consider an item non-gatherable if it is
  also craftable
* Update ModVersionParserV1 to assign qualified slugs to recipes
  for any items which are in the same mod (leaving any other slugs
  unqualified)
* Add Underscore mixins for composing and decomposing slugs
* Update old tests for the use of qualified slugs, and some new tests
  for the new methods added
2015-02-10 17:56:02 -08:00
Andrew Miner e0c642e787 Store want/have in URL/local storage 2015-01-31 15:48:24 -08:00
Andrew Miner 6e3843731b Allow items to be grouped on mod detail pages 2015-01-30 13:03:10 -08:00
Andrew Miner ea86e17d31 Change test description to isolate files better 2015-01-28 10:27:28 -08:00
Andrew Miner ae66f52678 Add the findRecipes method to Mod/Pack/Version 2015-01-28 10:26:19 -08:00
Andrew Miner 7ee0b55411 Add tests for the Recipe model 2015-01-28 09:59:35 -08:00
Andrew Miner e612cedf8d Fix scripts and tests
* Fix the reformat script to work with recent changes
* Fix the convert-nei-dump script to remove leading and trailing '_'
* Fix various broken tests
2015-01-21 15:05:19 -08:00
Andrew Miner d1621bb9f6 Refactor ModVersion into Mod and ModVersion
* Remove V1 of the mod version parser and shift V2 up to be V1
* Add a parser for mod.cg files, and refactor the the mod-version.cg
  files to push the appropriate content up to the mod.cg
* Remove the concept of "silent" from BaseModel along with logging
  each event as they are fired (which is what really prompted the
  need for it in the first place)
* Move use of the Storage class to be completely the province of the
  controllers most closely related to models affected
* Convert the ModVersionController to the ModController and have it
  take on responsibility for choosing the mod version
* Update BaseModel to support simple accessors for the current state
* Update CraftingPlan to be able to remove uncraftable items
* Implement the Mod model
2015-01-18 10:48:12 -08:00
Andrew Miner 83868e2760 Massive refactoring to clean up models
* Tweak style of quantity label in output box to be more visible
* Move data files for all mods under a directory for the specific
  version of the mod
* Add a `silent` property to the base model to prevent models which
  shouldn't be observed from emitting events
* Change the term "itemSlug" to just "slug" across the board
* Change all models so that they don't require their parent in their
  constructors and so that they don't automatically add themselves to
  their parents lists
* Remove a bunch of unnecessary event triggering
* Tighten up access to various lists of children across all models
* Refactor the guts of the V2 parser into an abstract base class so
  it can be used for other parsers in the future
* Remove a number of unused methods
2015-01-17 11:49:07 -08:00
Andrew Miner 5f57622cf3 Several large refactorings
* Refactor location of all data files to include a subdirectory
  for the mod version
* Update the BaseModel class to allow models to load themselves from
  any text file (whether JSON or CG)
* Refactor ModPack & ModVersion to move the laoding functionality in
  one into the other (and use the new stuff in BaseModel)
* Move the parser versions into a new subdirectory which allows for
  future additional parsers
2015-01-16 20:26:54 -08:00
Andrew Miner d94bd39e52 Refactor the SAYT code to return better results 2015-01-15 17:12:12 -08:00
Andrew Miner 89a8e2b539 Add V2 file format 2015-01-14 15:19:02 -08:00
Andrew Miner 823df84924 Revert local storage change & refactor parser V1
* Revert the local storage change as it ties model objects to global
  state and makes testing impossible. It will be necessary to redo
  that feature differently
* Refactor the parser versions to move V1 into its own set of files
2015-01-13 09:44:13 -08:00
Andrew Miner 9970b92157 Fix broken tests for gatherNames 2015-01-10 12:13:43 -08:00
Andrew Miner b8a0918541 Complete the Crafting Table view/controller
* Add output box to the crafting table view
* Add remaining crafting patterns to all MC 1.7.10 recipes
* Add all crafting patterns to Buildcraft 6.2.6
* Disable mods which don't have patterns yet
* Add the Url constants for computing urls from templates
* Add the `findItemDisplay` to ModPack (along with tests) and remove
  all replace all uses of `getPathSlugs` with it
2015-01-09 10:08:02 -08:00
Andrew Miner 4a10a36e37 Fix CraftingPlan tests 2015-01-07 08:48:30 -08:00
Andrew Miner 206973e304 Update header comments 2015-01-05 06:42:05 -08:00
Andrew Miner bba161445d Change "{furnace fuel}" to just "furnace fuel" 2015-01-04 21:26:25 -08:00
Andrew Miner 0d25ac723d Complete refactoring to move Recipes into Items
* Changed "version" to "dataVersion" in data format
* Changed the "modName" and "modVersion" fields on the ModVersion
  class to remove the "mod" prefix and changed the data format to
  match
* Change the Stack class to use the itemSlug instead of the item
  itself
* Update the ModVersion and ModPack classes to include methods for
  recording a correspondence between slugs and names. Update code
  which displays items from stacks to use these methods to determine
  display names.
* Add a reference from Recipe back to the item it creates
2015-01-03 20:08:11 -08:00
Andrew Miner b642c51486 wip 2015-01-02 23:03:06 -08:00
Andrew Miner e14a4d0810 Rename RecipeCatalog to ModPack 2015-01-01 20:16:38 -08:00
Andrew Miner f28a763b13 Rename RecipeBook to ModVersion 2015-01-01 20:12:27 -08:00
Andrew Miner 1a84ce2e28 Complete basic crafting functionality 2014-12-24 19:17:37 -08:00
Andrew Miner 95c15abe10 Added CraftingTable* components and UI 2014-12-23 20:26:36 -08:00
Andrew Miner 16832e02dd Step 1 in converting to a Backbone-based website 2014-12-22 16:36:04 -08:00