68 if ((
self = [super init]))
73 pixel_row_center = size_in_pixels.width / 2;
78 pixel_text_size = NSMakeSize(0.9f * pixel_row_height, pixel_row_height);
80 pixel_title_size = NSMakeSize(pixel_row_height * 1.75f, pixel_row_height * 1.5f);
82 int stops[6] = {0, 192, 256, 320, 384, 448};
85 rowRange = NSMakeRange(0,n_rows);
87 rowText = [[NSMutableArray alloc] initWithCapacity:n_rows];
88 rowKey = [[NSMutableArray alloc] initWithCapacity:n_rows];
89 rowColor = [[NSMutableArray alloc] initWithCapacity:n_rows];
91 for (i = 0; i < n_rows; i++)
94 [
rowKey addObject:[NSString stringWithFormat:@"%d",i]];
96 rowPosition[i].x = 0.0f;
97 rowPosition[i].y = size_in_pixels.height - (pixel_row_start + i * pixel_row_height);
101 for (i = 0; i < n_columns; i++)
103 tabStops[i] = stops[i];
110 drawPosition = make_vector(0.0f, 0.0f, 640.0f);
120- (id) initWithPixelSize:(NSSize)gui_size
121 columns:(
int)gui_cols
123 rowHeight:(
int)gui_row_height
124 rowStart:(
int)gui_row_start
125 title:(NSString*)gui_title
129 size_in_pixels = gui_size;
130 n_columns = gui_cols;
132 pixel_row_center = size_in_pixels.width / 2;
133 pixel_row_height = gui_row_height;
134 pixel_row_start = gui_row_start;
137 pixel_text_size = NSMakeSize(pixel_row_height, pixel_row_height);
139 pixel_title_size = NSMakeSize(pixel_row_height * 1.75f, pixel_row_height * 1.5f);
143 rowRange = NSMakeRange(0,n_rows);
145 rowText = [[NSMutableArray alloc] initWithCapacity:n_rows];
146 rowKey = [[NSMutableArray alloc] initWithCapacity:n_rows];
147 rowColor = [[NSMutableArray alloc] initWithCapacity:n_rows];
149 for (i = 0; i < n_rows; i++)
151 [rowText addObject:@""];
152 [rowKey addObject:@""];
154 rowPosition[i].x = 0.0f;
155 rowPosition[i].y = size_in_pixels.height - (pixel_row_start + i * pixel_row_height);
159 title = [gui_title retain];
169 [backgroundSprite release];
170 [foregroundSprite release];
171 [backgroundColor release];
177 [guiUserSettings release];
183- (void) resizeWithPixelSize:(NSSize)gui_size
184 columns:(
int)gui_cols
186 rowHeight:(
int)gui_row_height
187 rowStart:(
int)gui_row_start
188 title:(NSString*) gui_title
192 size_in_pixels = gui_size;
193 n_columns = gui_cols;
195 pixel_row_center = size_in_pixels.width / 2;
196 pixel_row_height = gui_row_height;
197 pixel_row_start = gui_row_start;
199 pixel_text_size = NSMakeSize(pixel_row_height, pixel_row_height);
200 pixel_title_size = NSMakeSize(pixel_row_height * 1.75f, pixel_row_height * 1.5f);
202 rowRange = NSMakeRange(0,n_rows);
205 [
self setTitle: gui_title];
209- (void) resizeTo:(NSSize)gui_size
210 characterHeight:(
int)csize
211 title:(NSString*)gui_title
215 size_in_pixels = gui_size;
216 n_columns = gui_size.width / csize;
217 n_rows = (
int)gui_size.height / csize;
219 [
self setTitle: gui_title];
221 pixel_row_center = gui_size.width / 2;
222 pixel_row_height = csize;
223 currentRow = n_rows - 1;
226 pixel_row_start = 2.75f * csize + 0.5f * (gui_size.height - n_rows * csize);
228 pixel_row_start = csize + 0.5f * (gui_size.height - n_rows * csize);
230 [rowText removeAllObjects];
231 [rowKey removeAllObjects];
232 [rowColor removeAllObjects];
235 for (i = 0; i < n_rows; i++)
237 [rowText addObject:@""];
238 [rowKey addObject:@""];
240 rowPosition[i].x = 0.0f;
241 rowPosition[i].y = size_in_pixels.height - (pixel_row_start + i * pixel_row_height);
245 pixel_text_size = NSMakeSize(csize, csize);
246 pixel_title_size = NSMakeSize(csize * 1.75f, csize * 1.5f);
248 OOLog(
@"gui.reset",
@"gui %@ reset to rows:%d columns:%d start:%d",
self, n_rows, n_columns, pixel_row_start);
250 rowRange = NSMakeRange(0,n_rows);
257 return size_in_pixels;
275 return pixel_row_height;
281 return pixel_row_start;
291- (void) setTitle:(NSString *)str
296 if ([str length] == 0) str =
nil;
302- (void) setDrawPosition:(Vector) vector
304 drawPosition = vector;
308- (Vector) drawPosition
314- (NSDictionary *) userSettings
316 return guiUserSettings;
322 if (fade_alpha <= 0.0f)
327 fade_sign = -1000.0f;
329 fade_sign = (float)(-fade_alpha / duration);
345- (void) setAlpha:(GLfloat) an_alpha
347 fade_alpha = an_alpha * max_alpha;
351- (void) setMaxAlpha:(GLfloat) an_alpha
353 max_alpha = an_alpha;
357- (void) setBackgroundColor:(
OOColor*) color
359 [backgroundColor release];
360 backgroundColor = [color retain];
371- (void) setTextColor:(
OOColor*) color
375 textColor = [color retain];
381 return textCommsColor;
385- (void) setTextCommsColor:(
OOColor*) color
387 [textCommsColor release];
389 textCommsColor = [color retain];
393- (
OOColor *) colorFromSetting:(NSString *)setting defaultValue:(
OOColor *)def
397 if (setting !=
nil) {
408 return [[col copy] autorelease];
412- (void) setGLColorFromSetting:(NSString *)setting defaultValue:(
OOColor *)def alpha:(GLfloat)alpha
415 OOColor *col = [
self colorFromSetting:setting defaultValue:def];
418 OOGL(glColor4f(r, g, b, a*alpha));
422- (void) setGuiColorSettingFromKey:(NSString *)key color:(
OOColor *)col
424 NSMutableDictionary *guiCopy = [guiUserSettings mutableCopy];
427 [guiCopy removeObjectForKey:key];
431 [guiCopy setObject:col forKey:key];
433 [guiUserSettings release];
434 guiUserSettings = [guiCopy copy];
439- (void) setCharacterSize:(NSSize) character_size
441 pixel_text_size = character_size;
445- (void)setShowAdvancedNavArray:(BOOL)inFlag
447 showAdvancedNavArray = inFlag;
454 [rowColor replaceObjectAtIndex:row withObject:color];
461 return [rowText objectAtIndex:row];
467- (
OOGUIRow) rowForKey:(NSString*)key
469 for (
unsigned i=0;i<[rowKey count];i++)
471 if ([key isEqualToString:[rowKey objectAtIndex:i]])
480- (NSString*) keyForRow:(
OOGUIRow)row
483 return [rowKey objectAtIndex:row];
498- (BOOL) setSelectedRow:(
OOGUIRow)row
500 if ((row == selectedRow) &&
RowInRange(row, selectableRange))
509 [
self reportSelectedRow:row];
517- (BOOL) setNextRow:(
int) direction
519 OOGUIRow row = selectedRow + direction;
525 [
self reportSelectedRow:row];
534- (BOOL) setFirstSelectableRow
536 NSUInteger row = selectableRange.location;
542 [
self reportSelectedRow:row];
552- (BOOL) setLastSelectableRow
554 NSUInteger row = selectableRange.location + selectableRange.length - 1;
560 [
self reportSelectedRow:row];
570- (void) reportSelectedRow:(
int) row
572 [PLAYER doScriptEvent:OOJSID("guiSelectedRowChanged") withArguments:[NSArray arrayWithObjects:[
self keyForRow:row], [NSNumber numberWithInt:row], [
self selectedRowText], nil]];
576- (void) setNoSelectedRow
582- (NSString *) selectedRowText
584 if ([[rowText objectAtIndex:selectedRow] isKindOfClass:[NSString class]])
585 return (NSString *)[rowText objectAtIndex:selectedRow];
586 if ([[rowText objectAtIndex:selectedRow] isKindOfClass:[NSArray class]])
587 return (NSString *)[[rowText objectAtIndex:selectedRow] objectAtIndex:0];
592- (NSString *) selectedRowKey
594 if ((selectedRow < 0)||((
unsigned)selectedRow > [rowKey
count]))
597 return (NSString *)[rowKey objectAtIndex:selectedRow];
601- (void) setShowTextCursor:(BOOL) yesno
603 showTextCursor = yesno;
607- (void) setCurrentRow:(
OOGUIRow) value
609 if ((value < 0)||((
unsigned)value >= n_rows))
621- (NSRange) selectableRange
623 return selectableRange;
627- (void) setSelectableRange:(NSRange) range
629 selectableRange = range;
635 if (stops != NULL) memmove(tabStops, stops,
sizeof tabStops);
638- (void) overrideTabs:(
OOGUITabSettings)stops from:(NSString *)setting length:(NSUInteger)len
640 NSArray *
override = [guiUserSettings oo_arrayForKey:setting defaultValue:nil];
642 if (stops != NULL &&
override !=
nil)
650 stops[i] = [override oo_unsignedIntegerAtIndex:i defaultValue:stops[i]];
658 [
self clearAndKeepBackground:NO];
662- (void) clearAndKeepBackground:(BOOL)keepBackground
665 [
self setTitle: nil];
666 for (i = 0; i < n_rows; i++)
668 [
self setText:@"" forRow:i align:GUI_ALIGN_LEFT];
669 [
self setColor:textColor forRow:i];
671 [
self setKey:GUI_KEY_SKIP forRow:i];
673 rowFadeTime[i] = 0.0f;
675 [
self setShowTextCursor:NO];
676 [
self setSelectableRange:NSMakeRange(0,0)];
677 if (!keepBackground) [
self clearBackground];
681- (void) setKey:(NSString *)str forRow:(
OOGUIRow)row
684 [rowKey replaceObjectAtIndex:row withObject:str];
688- (void) setText:(NSString *)str forRow:(
OOGUIRow)row
692 [rowText replaceObjectAtIndex:row withObject:str];
701 [rowText replaceObjectAtIndex:row withObject:str];
702 rowAlignment[row] = alignment;
707- (
OOGUIRow) addLongText:(NSString *)str
712 if ([str rangeOfString:
@"\n"].location != NSNotFound)
714 NSArray *lines = [str componentsSeparatedByString:@"\n"];
716 for (i = 0; i < [lines count]; i++)
718 row = [
self addLongText:[lines oo_stringAtIndex:i] startingAtRow:row align:alignment];
723 NSSize chSize = pixel_text_size;
725 if (strsize.width < size_in_pixels.width)
727 [
self setText:str forRow:row align:alignment];
733 NSMutableString *string1 = [NSMutableString stringWithCapacity:256];
734 NSMutableString *string2 = [NSMutableString stringWithCapacity:256];
735 strsize.width = 0.0f;
736 while ((strsize.width < size_in_pixels.width)&&([words
count] > 0))
738 [string1 appendString:(NSString *)[words objectAtIndex:0]];
739 [string1 appendString:@" "];
740 [words removeObjectAtIndex:0];
742 if ([words
count] > 0)
743 strsize.width +=
OORectFromString((NSString *)[words objectAtIndex:0], 0.0f, 0.0f, chSize).size.width;
745 [string2 appendString:[words componentsJoinedByString:@" "]];
746 [
self setText:string1 forRow:row align:alignment];
747 return [
self addLongText:string2 startingAtRow:row+1 align:alignment];
1024static OOTextureSprite *NewTextureSpriteWithDescriptor(NSDictionary *descriptor, uint32_t srgbaOption)
1029 texture = TextureForGUITexture(descriptor, srgbaOption);
1030 if (texture ==
nil)
return nil;
1032 double specifiedWidth = [descriptor oo_doubleForKey:@"width" defaultValue:-INFINITY];
1033 double specifiedHeight = [descriptor oo_doubleForKey:@"height" defaultValue:-INFINITY];
1034 BOOL haveWidth = isfinite(specifiedWidth);
1035 BOOL haveHeight = isfinite(specifiedHeight);
1037 if (haveWidth && haveHeight)
1040 size.width = specifiedWidth;
1041 size.height = specifiedHeight;
1050 CGFloat ratio = originalDimensions.height / originalDimensions.width;
1051 size.width = specifiedWidth;
1054 else if (haveHeight)
1057 CGFloat ratio = originalDimensions.width / originalDimensions.height;
1058 size.height = specifiedHeight;
1064 size = originalDimensions;
1076 NSDictionary *bgDescriptor =
nil;
1077 OOGalaxyID galaxy_number = [PLAYER galaxyNumber];
1084 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"custom_chart_mission"];
1085 if (bgDescriptor ==
nil)
1087 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"short_range_chart_mission"];
1088 if (bgDescriptor ==
nil)
1090 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"short_range_chart"];
1097 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"short_range_chart_mission"];
1098 if (bgDescriptor ==
nil)
1100 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"short_range_chart"];
1106 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:[NSString stringWithFormat:@"long_range_chart%d_mission", galaxy_number+1]];
1107 if (bgDescriptor ==
nil)
1109 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"long_range_chart_mission"];
1110 if (bgDescriptor ==
nil)
1112 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:[NSString stringWithFormat:@"long_range_chart%d", galaxy_number+1]];
1113 if (bgDescriptor ==
nil)
1115 bgDescriptor = [UNIVERSE screenTextureDescriptorForKey:@"long_range_chart"];
1124 if (bgDescriptor !=
nil)
1126 [
self setBackgroundTextureDescriptor:bgDescriptor];
1129 backgroundSpecial = spec;
1130 [
self refreshStarChart];
1134- (BOOL) setBackgroundTextureDescriptor:(NSDictionary *)descriptor
1136 [backgroundSprite autorelease];
1138 backgroundSprite = NewTextureSpriteWithDescriptor(descriptor,
kOOTextureSRGBA);
1139 return backgroundSprite !=
nil;
1143- (BOOL) setForegroundTextureDescriptor:(NSDictionary *)descriptor
1145 [foregroundSprite autorelease];
1147 uint32_t srgbaOption = [[UNIVERSE gameView] hdrOutput] ?
kOOTextureSRGBA : 0;
1148 foregroundSprite = NewTextureSpriteWithDescriptor(descriptor, srgbaOption);
1149 return foregroundSprite !=
nil;
1153- (BOOL) setBackgroundTextureKey:(NSString *)key
1155 return [
self setBackgroundTextureDescriptor:[UNIVERSE screenTextureDescriptorForKey:key]];
1159- (BOOL) setForegroundTextureKey:(NSString *)key
1161 return [
self setForegroundTextureDescriptor:[UNIVERSE screenTextureDescriptorForKey:key]];
1165- (BOOL) preloadGUITexture:(NSDictionary *)descriptor
1171- (NSDictionary *) textureDescriptorFromJSValue:(jsval)value
1172 inContext:(JSContext *)context
1173 callerDescription:(NSString *)callerDescription
1177 NSDictionary *result =
nil;
1179 if (JSVAL_IS_OBJECT(value))
1182 if (JSVAL_IS_NULL(value))
return [NSDictionary dictionary];
1184 JSObject *objValue = JSVAL_TO_OBJECT(value);
1198 result = [NSDictionary dictionaryWithObject:name forKey:@"name"];
1199 if ([name length] == 0)
return result;
1204 if (result !=
nil && ![
self preloadGUITexture:result])
1206 OOJSReportWarning(context,
@"%@: texture \"%@\
" could not be found.", callerDescription, [result oo_stringForKey:
@"name"]);
1216- (void) setStatusPage:(NSInteger)pageNum
1218 if (pageNum == 0 || (pageNum < 0 && ((NSUInteger)-pageNum) >= statusPage))
1224 statusPage += pageNum;
1229- (NSUInteger) statusPage
1235- (void) drawEquipmentList:(NSArray *)eqptList z:(GLfloat)z
1237 if ([eqptList
count] == 0)
return;
1241 if ([[
PLAYER hud] allowBigGui])
1245 NSUInteger itemsPerColumn = maxRows;
1248 NSInteger firstY = 40;
1249 NSUInteger eqptCount = [eqptList count];
1250 NSUInteger pageCount = 1;
1253 NSArray *info =
nil;
1254 NSString *name =
nil;
1260 i = itemsPerColumn * 2 + 2;
1263 [[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:YES];
1265 i = itemsPerColumn * 4;
1270 if (statusPage == 1)
1277 start = i/statusPage;
1282 pageCount = ceil((
float)(eqptCount-i)/(itemsPerColumn*2)) + 2;
1283 statusPage = (NSInteger)
OOClampInteger(statusPage, 1, pageCount);
1284 start = (statusPage == 1) ? 0 : (statusPage-1) * itemsPerColumn * 2 + 2;
1289 statusPage = pageCount;
1298 [
self setText:@"" forRow:firstRow];
1299 [
self setKey:GUI_KEY_SKIP forRow:firstRow];
1300 [
self setText:@"" forRow:firstRow + STATUS_EQUIPMENT_MAX_ROWS];
1301 [
self setKey:GUI_KEY_SKIP forRow:firstRow + STATUS_EQUIPMENT_MAX_ROWS];
1302 [
self setSelectableRange:NSMakeRange(0,0)];
1304 [[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:NO];
1310 [
self setColor:[
self colorFromSetting:kGuiStatusEquipmentScrollColor defaultValue:[
OOColor greenColor]] forRow:firstRow];
1311 [
self setArray:[NSArray arrayWithObjects:DESC(@"gui-back"), @"", @" <-- ",nil] forRow:firstRow];
1312 [
self setKey:GUI_KEY_OK forRow:firstRow];
1314 if (statusPage == pageCount)
1316 [
self setSelectableRange:NSMakeRange(firstRow, 1)];
1317 [
self setSelectedRow:firstRow];
1320 if (statusPage < pageCount)
1322 [
self setColor:[
self colorFromSetting:kGuiStatusEquipmentScrollColor defaultValue:[
OOColor greenColor]] forRow:firstRow + maxRows];
1323 [
self setArray:[NSArray arrayWithObjects:DESC(@"gui-more"), @"", @" --> ",nil] forRow:firstRow + maxRows];
1324 [
self setKey:GUI_KEY_OK forRow:firstRow + maxRows];
1325 if (statusPage == 1)
1327 [
self setSelectableRange:NSMakeRange(firstRow + maxRows, 1)];
1328 [
self setSelectedRow:firstRow + maxRows];
1331 if (statusPage > 1 && statusPage < pageCount)
1333 [
self setSelectableRange:NSMakeRange(firstRow, MIN(firstRow + maxRows, GUI_DEFAULT_ROWS - firstRow))];
1335 if ([
self selectedRow] == -1) [
self setSelectedRow:firstRow + maxRows];
1338 if (statusPage == 1 || statusPage == pageCount) itemsPerColumn++;
1339 eqptCount = (NSInteger)
OOClampInteger(eqptCount, 1, start + itemsPerColumn * 2);
1340 for (i = start; i < eqptCount; i++)
1342 info = [eqptList oo_arrayAtIndex:i];
1343 name = [info oo_stringAtIndex:0];
1344 if([name length] > 42) name = [[name substringToIndex:40] stringByAppendingString:@"..."];
1346 damaged = ![info oo_boolAtIndex:1];
1350 [
self setGLColorFromSetting:@"status_equipment_damaged_color" defaultValue:[
OOColor orangeColor] alpha:1.0];
1354 OOColor *dispCol = [info oo_objectAtIndex:2];
1356 [
self setGLColorFromSetting:@"status_equipment_ok_color" defaultValue:dispCol alpha:1.0];
1359 if (i - start < itemsPerColumn)
1361 OODrawString(name, -220, firstY - 16 * (NSInteger)(i - start), z, NSMakeSize(15, 15));
1365 OODrawString(name, 50, firstY - 16 * (NSInteger)(i - itemsPerColumn - start), z, NSMakeSize(15, 15));
1371- (void) drawGUIBackground
1373 GLfloat
x = drawPosition.x;
1374 GLfloat
y = drawPosition.y;
1375 GLfloat z = [[UNIVERSE gameView] display_z];
1377 if (backgroundSprite!=
nil)
1379 [backgroundSprite blitBackgroundCentredToX:x Y:y Z:z alpha:1.0f];
1385- (void) refreshStarChart
1391- (
int) drawGUI:(GLfloat) alpha drawCursor:(BOOL) drawCursor
1393 GLfloat
x = drawPosition.x;
1394 GLfloat
y = drawPosition.y;
1395 GLfloat z = [[UNIVERSE gameView] display_z];
1401 [
self drawGLDisplay:x - 0.5f * size_in_pixels.width :y - 0.5f * size_in_pixels.height :z :alpha];
1405 if ([player guiScreen] == GUI_SCREEN_SHORT_RANGE_CHART || [player guiScreen] == GUI_SCREEN_LONG_RANGE_CHART ||
1413 [
self drawStarChart:x - 0.5f * size_in_pixels.width :y - 0.5f * size_in_pixels.height :z :alpha :NO];
1419 [
self drawStarChart:x - 0.5f * size_in_pixels.width :y - 0.5f * size_in_pixels.height :z :alpha :YES];
1421 if ([player guiScreen] == GUI_SCREEN_STATUS)
1425 if ([player guiScreen] == GUI_SCREEN_STICKPROFILE)
1433 fade_alpha += (float)(fade_sign * [
UNIVERSE getTimeDelta]);
1434 if (fade_alpha < 0.05f)
1439 if (fade_alpha >= max_alpha)
1441 fade_alpha = max_alpha;
1451 NSPoint vjpos = [[UNIVERSE gameView] virtualJoystickPosition];
1452 double cursor_x = size_in_pixels.width * vjpos.x;
1453 if (cursor_x < -size_in_pixels.width * 0.5) cursor_x = -size_in_pixels.width * 0.5f;
1454 if (cursor_x > size_in_pixels.width * 0.5) cursor_x = size_in_pixels.width * 0.5f;
1455 double cursor_y = -size_in_pixels.height * vjpos.
y;
1456 if (cursor_y < -size_in_pixels.height * 0.5) cursor_y = -size_in_pixels.height * 0.5f;
1457 if (cursor_y > size_in_pixels.height * 0.5) cursor_y = size_in_pixels.height * 0.5f;
1459 cursor_row = 1 + (float)floor((0.5f * size_in_pixels.height - pixel_row_start - cursor_y) / pixel_row_height);
1463 OOGL(glColor4f(0.6f, 0.6f, 1.0f, 1.0f));
1468 [[UNIVERSE gameView] setVirtualJoystick:cursor_x/size_in_pixels.width :-cursor_y/size_in_pixels.height];
1471 glVertex3f((
float)cursor_x - h1, (
float)cursor_y, z); glVertex3f((
float)cursor_x - h3, (
float)cursor_y, z);
1472 glVertex3f((
float)cursor_x + h1, (
float)cursor_y, z); glVertex3f((
float)cursor_x + h3, (
float)cursor_y, z);
1473 glVertex3f((
float)cursor_x, (
float)cursor_y - h1, z); glVertex3f((
float)cursor_x, (
float)cursor_y - h3, z);
1474 glVertex3f((
float)cursor_x, (
float)cursor_y + h1, z); glVertex3f((
float)cursor_x, (
float)cursor_y + h3, z);
1484- (void) drawGLDisplay:(GLfloat)x :(GLfloat)y :(GLfloat)z :(GLfloat) alpha
1489 NSSize characterSize = pixel_text_size;
1490 NSSize titleCharacterSize = pixel_title_size;
1491 float backgroundAlpha =
self == [UNIVERSE messageGUI] && ![UNIVERSE permanentMessageLog] ? 0.0f : alpha;
1492 float row_alpha[n_rows];
1497 for (i = 0; i < n_rows; i++)
1499 row_alpha[i] = alpha;
1501 if(![
UNIVERSE autoMessageLogBg] && [
PLAYER guiScreen] == GUI_SCREEN_MAIN) backgroundAlpha = alpha;
1503 if (rowFadeTime[i] > 0.0f && ![
UNIVERSE permanentMessageLog])
1505 rowFadeTime[i] -= (float)delta_t;
1506 if (rowFadeTime[i] <= 0.0f)
1508 [rowText replaceObjectAtIndex:i withObject:@""];
1509 rowFadeTime[i] = 0.0f;
1512 if ((rowFadeTime[i] > 0.0f)&&(rowFadeTime[i] < 1.0))
1514 row_alpha[i] *= rowFadeTime[i];
1515 if (backgroundAlpha < row_alpha[i]) backgroundAlpha = row_alpha[i];
1519 backgroundAlpha = alpha;
1527 if (backgroundColor)
1529 int playerStatus = [PLAYER status];
1530 if (playerStatus != STATUS_START_GAME && playerStatus != STATUS_DEAD)
1532 OOGL(glColor4f([backgroundColor redComponent], [backgroundColor greenComponent], [backgroundColor blueComponent], backgroundAlpha * [backgroundColor alphaComponent]));
1534 glVertex3f(
x + 0.0f,
y + 0.0f, z);
1535 glVertex3f(
x + size_in_pixels.width,
y + 0.0f, z);
1536 glVertex3f(
x + size_in_pixels.width,
y + size_in_pixels.height, z);
1537 glVertex3f(
x + 0.0f,
y + size_in_pixels.height, z);
1544 if (foregroundSprite !=
nil)
1546 [foregroundSprite blitCentredToX:x + 0.5f * size_in_pixels.width Y:y + 0.5f * size_in_pixels.height Z:z alpha:alpha];
1549 if (!
RowInRange(selectedRow, selectableRange))
1561 [
self setGLColorFromSetting:kGuiScreenTitleColor defaultValue:[
OOColor redColor] alpha:alpha];
1563 OODrawString(title,
x + pixel_row_center - strsize.width/2.0,
y + size_in_pixels.height - pixel_title_size.height, z, titleCharacterSize);
1570 glVertex3f(
x + 0,
y + size_in_pixels.height - pixel_title_size.height + 4, z);
1571 glVertex3f(
x + size_in_pixels.width,
y + size_in_pixels.height - pixel_title_size.height + 4, z);
1572 glVertex3f(
x + size_in_pixels.width,
y + size_in_pixels.height - pixel_title_size.height + 2, z);
1573 glVertex3f(
x + 0,
y + size_in_pixels.height - pixel_title_size.height + 2, z);
1580 for (i = 0; i < n_rows; i++)
1583 glColor4f([row_color redComponent], [row_color greenComponent], [row_color blueComponent], row_alpha[i]);
1585 if ([[rowText objectAtIndex:i] isKindOfClass:[NSString class]])
1587 NSString* text = (NSString *)[rowText objectAtIndex:i];
1588 if (![text isEqual:
@""])
1591 switch (rowAlignment[i])
1594 rowPosition[i].x = 0.0f;
1597 rowPosition[i].x = size_in_pixels.width - strsize.width;
1600 rowPosition[i].x = (size_in_pixels.width - strsize.width)/2.0f;
1603 if (i == (
unsigned)selectedRow)
1605 NSRect block =
OORectFromString(text,
x + rowPosition[i].
x + 2,
y + rowPosition[i].
y + 2, characterSize);
1607 [
self setGLColorFromSetting:kGuiSelectedRowBackgroundColor defaultValue:[
OOColor redColor] alpha:alpha];
1609 glVertex3f(block.origin.x, block.origin.y, z);
1610 glVertex3f(block.origin.x + block.size.width, block.origin.y, z);
1611 glVertex3f(block.origin.x + block.size.width, block.origin.y + block.size.height, z);
1612 glVertex3f(block.origin.x, block.origin.y + block.size.height, z);
1614 [
self setGLColorFromSetting:kGuiSelectedRowColor defaultValue:[
OOColor blackColor] alpha:alpha];
1621 if ((showTextCursor)&&(i == (
unsigned)currentRow))
1624 NSPoint cu = NSMakePoint(
x + rowPosition[i].
x + tr.size.width + 0.2f * characterSize.width,
y + rowPosition[i].y);
1626 tr.size.width = 0.5f * characterSize.width;
1627 GLfloat g_alpha = 0.5f * (1.0f + (float)sin(6 * [
UNIVERSE getTime]));
1629 [
self setGLColorFromSetting:kGuiTextInputCursorColor defaultValue:[
OOColor redColor] alpha:row_alpha[i]*g_alpha];
1631 glVertex3f(tr.origin.x, tr.origin.y, z);
1632 glVertex3f(tr.origin.x + tr.size.width, tr.origin.y, z);
1633 glVertex3f(tr.origin.x + tr.size.width, tr.origin.y + tr.size.height, z);
1634 glVertex3f(tr.origin.x, tr.origin.y + tr.size.height, z);
1640 if ([[rowText objectAtIndex:i] isKindOfClass:[NSArray class]])
1642 NSArray *array = [rowText oo_arrayAtIndex:i];
1643 NSUInteger j, max_columns =
MIN([array
count], n_columns);
1646 for (j = 0; j < max_columns; j++)
1648 NSString* text = [array oo_stringAtIndex:j];
1649 if ([text length] != 0)
1651 isLeftAligned = tabStops[j] >= 0;
1652 rowPosition[i].x = llabs(tabStops[j]);
1655 NSString *hilitedText = [text stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" \037"]];
1656 NSRange txtRange = [text rangeOfString:hilitedText];
1657 unsigned leadingSpaces = 0;
1659 if (
EXPECT_NOT(txtRange.location == NSNotFound))
1664 else if (txtRange.location > 0)
1668 padRange.location = 0;
1669 padRange.length = txtRange.location;
1670 NSRect charBlock =
OORectFromString([text substringWithRange:padRange], 0, 0, characterSize);
1671 leadingSpaces = (unsigned)charBlock.size.width;
1684 NSRect block =
OORectFromString(text,
x + rowPosition[i].
x + 2,
y + rowPosition[i].
y + 2, characterSize);
1688 rowPosition[i].x -= block.
size.width + 3;
1690 block =
OORectFromString(hilitedText,
x + rowPosition[i].
x + 1 + leadingSpaces,
y + rowPosition[i].
y + 2, characterSize);
1691 block.size.width += 3;
1694 if (i == (
unsigned)selectedRow)
1697 [
self setGLColorFromSetting:kGuiSelectedRowBackgroundColor defaultValue:[
OOColor redColor] alpha:alpha];
1699 glVertex3f(block.origin.x, block.origin.y, z);
1700 glVertex3f(block.origin.x + block.size.width, block.origin.y, z);
1701 glVertex3f(block.origin.x + block.size.width, block.origin.y + block.size.height, z);
1702 glVertex3f(block.origin.x, block.origin.y + block.size.height, z);
1704 [
self setGLColorFromSetting:kGuiSelectedRowColor defaultValue:[
OOColor blackColor] alpha:alpha];
1717- (void) drawCrossHairsWithSize:(GLfloat) size x:(GLfloat)x y:(GLfloat)y z:(GLfloat)z
1720 glVertex3f(
x - 1,
y -
size, z);
1721 glVertex3f(
x + 1,
y -
size, z);
1722 glVertex3f(
x + 1,
y +
size, z);
1723 glVertex3f(
x - 1,
y +
size, z);
1724 glVertex3f(
x -
size,
y - 1, z);
1725 glVertex3f(
x +
size,
y - 1, z);
1726 glVertex3f(
x +
size,
y + 1, z);
1727 glVertex3f(
x -
size,
y + 1, z);
1732- (void) setStarChartTitle
1738 NSString *location_key = [NSString stringWithFormat:@"long-range-chart-title-%d-%ld", galaxy_number, (long)system_id];
1739 if ([[
UNIVERSE descriptions] valueForKey:location_key] ==
nil)
1741 NSString *gal_key = [NSString stringWithFormat:@"long-range-chart-title-%d", galaxy_number];
1742 if ([[
UNIVERSE descriptions] valueForKey:gal_key] ==
nil)
1744 [
self setTitle:[NSString stringWithFormat:DESC(@"long-range-chart-title-d"), galaxy_number+1]];
1748 [
self setTitle:[UNIVERSE descriptionForKey:gal_key]];
1753 [
self setTitle:[UNIVERSE descriptionForKey:location_key]];
1758- (void) drawStarChart:(GLfloat)x :(GLfloat)y :(GLfloat)z :(GLfloat) alpha :(BOOL)compact
1771 NSPoint info_system_coordinates = [[UNIVERSE systemManager] getCoordinatesForSystem: [player
infoSystemID] inGalaxy: [player
galaxyNumber]];
1774 GLfloat r = 1.0, g = 1.0, b = 1.0;
1777 NSUInteger systemParameter;
1779 double fuel = 35.0 * [player
dialFuel];
1781 double hcenter = size_in_pixels.width/2.0;
1785 double hoffset = hcenter - chart_centre_coordinates.
x*hscale;
1786 double voffset = size_in_pixels.height - vcenter - chart_centre_coordinates.
y*vscale;
1790 hscale = size_in_pixels.width / 256.0;
1791 vscale = -1.0 * size_in_pixels.height / 512.0;
1793 voffset = size_in_pixels.height - pixel_title_size.height - 5;
1795 chart_centre_coordinates.x = 128.0;
1796 chart_centre_coordinates.y = 128.0;
1801 double d, distance = 0.0, time = 0.0;
1808 BOOL routeExists = NO;
1810 NSInteger concealment[256];
1811 for (i=0;i<256;i++) {
1812 NSDictionary *systemInfo = [systemManager getPropertiesForSystem:i inGalaxy:galaxy_id];
1813 concealment[i] = [systemInfo oo_intForKey:@"concealment" defaultValue:OO_SYSTEMCONCEALMENT_NONE];
1816 BOOL *systemsFound = [UNIVERSE systemsFound];
1817 NSSize viewSize = [[UNIVERSE gameView] backingViewSize];
1818 double aspect_ratio = viewSize.width / viewSize.height;
1821 GLfloat govcol[] = { 0.5, 0.0, 0.7,
1830 if (aspect_ratio > 4.0/3.0)
1832 pixelRatio = viewSize.height / 480.0;
1836 pixelRatio = viewSize.width / 640.0;
1841 clipRect = NSMakeRect((viewSize.width - size_in_pixels.width*pixelRatio)/2.0,
1842 (viewSize.height + size_in_pixels.height*pixelRatio)/2.0 - (pixel_title_size.height + 15 + (textRow-2)*
MAIN_GUI_ROW_HEIGHT) * pixelRatio,
1843 size_in_pixels.width * pixelRatio,
1853 cu = NSMakePoint((
float)(hscale*galaxy_coordinates.x+hoffset),(
float)(vscale*galaxy_coordinates.y+voffset));
1856 OOGL(glEnable(GL_SCISSOR_TEST));
1857 OOGL(glScissor(clipRect.origin.x, clipRect.origin.y, clipRect.size.width, clipRect.size.height));
1863 static struct saved_system
1869 } nearby_systems[ 256 ];
1870 static int num_nearby_systems = 0;
1876 for (i = 0; i < num_nearby_systems; i++)
1877 [nearby_systems[ i ].p_name release];
1879 num_nearby_systems = 0;
1880 for (i = 0; i < 256; i++)
1883 NSDictionary* sys_info = [UNIVERSE generateSystemData:i];
1884 if (
EXPECT_NOT([sys_info oo_boolForKey:
@"sun_gone_nova"]))
1886 nearby_systems[ num_nearby_systems ].gov = -1;
1890 nearby_systems[ num_nearby_systems ].tec = [sys_info oo_intForKey:KEY_TECHLEVEL];
1891 nearby_systems[ num_nearby_systems ].eco = [sys_info oo_intForKey:KEY_ECONOMY];
1892 nearby_systems[ num_nearby_systems ].gov = [sys_info oo_intForKey:KEY_GOVERNMENT];
1894 nearby_systems[ num_nearby_systems ].sysid = i;
1895 nearby_systems[ num_nearby_systems ].p_name = [[sys_info oo_stringForKey:KEY_NAME] retain];
1896 nearby_systems[ num_nearby_systems ].nova = [[UNIVERSE generateSystemData:i] oo_boolForKey:@"sun_gone_nova"];
1897 num_nearby_systems++;
1905 static NSDictionary *routeInfo =
nil;
1921 if (advancedNavArrayMode !=
OPTIMIZED_BY_NONE && [player hasEquipmentItemProviding:
@"EQ_ADVANCED_NAVIGATIONAL_ARRAY"])
1924 OOSystemID destNumber = [PLAYER targetSystemID];
1925 if (routeInfo ==
nil || planetNumber != savedPlanetNumber || destNumber != savedDestNumber || advancedNavArrayMode != savedArrayMode)
1927 [routeInfo release];
1928 routeInfo = [[UNIVERSE routeFromSystem:planetNumber toSystem:destNumber optimizedBy:advancedNavArrayMode] retain];
1929 savedPlanetNumber = planetNumber;
1930 savedDestNumber = destNumber;
1931 savedArrayMode = advancedNavArrayMode;
1933 target = destNumber;
1939 if (routeInfo) routeExists = YES;
1941 [
self drawAdvancedNavArrayAtX:x+hoffset y:y+voffset z:z alpha:alpha usingRoute: (planetNumber != destNumber ? (id)routeInfo : nil) optimizedBy:advancedNavArrayMode zoom: zoom];
1945 distance = [routeInfo oo_doubleForKey:@"distance"];
1946 time = [routeInfo oo_doubleForKey:@"time"];
1947 jumps = [routeInfo oo_intForKey:@"jumps"];
1949 if (distance == 0.0 && planetNumber != destNumber)
1959 [
self drawAdvancedNavArrayAtX:x+hoffset y:y+voffset z:z alpha:alpha usingRoute:nil optimizedBy:OPTIMIZED_BY_NONE zoom: zoom];
1963 NSPoint targetCoordinates = [systemManager getCoordinatesForSystem:target inGalaxy:galaxy_id];
1966 if (distance == 0.0)
1968 if (target != [
PLAYER systemID])
1975 if ([player hasHyperspaceMotor] && distance <= [player fuel]/10.0)
1977 time = distance * distance;
1985 if ([player hasHyperspaceMotor])
1989 [
self setGLColorFromSetting:kGuiChartRangeColor defaultValue:[
OOColor greenColor] alpha:alpha];
1991 GLDrawOval(
x + cu.x,
y + cu.y, z, NSMakeSize((
float)(fuel*hscale), 2*(
float)(fuel*vscale)), 5);
1997 [
self setGLColorFromSetting:kGuiChartCrosshairColor defaultValue:[
OOColor greenColor] alpha:alpha];
1999 [
self drawCrossHairsWithSize:12/zoom+2 x:x + cu.x y:y + cu.y z:z];
2004 [
self setGLColorFromSetting:kGuiChartCursorColor defaultValue:[
OOColor redColor] alpha:alpha];
2005 cu = NSMakePoint((
float)(hscale*cursor_coordinates.x+hoffset),(
float)(vscale*cursor_coordinates.y+voffset));
2006 [
self drawCrossHairsWithSize:7/zoom+2 x:x + cu.x y:y + cu.y z:z];
2011 OOGL(glColor4f(1.0f, 1.0f, 0.75f, alpha));
2013 for (i = 0; i < num_nearby_systems; i++)
2015 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:i inGalaxy:galaxy_id];
2017 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2018 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2029 NSDictionary *systemInfo = [systemManager getPropertiesForSystem:i inGalaxy:galaxy_id];
2030 float blob_factor = [guiUserSettings oo_floatForKey:kGuiChartCircleScale defaultValue:0.0017];
2031 float blob_size = (1.0f + blob_factor * [systemInfo oo_floatForKey:
@"radius"])/zoom;
2032 if (blob_size < 0.5) blob_size = 0.5;
2034 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2035 star.y = (float)(sys_coordinates.y * vscale + voffset);
2037 noNova = !nearby_systems[i].nova;
2038 NSAssert1(chart_mode <= OOLRC_MODE_TECHLEVEL,
@"Long range chart mode %i out of range", (
int)chart_mode);
2040 NSArray *markers = [markedDestinations objectForKey:[NSNumber numberWithInt:i]];
2043 GLfloat base_size = 0.5f * blob_size + 2.5f;
2044 [
self drawSystemMarkers:markers atX:x+star.x andY:y+star.y andZ:z withAlpha:alpha andScale:base_size];
2050 OOGL(glColor4f(r, g, b, alpha));
2054 case OOLRC_MODE_ECONOMY:
2057 systemParameter = nearby_systems[i].eco;
2058 GLfloat ce1 = 1.0f - 0.125f * systemParameter;
2059 [
self setGLColorFromSetting:[NSString stringWithFormat:kGuiChartEconomyUColor, (unsigned long)systemParameter]
2066 OOGL(glColor4f(r, g, b, alpha));
2069 case OOLRC_MODE_GOVERNMENT:
2072 systemParameter = nearby_systems[i].gov;
2073 [
self setGLColorFromSetting:[NSString stringWithFormat:kGuiChartGovernmentUColor, (unsigned long)systemParameter]
2080 OOGL(glColor4f(r, g, b, alpha));
2083 case OOLRC_MODE_TECHLEVEL:
2086 systemParameter = nearby_systems[i].tec;
2088 g = b = 0.20 + (0.05 * (GLfloat)systemParameter);
2094 OOGL(glColor4f(r, g, b, alpha));
2096 case OOLRC_MODE_UNKNOWN:
2097 case OOLRC_MODE_SUNCOLOR:
2102 if (sunColor !=
nil) {
2113 OOGL(glColor4f(r, g, b, alpha));
2123 GLfloat systemNameScale = [guiUserSettings oo_floatForKey:kGuiChartLabelScale defaultValue:1.0];
2126 [
self setGLColorFromSetting:kGuiChartMatchBoxColor defaultValue:[
OOColor greenColor] alpha:alpha];
2128 int n_matches = 0, foundIndex = -1;
2130 for (i = 0; i < 256; i++) if (systemsFound[i])
2132 if(foundSystem == n_matches) foundIndex = i;
2146 for (i = 0; i < 256; i++)
2153 BOOL mark = systemsFound[i];
2154 float marker_size = 8.0/zoom;
2155 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:i inGalaxy:galaxy_id];
2157 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2158 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2162 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2163 star.y = (float)(sys_coordinates.y * vscale + voffset);
2165 glVertex3f(
x + star.x - marker_size,
y + star.y - marker_size, z);
2166 glVertex3f(
x + star.x + marker_size,
y + star.y - marker_size, z);
2167 glVertex3f(
x + star.x + marker_size,
y + star.y + marker_size, z);
2168 glVertex3f(
x + star.x - marker_size,
y + star.y + marker_size, z);
2170 if (i == foundIndex || n_matches == 1)
2172 if (n_matches == 1) foundSystem = 0;
2175 [
self setGLColorFromSetting:kGuiChartMatchLabelColor defaultValue:[
OOColor cyanColor] alpha:alpha];
2176 OODrawString([
UNIVERSE systemNameIndex:i] ,
x + star.
x + 2.0,
y + star.
y - 10.0f, z, NSMakeSize(10*systemNameScale,10*systemNameScale));
2177 [
self setGLColorFromSetting:kGuiChartMatchBoxColor defaultValue:[
OOColor greenColor] alpha:alpha];
2182 OODrawString([
UNIVERSE systemNameIndex:i] ,
x + star.
x + 2.0,
y + star.
y - 10.0f, z, NSMakeSize(10*systemNameScale,10*systemNameScale));
2193 struct saved_system *sys;
2194 NSSize chSize = NSMakeSize(pixel_row_height*systemNameScale/zoom,pixel_row_height*systemNameScale/zoom);
2197 for (i = 0; i < num_nearby_systems; i++)
2204 sys = nearby_systems + i;
2205 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:sys->sysid inGalaxy:galaxy_id];
2207 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2208 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2212 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2213 star.y = (float)(sys_coordinates.y * vscale + voffset);
2214 if (sys->sysid == target)
2223 if (![player showInfoFlag])
2229 [
self setGLColorFromSetting:kGuiChartLabelReachableColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2233 [
self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2237 OODrawString(sys->p_name,
x + star.x + 2.0,
y + star.y, z, chSize);
2239 else if (
EXPECT(sys->gov >= 0))
2243 [
self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2248 OODrawPlanetInfo(sys->gov, sys->eco, sys->tec,
x + star.x + 2.0,
y + star.y + 2.0, z, chSize);
2260 sys = nearby_systems + targetIdx;
2261 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:sys->sysid inGalaxy:galaxy_id];
2263 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2264 star.y = (float)(sys_coordinates.y * vscale + voffset);
2266 if (![player showInfoFlag])
2271 [
self setGLColorFromSetting:kGuiChartLabelReachableColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2275 [
self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2281 else if (sys->gov >= 0)
2285 [
self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2300 [
self overrideTabs:tab_stops from:kGuiChartTraveltimeTabs length:3];
2301 [
self setTabStops:tab_stops];
2302 NSString *targetName = [[UNIVERSE getSystemName:target] retain];
2305 NSString *travelDistLine =
@"";
2308 travelDistLine =
OOExpandKey(
@"long-range-chart-distance", distance);
2310 NSString *travelTimeLine =
@"";
2313 travelTimeLine =
OOExpandKey(
@"long-range-chart-est-travel-time", time);
2318 [
self setArray:[NSArray arrayWithObjects:targetName, travelDistLine,travelTimeLine,nil] forRow:textRow];
2322 [
self setArray:[NSArray arrayWithObjects:@"", travelDistLine,travelTimeLine,nil] forRow:textRow];
2324 if ([
PLAYER guiScreen] == GUI_SCREEN_SHORT_RANGE_CHART)
2328 [
self setArray:[NSArray arrayWithObjects: @"", OOExpandKey(@"short-range-chart-jumps", jumps), nil] forRow: textRow + 1];
2332 [
self setArray:[NSArray array] forRow: textRow + 1];
2335 [targetName release];
2339 [
self setGLColorFromSetting: kGuiChartInfoMarkerColor defaultValue:[
OOColor blueColor] alpha:alpha];
2340 cu = NSMakePoint((
float)(hscale*info_system_coordinates.x+hoffset),(
float)(vscale*info_system_coordinates.y+voffset));
2341 GLDrawOval(
x + cu.x,
y + cu.y, z, NSMakeSize(6.0f/zoom+2.0f, 6.0f/zoom+2.0f), 5);
2344 OOGL(glDisable(GL_SCISSOR_TEST));
2349 glVertex3f(
x + 0, (
float)(
y + size_in_pixels.height - (textRow-1)*
MAIN_GUI_ROW_HEIGHT - pixel_title_size.height), z);
2350 glVertex3f(
x + size_in_pixels.width, (GLfloat)(
y + size_in_pixels.height - (textRow-1)*
MAIN_GUI_ROW_HEIGHT - pixel_title_size.height), z);
2351 glVertex3f(
x + size_in_pixels.width, (GLfloat)(
y + size_in_pixels.height - (textRow-1)*
MAIN_GUI_ROW_HEIGHT - pixel_title_size.height - 2), z);
2352 glVertex3f(
x + 0, (GLfloat)(
y + size_in_pixels.height - (textRow-1)*
MAIN_GUI_ROW_HEIGHT - pixel_title_size.height - 2), z);
2357- (void) drawSystemMarkers:(NSArray *)markers atX:(GLfloat)x andY:(GLfloat)y andZ:(GLfloat)z withAlpha:(GLfloat)alpha andScale:(GLfloat)scale
2359 NSDictionary *marker;
2360 foreach (marker, markers)
2362 [
self drawSystemMarker:marker atX:x andY:y andZ:z withAlpha:alpha andScale:scale];
2367- (void) drawSystemMarker:(NSDictionary *)marker atX:(GLfloat)x andY:(GLfloat)y andZ:(GLfloat)z withAlpha:(GLfloat)alpha andScale:(GLfloat)scale
2369 NSString *colorDesc = [marker oo_stringForKey:@"markerColor" defaultValue:@"redColor"];
2372 OOGL(glColor4f(color.
r, color.
g, color.
b, alpha));
2373 GLfloat mark_size = [marker oo_floatForKey:@"markerScale" defaultValue:1.0];
2374 if (mark_size > 2.0)
2378 else if (mark_size < 0.5)
2384 NSString *shape = [marker oo_stringForKey:@"markerShape" defaultValue:@"MARKER_X"];
2387 if ([shape isEqualToString:
@"MARKER_X"])
2389 glVertex3f(
x - mark_size,
y - mark_size, z);
2390 glVertex3f(
x + mark_size,
y + mark_size, z);
2391 glVertex3f(
x - mark_size,
y + mark_size, z);
2392 glVertex3f(
x + mark_size,
y - mark_size, z);
2394 else if ([shape isEqualToString:
@"MARKER_PLUS"])
2397 glVertex3f(
x,
y - mark_size, z);
2398 glVertex3f(
x,
y + mark_size, z);
2399 glVertex3f(
x - mark_size,
y, z);
2400 glVertex3f(
x + mark_size,
y, z);
2402 else if ([shape isEqualToString:
@"MARKER_SQUARE"])
2404 glVertex3f(
x - mark_size,
y - mark_size, z);
2405 glVertex3f(
x - mark_size,
y + mark_size, z);
2406 glVertex3f(
x - mark_size,
y + mark_size, z);
2407 glVertex3f(
x + mark_size,
y + mark_size, z);
2408 glVertex3f(
x + mark_size,
y + mark_size, z);
2409 glVertex3f(
x + mark_size,
y - mark_size, z);
2410 glVertex3f(
x + mark_size,
y - mark_size, z);
2411 glVertex3f(
x - mark_size,
y - mark_size, z);
2413 else if ([shape isEqualToString:
@"MARKER_DIAMOND"])
2416 glVertex3f(
x,
y - mark_size, z);
2417 glVertex3f(
x - mark_size,
y, z);
2418 glVertex3f(
x - mark_size,
y, z);
2419 glVertex3f(
x,
y + mark_size, z);
2420 glVertex3f(
x,
y + mark_size, z);
2421 glVertex3f(
x + mark_size,
y, z);
2422 glVertex3f(
x + mark_size,
y, z);
2423 glVertex3f(
x,
y - mark_size, z);
2429- (
OOSystemID) targetNextFoundSystem:(
int)direction
2432 if ([
PLAYER guiScreen] != GUI_SCREEN_SHORT_RANGE_CHART && [
PLAYER guiScreen] != GUI_SCREEN_LONG_RANGE_CHART)
return sys;
2434 BOOL *systemsFound = [UNIVERSE systemsFound];
2435 unsigned i, first = 0, last = 0,
count = 0;
2436 int systemIndex = foundSystem + direction;
2438 if (direction == 0) systemIndex = 0;
2442 if (systemsFound[i])
2452 if (systemIndex == (
int)
count)
2460 if (
count == 0)
return sys;
2463 if (systemIndex < 0)
2465 systemIndex =
count - 1;
2468 if (systemIndex >= (
int)
count)
2474 foundSystem = systemIndex;
2480- (void) drawAdvancedNavArrayAtX:(
float)x y:(
float)y z:(
float)z alpha:(
float)alpha usingRoute:(NSDictionary *) routeInfo optimizedBy:(
OORouteType) optimizeBy zoom: (
OOScalar) zoom
2482 GLfloat lr,lg,lb,la,lr2,lg2,lb2,la2;
2485 NSPoint star = NSZeroPoint,
2486 star2 = NSZeroPoint,
2487 starabs = NSZeroPoint,
2488 star2abs = NSZeroPoint;
2502 NSInteger concealment[256];
2503 for (NSUInteger i=0;i<256;i++) {
2505 concealment[i] = [systemInfo oo_intForKey:@"concealment" defaultValue:OO_SYSTEMCONCEALMENT_NONE];
2526 star.x = (float)(starabs.x * hscale);
2527 star.y = (float)(starabs.y * vscale);
2550 star2.x = (float)(star2abs.x * hscale);
2551 star2.y = (float)(star2abs.y * vscale);
2556 OOGL(glColor4f(lr, lg, lb, la*alpha));
2557 glVertex3f(
x+star.x,
y+star.y, z);
2559 float frac = (d/jumpRange);
2561 OOLerp(lr,lr2,frac),
2562 OOLerp(lg,lg2,frac),
2563 OOLerp(lb,lb2,frac),
2566 glVertex3f(
x+star2.x,
y+star2.y, z);
2573 if (thisConnectionColor ==
nil)
2575 thisConnectionColor = defaultConnectionColor;
2578 OOGL(glColor4f(lr, lg, lb, la*alpha));
2580 glVertex3f(
x+star.x,
y+star.y, z);
2585 if (thatConnectionColor ==
nil)
2587 thatConnectionColor = thisConnectionColor;
2590 OOGL(glColor4f(lr, lg, lb, la*alpha));
2592 glVertex3f(
x+star2.x,
y+star2.y, z);
2606 NSUInteger i, route_hops = [[routeInfo oo_arrayForKey:@"route"] count] - 1;
2611 [
self setGLColorFromSetting:kGuiChartRouteShortColor defaultValue:[
OOColor yellowColor] alpha:alpha];
2616 [
self setGLColorFromSetting:kGuiChartRouteQuickColor defaultValue:[
OOColor cyanColor] alpha:alpha];
2619 for (i = 0; i < route_hops; i++)
2621 loc = [[routeInfo objectForKey:@"route"] oo_intAtIndex:i];
2625 star.x = (float)(starabs.x * hscale);
2626 star.y = (float)(starabs.y * vscale);
2628 star2.x = (float)(star2abs.x * hscale);
2629 star2.y = (float)(star2abs.y * vscale);
2633 glVertex3f(
x+star.x,
y+star.y, z);
2634 glVertex3f(
x+star2.x,
y+star2.y, z);
2646 loc = [[routeInfo objectForKey:@"route"] oo_intAtIndex:i];