Implemented very basic value-auditing for skills/abilities

This commit is contained in:
Thaum
2014-11-18 12:01:02 +00:00
parent d0e5a1a378
commit 5c99530077
13 changed files with 251 additions and 68 deletions

View File

@@ -0,0 +1,123 @@
Template.registerHelper("effectList", function(obj, character){
var result = $("<div>");
if(_.has(obj, "conditional") && obj.conditional.length > 0){
_.each(obj.conditional, function(cond){
var c = $("<div>")
.append("* ")
.append(evaluateString(character, cond.name));
result.append(c);
});
}
if(obj.base > 0){
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(obj.base))
.append("Base");
result.append(c);
}
if(_.has(obj, "proficiency") && obj.proficiency.length > 0){
var highestProf = {};
_.each(obj.proficiency, function(prof, i){
var value = evaluateEffect(character, prof)
if(i === 0 || value > highestProf.value){
highestProf.value = value;
highestProf.name = prof.name;
highestProf.calculation = prof.calculation;
}
});
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(highestProf.value).append(" x Proficiency Bonus"))
.append(highestProf.name);
result.append(c);
}
if(_.has(obj, "add") && obj.add.length > 0){
_.each(obj.add, function(a){
var value = signedString(evaluateEffect(character, a));
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(value))
.append(a.name);
result.append(c);
});
}
if(_.has(obj, "mul") && obj.mul.length > 0){
_.each(obj.mul, function(a){
var value = signedString(evaluateEffect(character, a));
var c = $("<div>")
.append($("<span>").addClass("auditValue").append("&times;").append(value))
.append(a.name);
result.append(c);
});
}
if(_.has(obj, "min") && obj.min.length > 0){
var highestMin = {};
_.each(obj.min, function(m, i){
var value = evaluateEffect(character, m)
if(i === 0 || value > highestMin.value){
highestMin.value = value;
highestMin.name = m.name;
highestMin.calculation = m.calculation;
}
});
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(highestMin.value).append(" Minimum"))
.append(highestMin.name);
result.append(c);
}
if(_.has(obj, "max") && obj.max.length > 0){
var lowestMax = {};
_.each(obj.max, function(m, i){
var value = evaluateEffect(character, m)
if(i === 0 || value < lowestMax.value){
lowestMax.value = value;
lowestMax.name = m.name;
lowestMax.calculation = m.calculation;
}
});
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(lowestMax.value).append(" Maximum"))
.append(lowestMax.name);
result.append(c);
}
if(obj.base < 0){
var c = $("<div>")
.append($("<span>").addClass("auditValue").append(obj.base))
.append("Damage");
result.append(c);
}
if(_.has(obj, "advantage") && obj.advantage.length > 0){
_.each(obj.advantage, function(adv){
var c = $("<div>")
.append($("<span>").addClass("auditValue").append("Advantage"))
.append(adv.name);
result.append(c);
})
}
if(_.has(obj, "disadvantage") && obj.disadvantage.length > 0){
_.each(obj.disadvantage, function(disadv){
var c = $("<div>")
.append($("<span>").addClass("auditValue").append("Disadvantage"))
.append(disadv.name);
result.append(c);
})
}
if(_.has(obj, "fail") && obj.fail.length > 0){
_.each(obj.fail, function(f){
var c = $("<div>")
.append($("<span>").addClass("auditValue").append("Fail"))
.append(f.name);
result.append(c);
})
}
var string = result.html()
if (_.isString(string)) return Spacebars.SafeString(string);
return string;
});

View File

@@ -2,7 +2,7 @@
<h2>Saving Throws</h2>
<table class="skillTable">
{{#each saveList}}
<tr>
<tr title={{effectList skill ..}}>
<td><div class="profIcon" style="background-image: url(/png/profIcons/{{profIcon skill}})"></div></td>
{{#if failSkill}}
<td class="fail">fail</td>
@@ -16,7 +16,7 @@
<h2>Skills</h2>
<table class="skillTable">
{{#each skillList}}
<tr>
<tr title={{effectList skill ..}}>
<td><div class="profIcon" style="background-image: url(/png/profIcons/{{profIcon skill}})"></div></td>
{{#if failSkill}}
<td class="fail">fail</td>

View File

@@ -9,11 +9,13 @@ Template.textField.helpers({
},
input: function(){
var text = this.character.strings[this.field];
return Spacebars.SafeString(text);
if (_.isString(text)) return Spacebars.SafeString(text);
return text;
},
output: function(){
var html = evaluateString(this.character, this.character.strings[this.field]);
return Spacebars.SafeString(html);
if (_.isString(html)) return Spacebars.SafeString(html);
return html;
},
outputClass: function(){
if(Template.instance().editing.get()){
@@ -28,6 +30,7 @@ Template.textField.events({
"blur #textInput": function(){
Template.instance().editing.set(false);
var text = $("#textInput").html();
if(!_.isString(text)) text = "";
//TODO sanitise the html
var setter = {};
setter["strings."+this.field] = text;

View File

@@ -2,7 +2,7 @@
{{>loginButtons}}
<div>
{{# each characters}}
<li><a href="{{ pathFor 'character' }} ">{{_id}}</a></li>
<li><a href="{{ pathFor 'character' }} ">{{_id}}</a> <button class="deleteChar">delete</button></li>
{{/each}}
</div>
<input id="addCharacter" type="button" value="Add Character">

View File

@@ -1,8 +1,8 @@
Template.home.events({
"click #addCharacter": function (event, template) {
Characters.insert(new Character(Meteor.userId()));
Characters.insert({});
},
"click #delete": function(event, template){
"click .delete": function(event, template){
Characters.remove(this._id);
}
});