fix: parse WhenLevel correctly

This commit is contained in:
Anna 2024-06-17 15:07:30 -04:00
parent 2924d52c61
commit 1420d44630
Signed by: anna
GPG Key ID: D0943384CD9F87D1
2 changed files with 24 additions and 31 deletions

View File

@ -16,7 +16,7 @@ public class WhenLevel : IWhen {
return false; return false;
} }
var cmp = player.Level.CompareTo(this.Level); var cmp = ((uint) player.Level).CompareTo(this.Level);
return this.CompareResult switch { return this.CompareResult switch {
1 when cmp > 0 => true, 1 when cmp > 0 => true,
0 when cmp == 0 => true, 0 when cmp == 0 => true,
@ -46,37 +46,31 @@ public class WhenLevelConverter : IYamlTypeConverter {
var value = parser.Consume<Scalar>(); var value = parser.Consume<Scalar>();
void ParseOperation(int comparer) {
if (comparerResult != null) {
throw new YamlException("duplicate operations in whenlevel");
}
comparerResult = comparer;
if (!uint.TryParse(value.Value, out var lvl)) {
throw new YamlException("invalid whenlevel: level was not numeric");
}
level = lvl;
}
switch (key.Value) { switch (key.Value) {
case "greaterThan": { case "greaterThan": {
if (comparerResult != null) { ParseOperation(1);
throw new YamlException("duplicate operations in whenlevel");
}
comparerResult = 1;
break; break;
} }
case "equalTo": { case "equalTo": {
if (comparerResult != null) { ParseOperation(0);
throw new YamlException("duplicate operations in whenlevel");
}
comparerResult = 0;
break; break;
} }
case "lessThan": { case "lessThan": {
if (comparerResult != null) { ParseOperation(-1);
throw new YamlException("duplicate operations in whenlevel");
}
comparerResult = -1;
break;
}
case "level": {
if (!uint.TryParse(value.Value, out var lvl)) {
throw new YamlException("invalid whenlevel: level was not numeric");
}
level = lvl;
break; break;
} }
case "text": { case "text": {
@ -118,8 +112,7 @@ public class WhenLevelConverter : IYamlTypeConverter {
}; };
} }
public void WriteYaml(IEmitter emitter, object? value, Type type) public void WriteYaml(IEmitter emitter, object? value, Type type) {
{
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }

View File

@ -26,13 +26,13 @@ replacements:
# Original: Don't ever turn your back on a beastie, hear? # Original: Don't ever turn your back on a beastie, hear?
- id: 280 - id: 280
when: when:
- level:
greaterThan: 30
text: |-
Try not to get
swarmed out there.
- level: - level:
greaterThan: 50 greaterThan: 50
text: |- text: |-
Bet beasties never Bet beasties never
give you any trouble. give you any trouble.
- level:
greaterThan: 30
text: |-
Try not to get
swarmed out there.