Skip to content

Commit 0ea7c87

Browse files
authored
Add threshold fields for calculate expense (#843)
1 parent 469baba commit 0ea7c87

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

module/documents/effects/triggers/calculate-expense-rule-trigger.mjs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const fields = foundry.data.fields;
1414
* @property {FUExpenseSource} expenseSource
1515
* @property {String} identifier
1616
* @property {TraitsPredicateDataModel} traits
17+
* @property {FUThreshold} threshold
1718
* @inheritDoc
1819
*/
1920
export class CalculateExpenseRuleTrigger extends RuleTriggerDataModel {
@@ -41,6 +42,10 @@ export class CalculateExpenseRuleTrigger extends RuleTriggerDataModel {
4142
choices: Object.keys(FU.expenseSource),
4243
blank: true,
4344
}),
45+
threshold: new fields.SchemaField({
46+
operator: new fields.StringField({ initial: '', blank: true, choices: Object.keys(FU.comparisonOperator) }),
47+
amount: new fields.NumberField({ initial: 0 }),
48+
}),
4449
identifier: new fields.StringField(),
4550
traits: new fields.EmbeddedDataField(TraitsPredicateDataModel, {
4651
options: TraitUtils.getOptions(FeatureTraits),
@@ -81,6 +86,27 @@ export class CalculateExpenseRuleTrigger extends RuleTriggerDataModel {
8186
return false;
8287
}
8388
}
89+
if (this.threshold.operator) {
90+
const amount = context.event.expense.amount;
91+
if (Number.isInteger(amount)) {
92+
switch (this.threshold.operator) {
93+
case 'greaterThan':
94+
if (amount >= this.threshold.amount) {
95+
return true;
96+
}
97+
break;
98+
99+
case 'lessThan':
100+
if (amount <= this.threshold.amount) {
101+
return true;
102+
}
103+
break;
104+
}
105+
return false;
106+
} else {
107+
console.warn(`The given amount in the event was not an integer.`);
108+
}
109+
}
84110
return true;
85111
}
86112
}

module/documents/effects/triggers/damage-rule-trigger.mjs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ const fields = foundry.data.fields;
1010
* @extends RuleTriggerDataModel
1111
* @property {DamageType} damageTypes
1212
* @property {Set<FUItemGroup>} damageSource
13-
* @property {FUComparisonOperator} damageThreshold.operator
14-
* @property {Number} damageThreshold.amount
13+
* @property {FUThreshold} damageThreshold
1514
* @inheritDoc
1615
*/
1716
export class DamageRuleTrigger extends RuleTriggerDataModel {

module/helpers/config.mjs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,12 @@ FU.scalarOperation = {
992992
* @typedef {"greaterThan" | "lessThan"} FUComparisonOperator
993993
*/
994994

995+
/**
996+
* @typedef FUThreshold
997+
* @property {FUComparisonOperator} operator
998+
* @property {Number} amount
999+
*/
1000+
9951001
FU.comparisonOperator = {
9961002
greaterThan: 'FU.GreaterThan',
9971003
equals: 'FU.Equals',

templates/effects/triggers/calculate-expense-rule-trigger.hbs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,19 @@
1818
<input type="text" name={{pfuConcat path ".identifier"}} value="{{ trigger.identifier }}" />
1919
</label>
2020

21-
{{pfuTraits trigger.traits (pfuConcat path ".traits")}}
21+
<div class="fu-rule-element__property-row">
22+
<label class="fu-rule-element__property">
23+
<span>{{localize 'FU.ComparisonOperator'}}</span>
24+
<select name="{{pfuConcat path ".threshold.operator"}}">
25+
<option value="">-</option>
26+
{{selectOptions options.comparisonOperator selected=trigger.threshold.operator sort=true localize=true}}
27+
</select>
28+
</label>
29+
30+
<label class="fu-rule-element__property">
31+
<span>{{localize 'FU.Amount'}}</span>
32+
<input type="number" name="{{pfuConcat path ".threshold.amount"}}" value="{{ trigger.threshold.amount }}" />
33+
</label>
34+
</div>
2235

36+
{{pfuTraits trigger.traits (pfuConcat path ".traits")}}

0 commit comments

Comments
 (0)