[cl_menu] Add CvarIntRange for integer sliders

Fixes viewsize not working (sort of: the slider now works, but the cvar
itself does not, but that's an engine issue).
This commit is contained in:
Bill Currie 2023-12-21 10:29:20 +09:00
parent fc6c426241
commit 3dd7678962
3 changed files with 52 additions and 2 deletions

View file

@ -14,4 +14,15 @@
-(int)percentage;
@end
@interface CvarIntRange : CvarObject
{
int min, max, step;
}
-(id)initWithCvar:(string)cvname min:(int)_min max:(int)_max step:(int)_step;
-(void)inc;
-(void)dec;
-(float)value;
-(int)percentage;
@end
#endif//__CvarRange_h

View file

@ -41,3 +41,42 @@
}
@end
@implementation CvarIntRange
-(id)initWithCvar:(string)cvname min:(int)_min max:(int)_max step:(int)_step
{
self = [super initWithCvar: cvname];
min = _min;
max = _max;
step = _step;
return self;
}
-(void)inc
{
local int val = Cvar_GetInteger (name);
val = min_max_cnt (min, max, step, val, 1);
Cvar_SetInteger (name, val);
}
-(void)dec
{
local int val = Cvar_GetInteger (name);
val = min_max_cnt (min, max, step, val, 0);
Cvar_SetInteger (name, val);
}
-(float)value
{
return Cvar_GetInteger (name);
}
-(int)percentage
{
return to_percentage(min, max, Cvar_GetInteger (name));
}
@end

View file

@ -282,10 +282,10 @@
);
rect = "[70, 110, 224, 8]";
range = {
Class = CvarRange;
Class = CvarIntRange;
Messages = (
(initWithCvar:min:max:step:,
"\"viewsize\"", 30.0, 120.0, 10.0)
"\"viewsize\"", 30, 120, 10)
);
};
}