Cube  Diff

Differences From Artifact [f42a4c7759]:

To Artifact [a7099f1853]:


1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


































21
#import "Variable.h"



@implementation Variable
- (instancetype)initWithName:(OFString *)name
                         min:(int)min
                         max:(int)max
                     storage:(int *)storage
                    function:(void (*)())function
                   persisted:(bool)persisted
{
	self = [super initWithName:name];

	_min = min;
	_max = max;
	_storage = storage;
	_function = function;
	_persisted = persisted;

	return self;
}


































@end

>
>






|












>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#import "Variable.h"

#include "cube.h"

@implementation Variable
- (instancetype)initWithName:(OFString *)name
                         min:(int)min
                         max:(int)max
                     storage:(int *)storage
                    function:(void (*__cdecl)())function
                   persisted:(bool)persisted
{
	self = [super initWithName:name];

	_min = min;
	_max = max;
	_storage = storage;
	_function = function;
	_persisted = persisted;

	return self;
}

- (void)printValue
{
	conoutf(@"%@ = %d", self.name, *_storage);
}

- (void)setValue:(int)value
{
	bool outOfRange = false;

	if (_min > _max) {
		conoutf(@"variable is read-only");
		return;
	}

	if (value < _min) {
		value = _min;
		outOfRange = true;
	}

	if (value > _max) {
		value = _max;
		outOfRange = true;
	}

	if (outOfRange)
		conoutf(@"valid range for %@ is %d..%d", self.name, _min, _max);

	*_storage = value;

	if (_function != NULL)
		// call trigger function if available
		_function();
}
@end