diff --git a/rpg-docs/Model/Character/Conditions.js b/rpg-docs/Model/Character/Conditions.js new file mode 100644 index 00000000..ce894fe1 --- /dev/null +++ b/rpg-docs/Model/Character/Conditions.js @@ -0,0 +1,42 @@ +Conditions = new Mongo.Collection("conditions"); + +Schemas.Conditions = new SimpleSchema({ + charId: { + type: String, + regEx: SimpleSchema.RegEx.Id, + index: 1, + }, + name: { + type: String, + optional: true, + trim: false, + }, + description: { + type: String, + optional: true, + trim: false, + }, + "lifeTime.total": { + type: Number, + defaultValue: 0, //0 is infinite + min: 0, + }, + "lifeTime.spent": { + type: Number, + defaultValue: 0, + min: 0, + }, + color: { + type: String, + allowedValues: _.pluck(colorOptions, "key"), + defaultValue: "q", + }, +}); + +Conditions.attachSchema(Schemas.Conditions); + +Conditions.attachBehaviour("softRemovable"); +makeParent(Conditions, ["name"]); //parents of effects, attacks, proficiencies + +Conditions.allow(CHARACTER_SUBSCHEMA_ALLOW); +Conditions.deny(CHARACTER_SUBSCHEMA_DENY); diff --git a/rpg-docs/client/views/character/buffs/conditionView/conditionView.html b/rpg-docs/client/views/character/buffs/conditionView/conditionView.html new file mode 100644 index 00000000..38659a6d --- /dev/null +++ b/rpg-docs/client/views/character/buffs/conditionView/conditionView.html @@ -0,0 +1,7 @@ + diff --git a/rpg-docs/client/views/character/buffs/conditionView/conditionView.js b/rpg-docs/client/views/character/buffs/conditionView/conditionView.js new file mode 100644 index 00000000..752a9ba6 --- /dev/null +++ b/rpg-docs/client/views/character/buffs/conditionView/conditionView.js @@ -0,0 +1,11 @@ +Template.conditionView.events({ + "click .conditionView": function(event){ + var condition = this.condition; + var charId = Template.parentData()._id; + pushDialogStack({ + template: "conditionViewDialog", + data: {condition: condition}, + element: event.currentTarget, + }); + }, +}); diff --git a/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html new file mode 100644 index 00000000..9800cc25 --- /dev/null +++ b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.html @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js new file mode 100644 index 00000000..da029186 --- /dev/null +++ b/rpg-docs/client/views/character/buffs/conditionViewDialog/conditionViewDialog.js @@ -0,0 +1,6 @@ +Template.conditionViewDialog.events({ + "click #deleteButton": function(event, instance){ + Conditions.remove(instance.data.condition._id); + popDialogStack(); + }, +}); \ No newline at end of file diff --git a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html index 92cd8050..59ada714 100644 --- a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html +++ b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.html @@ -1,31 +1,29 @@ \ No newline at end of file diff --git a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js index 4941e58d..66330ba4 100644 --- a/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js +++ b/rpg-docs/client/views/character/buffs/customBuffEdit/customBuffEdit.js @@ -1,9 +1,3 @@ -Template.customBuffEdit.helpers({ - buff: function(){ - return CustomBuffs.findOne(this.buffId); - }, -}); - const debounce = (f) => _.debounce(f, 300); Template.customBuffEdit.events({ @@ -15,7 +9,7 @@ Template.customBuffEdit.events({ input.errorMessage = "Name is required"; } else { input.invalid = false; - CustomBuffs.update(this._id, { + CustomBuffs.update(this.buff._id, { $set: {name: name} }, { removeEmptyStrings: false, @@ -25,7 +19,7 @@ Template.customBuffEdit.events({ }), "input #buffDescriptionInput": debounce(function(event){ var description = event.currentTarget.value; - CustomBuffs.update(this._id, { + CustomBuffs.update(this.buff._id, { $set: {description: description} }, { removeEmptyStrings: false, @@ -35,7 +29,7 @@ Template.customBuffEdit.events({ "iron-select .target-dropdown": function(event){ var detail = event.originalEvent.detail; var value = detail.item.getAttribute("name"); - if (value === this.target) return; - CustomBuffs.update(this._id, {$set: {target: value}}); + if (value === this.buff.target) return; + CustomBuffs.update(this.buff._id, {$set: {target: value}}); }, }); diff --git a/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js b/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js index a7d955f4..54f7fc29 100644 --- a/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js +++ b/rpg-docs/client/views/character/buffs/customBuffEditList/customBuffEditList.js @@ -34,7 +34,7 @@ Template.customBuffEditListItem.events({ "tap .edit-buff": function(event, template){ pushDialogStack({ template: "customBuffEdit", - data: {id: this.buff._id}, + data: {buff: this.buff}, element: event.currentTarget.parentElement.parentElement, }); }, diff --git a/rpg-docs/client/views/character/stats/stats.html b/rpg-docs/client/views/character/stats/stats.html index 5ecdb947..e9c8736e 100644 --- a/rpg-docs/client/views/character/stats/stats.html +++ b/rpg-docs/client/views/character/stats/stats.html @@ -54,7 +54,7 @@
{{#each condition in conditions}} - {{>buffListItem buff=condition}} + {{>conditionView condition=condition}} {{/each}}
{{#if buffs.count}} diff --git a/rpg-docs/client/views/character/stats/stats.js b/rpg-docs/client/views/character/stats/stats.js index 8c02073c..365136b8 100644 --- a/rpg-docs/client/views/character/stats/stats.js +++ b/rpg-docs/client/views/character/stats/stats.js @@ -1,15 +1,10 @@ Template.stats.helpers({ - conditions: function(){ - var selector = { - "charId": this._id, - "type": "inate", - }; - return Buffs.find(selector); + conditions: function() { + return Conditions.find({charId: this._id}); }, - buffs: function(){ + buffs: function() { var selector = { "charId": this._id, - "type": "custom", }; return Buffs.find(selector); }, diff --git a/rpg-docs/lib/methods/conditions.js b/rpg-docs/lib/methods/conditions.js index 2202c5f8..d0f949c8 100644 --- a/rpg-docs/lib/methods/conditions.js +++ b/rpg-docs/lib/methods/conditions.js @@ -28,21 +28,19 @@ Meteor.methods({ var buff = _.extend( { charId: charId, - type: "inate", - appliedBy: charId, }, condition.buff ); //make sure the character doesn't already have the buff - var existingBuffs = Buffs.find(_.clone(buff)).count(); + var existingBuffs = Conditions.find(_.clone(buff)).count(); if (existingBuffs) return; //remove exclusive conditions _.each(condition.exclusiveConditions, function(exCond) { Meteor.call("removeCondition", charId, exCond); }); //insert the buff - var buffId = Buffs.insert(buff); + var buffId = Conditions.insert(buff); //extend and insert each effect _.each(condition.effects, function(effect) { var newEffect = { @@ -53,7 +51,7 @@ Meteor.methods({ charId: charId, parent: { id: buffId, - collection: "Buffs", + collection: "Conditions", }, enabled: true, }; @@ -81,7 +79,7 @@ Meteor.methods({ var buff = _.extend( {charId: charId, type: "inate"}, condition.buff ); - Buffs.remove(buff); + Conditions.remove(buff); //dont remove the effects, they get removed automatically through parenting }, getConditions: function() { diff --git a/rpg-docs/server/publications/singleCharacter.js b/rpg-docs/server/publications/singleCharacter.js index 42f8c073..771375b6 100644 --- a/rpg-docs/server/publications/singleCharacter.js +++ b/rpg-docs/server/publications/singleCharacter.js @@ -17,6 +17,7 @@ Meteor.publish("singleCharacter", function(characterId){ Attacks.find ({charId: characterId}, {removed: true}), Buffs.find ({charId: characterId}, {removed: true}), Classes.find ({charId: characterId}, {removed: true}), + Conditions.find ({charId: characterId}, {removed: true}), Containers.find ({charId: characterId}, {removed: true}), CustomBuffs.find ({charId: characterId}, {removed: true}), Effects.find ({charId: characterId}, {removed: true}),