Skip to content

Commit cc45624

Browse files
make number arguments resolve calculations
1 parent a9a6126 commit cc45624

File tree

2 files changed

+15
-59
lines changed

2 files changed

+15
-59
lines changed

ArgumentSystem/Arguments/FloatArgument.cs

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using SER.Helpers.Exceptions;
55
using SER.Helpers.ResultSystem;
66
using SER.TokenSystem.Tokens;
7-
using SER.TokenSystem.Tokens.Interfaces;
87
using SER.ValueSystem;
98
using Random = UnityEngine.Random;
109

@@ -57,40 +56,20 @@ public DynamicTryGet<float> GetConvertSolution(BaseToken token)
5756
{
5857
if (token is NumberToken number)
5958
{
60-
return VerifyRange((float)number.Value.ExactValue);
59+
return VerifyRange(number.Value.ExactValue);
6160
}
62-
63-
if (token is not IValueCapableToken<LiteralValue>)
64-
{
65-
return $"Value '{token.RawRep}' cannot represent a number.";
66-
}
67-
68-
if (TryParse(token).WasSuccessful(out var value))
69-
{
70-
return value;
71-
}
72-
73-
return new(() => TryParse(token));
74-
}
75-
76-
private TryGet<float> TryParse(BaseToken token)
77-
{
78-
if (token.TryGetLiteralValue<NumberValue>().HasErrored(out var error, out var value))
79-
{
80-
return error;
81-
}
82-
83-
return VerifyRange((float)value.ExactValue);
61+
return new(() => token.TryGetLiteralValue<NumberValue>().OnSuccess(VerifyRange));
8462
}
8563

86-
private TryGet<float> VerifyRange(float value)
64+
private TryGet<float> VerifyRange(NumberValue value)
8765
{
88-
if (value < _minValue)
66+
var result = (float)value.ExactValue;
67+
if (result < _minValue)
8968
return $"Value {value} is lower than allowed minimum value {_minValue}.";
9069

91-
if (value > _maxValue)
70+
if (result > _maxValue)
9271
return $"Value {value} is higher than allowed maximum value {_maxValue}.";
9372

94-
return value;
73+
return result;
9574
}
9675
}

ArgumentSystem/Arguments/IntArgument.cs

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using SER.Helpers.Exceptions;
44
using SER.Helpers.ResultSystem;
55
using SER.TokenSystem.Tokens;
6-
using SER.TokenSystem.Tokens.Interfaces;
76
using SER.ValueSystem;
87
using UnityEngine;
98

@@ -54,43 +53,21 @@ public override string InputDescription
5453
[UsedImplicitly]
5554
public DynamicTryGet<int> GetConvertSolution(BaseToken token)
5655
{
57-
if (token is NumberToken numberToken)
56+
if (token is NumberToken number)
5857
{
59-
return VerifyRange(numberToken.Value);
58+
return VerifyRange(number.Value.ExactValue);
6059
}
61-
62-
if (token is not IValueCapableToken<LiteralValue>)
63-
{
64-
return $"Value '{token.RawRep}' cannot represent a number.";
65-
}
66-
67-
if (TryParse(token).WasSuccessful(out var finalValue))
68-
{
69-
return finalValue;
70-
}
71-
72-
return new(() => TryParse(token));
60+
return new(() => token.TryGetLiteralValue<NumberValue>().OnSuccess(VerifyRange));
7361
}
7462

75-
private TryGet<int> TryParse(BaseToken token)
76-
{
77-
if (token.TryGetLiteralValue<NumberValue>().HasErrored(out var error, out var value))
78-
{
79-
return new Result(false, error) + $"Value '{token.RawRep}' does not represent a valid number.";
80-
}
81-
82-
return VerifyRange(value);
83-
}
84-
85-
private TryGet<int> VerifyRange(NumberValue input)
63+
private TryGet<int> VerifyRange(NumberValue value)
8664
{
87-
var result = (int)input.ExactValue;
88-
65+
var result = (int)value.ExactValue;
8966
if (result < _minValue)
90-
return $"Value '{result}' is lower than allowed minimum value {_minValue}.";
91-
67+
return $"Value {value} is lower than allowed minimum value {_minValue}.";
68+
9269
if (result > _maxValue)
93-
return $"Value '{result}' is higher than allowed maximum value {_maxValue}.";
70+
return $"Value {value} is higher than allowed maximum value {_maxValue}.";
9471

9572
return result;
9673
}

0 commit comments

Comments
 (0)