quakeforge/ruamoko/cl_menu/MenuGroup.r

68 lines
1 KiB
R
Raw Normal View History

#include "key.h"
#include "sound.h"
#include "Array.h"
#include "options_util.h"
#include "MenuGroup.h"
@implementation MenuGroup
-(id) init
{
if ((self = [super init]))
current = base = 0;
return self;
}
-(void)setBase:(int)b
{
if (b >= [views count])
b = [views count] - 1;
if (b < 0)
b = 0;
current = base = b;
}
- (int) keyEvent:(int)key unicode:(int)unicode down:(int)down
{
View *cur = [views objectAtIndex: current];
int ret = [cur keyEvent: key unicode: unicode down: down];
if (!ret) {
switch (key) {
case QFK_DOWN:
case QFM_WHEEL_DOWN:
[self next];
return 1;
case QFK_UP:
case QFM_WHEEL_UP:
[self prev];
return 1;
}
}
return ret;
}
-(void) next
{
if (++current >= [views count])
current = base;
S_LocalSound ("misc/menu1.wav");
}
-(void) prev
{
if (--current < base)
current = [views count] - 1;
S_LocalSound ("misc/menu1.wav");
}
- (void) draw
{
local View *cur;
[super draw];
cur = [views objectAtIndex:current];
opt_cursor (cur.xabs - 8, cur.yabs);
}
@end