quakeforge/ruamoko/cl_menu/MenuGroup.r

67 lines
1,010 B
R

#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
{
switch (key) {
case QFK_DOWN:
case QFM_WHEEL_DOWN:
[self next];
return 1;
case QFK_UP:
case QFM_WHEEL_UP:
[self prev];
return 1;
default:
return [[views objectAtIndex: current]
keyEvent: key
unicode: unicode
down: down];
}
}
-(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